diff options
author | benwells@chromium.org <benwells@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-09 17:34:20 +0000 |
---|---|---|
committer | benwells@chromium.org <benwells@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-09 17:34:20 +0000 |
commit | 38427a15feef46643bd5d85f56a6885fa2b7a976 (patch) | |
tree | 390eea7de7cfe3759c5fcc2170599ff2142c6a8d | |
parent | 56c953af6bb2be5fcc2eac19a0f227ca7ed594e0 (diff) | |
download | chromium_src-38427a15feef46643bd5d85f56a6885fa2b7a976.zip chromium_src-38427a15feef46643bd5d85f56a6885fa2b7a976.tar.gz chromium_src-38427a15feef46643bd5d85f56a6885fa2b7a976.tar.bz2 |
Moved ExtensionInfoMap and ExtensionsQuotaService to extensions/
In the move these classes became extensions::InfoMap and
extensions::QuotaService.
TBR=sky
BUG=162530
Review URL: https://codereview.chromium.org/63933003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@234131 0039d316-1c4b-4281-b951-d872f2087c98
58 files changed, 397 insertions, 394 deletions
diff --git a/chrome/browser/apps/app_url_redirector.cc b/chrome/browser/apps/app_url_redirector.cc index d973fdd..b50eea5 100644 --- a/chrome/browser/apps/app_url_redirector.cc +++ b/chrome/browser/apps/app_url_redirector.cc @@ -7,7 +7,6 @@ #include "apps/launcher.h" #include "base/bind.h" #include "base/logging.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_io_data.h" #include "chrome/common/extensions/api/url_handlers/url_handlers_parser.h" @@ -20,6 +19,7 @@ #include "content/public/browser/render_view_host.h" #include "content/public/browser/resource_throttle.h" #include "content/public/browser/web_contents.h" +#include "extensions/browser/info_map.h" #include "net/url_request/url_request.h" using content::BrowserThread; diff --git a/chrome/browser/apps/ephemeral_app_throttle.cc b/chrome/browser/apps/ephemeral_app_throttle.cc index f74cfa4..9787b1b 100644 --- a/chrome/browser/apps/ephemeral_app_throttle.cc +++ b/chrome/browser/apps/ephemeral_app_throttle.cc @@ -5,7 +5,6 @@ #include "chrome/browser/apps/ephemeral_app_throttle.h" #include "base/command_line.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/webstore_ephemeral_installer.h" diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc index 3eca225..4f1ee2f 100644 --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc @@ -35,7 +35,6 @@ #include "chrome/browser/extensions/api/web_request/web_request_api.h" #include "chrome/browser/extensions/browser_permissions_policy_delegate.h" #include "chrome/browser/extensions/extension_host.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" @@ -127,6 +126,7 @@ #include "content/public/common/child_process_host.h" #include "content/public/common/content_descriptors.h" #include "content/public/common/url_utils.h" +#include "extensions/browser/info_map.h" #include "extensions/browser/view_type_utils.h" #include "extensions/common/constants.h" #include "extensions/common/manifest_handlers/background_info.h" @@ -251,6 +251,7 @@ using content::SiteInstance; using content::WebContents; using extensions::APIPermission; using extensions::Extension; +using extensions::InfoMap; using extensions::Manifest; using message_center::NotifierId; @@ -1267,8 +1268,9 @@ void ChromeContentBrowserClient::SiteInstanceGotProcess( if (signin_manager) signin_manager->SetSigninProcess(site_instance->GetProcess()->GetID()); BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&ExtensionInfoMap::SetSigninProcess, + BrowserThread::IO, + FROM_HERE, + base::Bind(&InfoMap::SetSigninProcess, extensions::ExtensionSystem::Get(profile)->info_map(), site_instance->GetProcess()->GetID())); } @@ -1288,8 +1290,9 @@ void ChromeContentBrowserClient::SiteInstanceGotProcess( site_instance->GetProcess()->GetID(), site_instance->GetId()); BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&ExtensionInfoMap::RegisterExtensionProcess, + BrowserThread::IO, + FROM_HERE, + base::Bind(&InfoMap::RegisterExtensionProcess, extensions::ExtensionSystem::Get(profile)->info_map(), extension->id(), site_instance->GetProcess()->GetID(), @@ -1317,8 +1320,9 @@ void ChromeContentBrowserClient::SiteInstanceDeleting( site_instance->GetProcess()->GetID(), site_instance->GetId()); BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&ExtensionInfoMap::UnregisterExtensionProcess, + BrowserThread::IO, + FROM_HERE, + base::Bind(&InfoMap::UnregisterExtensionProcess, extensions::ExtensionSystem::Get(profile)->info_map(), extension->id(), site_instance->GetProcess()->GetID(), @@ -1893,7 +1897,7 @@ void ChromeContentBrowserClient::RequestDesktopNotificationPermission( // extension has the 'notify' permission. (If the extension does not have the // permission, the user will still be prompted.) Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); - ExtensionInfoMap* extension_info_map = + InfoMap* extension_info_map = extensions::ExtensionSystem::Get(profile)->info_map(); DesktopNotificationService* notification_service = DesktopNotificationServiceFactory::GetForProfile(profile); @@ -1945,7 +1949,7 @@ blink::WebNotificationPresenter::Permission DesktopNotificationService* notification_service = io_data->GetNotificationService(); if (notification_service) { - ExtensionInfoMap* extension_info_map = io_data->GetExtensionInfoMap(); + InfoMap* extension_info_map = io_data->GetExtensionInfoMap(); ExtensionSet extensions; extension_info_map->GetExtensionsWithAPIPermissionForSecurityOrigin( source_origin, render_process_id, @@ -2036,7 +2040,7 @@ bool ChromeContentBrowserClient::CanCreateWindow( *no_javascript_access = false; ProfileIOData* io_data = ProfileIOData::FromResourceContext(context); - ExtensionInfoMap* map = io_data->GetExtensionInfoMap(); + InfoMap* map = io_data->GetExtensionInfoMap(); // If the opener is trying to create a background window but doesn't have // the appropriate permission, fail the attempt. diff --git a/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc b/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc index 25a5d7f..f946556 100644 --- a/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc +++ b/chrome/browser/extensions/api/bookmarks/bookmarks_api.cc @@ -30,7 +30,6 @@ #include "chrome/browser/extensions/event_router.h" #include "chrome/browser/extensions/extension_function_dispatcher.h" #include "chrome/browser/extensions/extension_system.h" -#include "chrome/browser/extensions/extensions_quota_service.h" #include "chrome/browser/importer/external_process_importer_host.h" #include "chrome/browser/importer/importer_uma.h" #include "chrome/browser/platform_util.h" @@ -45,6 +44,7 @@ #include "content/public/browser/notification_service.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents_view.h" +#include "extensions/browser/quota_service.h" #include "grit/generated_resources.h" #include "ui/base/l10n/l10n_util.h" @@ -65,8 +65,8 @@ using content::WebContents; typedef QuotaLimitHeuristic::Bucket Bucket; typedef QuotaLimitHeuristic::Config Config; typedef QuotaLimitHeuristic::BucketList BucketList; -typedef ExtensionsQuotaService::TimedLimit TimedLimit; -typedef ExtensionsQuotaService::SustainedLimit SustainedLimit; +typedef QuotaService::TimedLimit TimedLimit; +typedef QuotaService::SustainedLimit SustainedLimit; typedef QuotaLimitHeuristic::BucketMapper BucketMapper; namespace { diff --git a/chrome/browser/extensions/api/declarative/rules_cache_delegate.cc b/chrome/browser/extensions/api/declarative/rules_cache_delegate.cc index 0022d78..6254a41 100644 --- a/chrome/browser/extensions/api/declarative/rules_cache_delegate.cc +++ b/chrome/browser/extensions/api/declarative/rules_cache_delegate.cc @@ -6,7 +6,6 @@ #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/extensions/api/declarative/rules_registry.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/extension_util.h" @@ -14,6 +13,7 @@ #include "chrome/browser/profiles/profile.h" #include "content/public/browser/notification_details.h" #include "content/public/browser/notification_source.h" +#include "extensions/browser/info_map.h" namespace { @@ -127,8 +127,7 @@ void RulesCacheDelegate::Observe( // declarative rules, not just webRequest. if (extension->HasAPIPermission(APIPermission::kDeclarativeContent) || extension->HasAPIPermission(APIPermission::kDeclarativeWebRequest)) { - ExtensionInfoMap* extension_info_map = - ExtensionSystem::Get(profile_)->info_map(); + InfoMap* extension_info_map = ExtensionSystem::Get(profile_)->info_map(); if (profile_->IsOffTheRecord() && !extension_info_map->IsIncognitoEnabled(extension->id())) { // Ignore this extension. diff --git a/chrome/browser/extensions/api/declarative/rules_registry.cc b/chrome/browser/extensions/api/declarative/rules_registry.cc index 12f1d3c..2f6c2fb 100644 --- a/chrome/browser/extensions/api/declarative/rules_registry.cc +++ b/chrome/browser/extensions/api/declarative/rules_registry.cc @@ -13,7 +13,6 @@ #include "base/values.h" #include "chrome/browser/chrome_notification_types.h" #include "chrome/browser/extensions/api/declarative/rules_cache_delegate.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_prefs.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" diff --git a/chrome/browser/extensions/api/declarative_content/content_rules_registry.h b/chrome/browser/extensions/api/declarative_content/content_rules_registry.h index c3f62f2..c752ebb 100644 --- a/chrome/browser/extensions/api/declarative_content/content_rules_registry.h +++ b/chrome/browser/extensions/api/declarative_content/content_rules_registry.h @@ -18,9 +18,9 @@ #include "chrome/browser/extensions/api/declarative/rules_registry.h" #include "chrome/browser/extensions/api/declarative_content/content_action.h" #include "chrome/browser/extensions/api/declarative_content/content_condition.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_registrar.h" +#include "extensions/browser/info_map.h" #include "extensions/common/matcher/url_matcher.h" class Profile; @@ -139,7 +139,7 @@ class ContentRulesRegistry : public RulesRegistry, // Manages our notification registrations. content::NotificationRegistrar registrar_; - scoped_refptr<ExtensionInfoMap> extension_info_map_; + scoped_refptr<InfoMap> extension_info_map_; DISALLOW_COPY_AND_ASSIGN(ContentRulesRegistry); }; diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc index 4da726e..14c2c8e 100644 --- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc +++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc @@ -17,9 +17,9 @@ #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_constants.h" #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" #include "chrome/browser/extensions/api/web_request/web_request_permissions.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/common/extensions/extension.h" #include "content/public/common/url_constants.h" +#include "extensions/browser/info_map.h" #include "net/base/registry_controlled_domains/registry_controlled_domain.h" #include "net/url_request/url_request.h" #include "third_party/re2/re2/re2.h" @@ -436,7 +436,7 @@ bool WebRequestAction::Equals(const WebRequestAction* other) const { return type() == other->type(); } -bool WebRequestAction::HasPermission(const ExtensionInfoMap* extension_info_map, +bool WebRequestAction::HasPermission(const InfoMap* extension_info_map, const std::string& extension_id, const net::URLRequest* request, bool crosses_incognito) const { diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h index 07fa95c..5deef02 100644 --- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h +++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h @@ -18,7 +18,6 @@ #include "chrome/common/extensions/api/events.h" #include "url/gurl.h" -class ExtensionInfoMap; class WebRequestPermission; namespace base { @@ -33,6 +32,7 @@ struct EventResponseDelta; namespace extensions { class Extension; +class InfoMap; struct WebRequestData; } @@ -83,7 +83,7 @@ class WebRequestAction : public base::RefCounted<WebRequestAction> { // Information necessary to decide how to apply a WebRequestAction // inside a matching rule. struct ApplyInfo { - const ExtensionInfoMap* extension_info_map; + const InfoMap* extension_info_map; const WebRequestData& request_data; bool crosses_incognito; // Modified by each applied action: @@ -122,7 +122,7 @@ class WebRequestAction : public base::RefCounted<WebRequestAction> { // host permissions are ignored. |crosses_incognito| specifies // whether the request comes from a different profile than |extension_id| // but was processed because the extension is in spanning mode. - virtual bool HasPermission(const ExtensionInfoMap* extension_info_map, + virtual bool HasPermission(const InfoMap* extension_info_map, const std::string& extension_id, const net::URLRequest* request, bool crosses_incognito) const; diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc index d54053b..ab6ec9a 100644 --- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc +++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action_unittest.cc @@ -17,12 +17,12 @@ #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condition.h" #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_constants.h" #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_constants.h" #include "chrome/common/extensions/extension_test_util.h" #include "content/public/test/test_browser_thread_bundle.h" +#include "extensions/browser/info_map.h" #include "net/base/request_priority.h" #include "net/http/http_response_headers.h" #include "net/url_request/url_request_test_util.h" @@ -97,7 +97,7 @@ class WebRequestActionWithThreadsTest : public testing::Test { scoped_refptr<Extension> extension_; // An extension with host permissions for all URLs and the DWR permission. scoped_refptr<Extension> extension_all_urls_; - scoped_refptr<ExtensionInfoMap> extension_info_map_; + scoped_refptr<InfoMap> extension_info_map_; private: content::TestBrowserThreadBundle thread_bundle_; @@ -122,7 +122,7 @@ void WebRequestActionWithThreadsTest::SetUp() { "ext_id_2", &error); ASSERT_TRUE(extension_all_urls_.get()) << error; - extension_info_map_ = new ExtensionInfoMap; + extension_info_map_ = new InfoMap; ASSERT_TRUE(extension_info_map_.get()); extension_info_map_->AddExtension( extension_.get(), base::Time::Now(), false /*incognito_enabled*/); diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.cc index be0010b..d9a9407 100644 --- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.cc +++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.cc @@ -73,7 +73,7 @@ std::set<const WebRequestRule*> WebRequestRulesRegistry::GetMatches( } std::list<LinkedPtrEventResponseDelta> WebRequestRulesRegistry::CreateDeltas( - const ExtensionInfoMap* extension_info_map, + const InfoMap* extension_info_map, const WebRequestData& request_data, bool crosses_incognito) { if (webrequest_rules_.empty()) diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.h b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.h index 7c8f3b1..336c484 100644 --- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.h +++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry.h @@ -21,7 +21,7 @@ #include "chrome/browser/extensions/api/declarative_webrequest/request_stage.h" #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h" #include "chrome/browser/extensions/api/declarative_webrequest/webrequest_condition.h" -#include "chrome/browser/extensions/extension_info_map.h" +#include "extensions/browser/info_map.h" #include "extensions/common/matcher/url_matcher.h" class Profile; @@ -86,7 +86,7 @@ class WebRequestRulesRegistry : public RulesRegistry { // Returns which modifications should be executed on the network request // according to the rules registered in this registry. std::list<LinkedPtrEventResponseDelta> CreateDeltas( - const ExtensionInfoMap* extension_info_map, + const InfoMap* extension_info_map, const WebRequestData& request_data, bool crosses_incognito); @@ -112,7 +112,7 @@ class WebRequestRulesRegistry : public RulesRegistry { virtual void ClearCacheOnNavigation(); void SetExtensionInfoMapForTesting( - scoped_refptr<ExtensionInfoMap> extension_info_map) { + scoped_refptr<InfoMap> extension_info_map) { extension_info_map_ = extension_info_map; } @@ -182,7 +182,7 @@ class WebRequestRulesRegistry : public RulesRegistry { URLMatcher url_matcher_; void* profile_id_; - scoped_refptr<ExtensionInfoMap> extension_info_map_; + scoped_refptr<InfoMap> extension_info_map_; DISALLOW_COPY_AND_ASSIGN(WebRequestRulesRegistry); }; diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc index f36d1f9..31f5b1f 100644 --- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc +++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_rules_registry_unittest.cc @@ -49,7 +49,7 @@ namespace keys2 = url_matcher_constants; class TestWebRequestRulesRegistry : public WebRequestRulesRegistry { public: explicit TestWebRequestRulesRegistry( - scoped_refptr<ExtensionInfoMap> extension_info_map) + scoped_refptr<InfoMap> extension_info_map) : WebRequestRulesRegistry(NULL /*profile*/, NULL /* cache_delegate */), num_clear_cache_calls_(0) { SetExtensionInfoMapForTesting(extension_info_map); @@ -229,7 +229,7 @@ class WebRequestRulesRegistryTest : public testing::Test { // |extension2_|. scoped_refptr<Extension> extension_; scoped_refptr<Extension> extension2_; - scoped_refptr<ExtensionInfoMap> extension_info_map_; + scoped_refptr<InfoMap> extension_info_map_; }; void WebRequestRulesRegistryTest::SetUp() { @@ -250,7 +250,7 @@ void WebRequestRulesRegistryTest::SetUp() { kExtensionId2, &error); ASSERT_TRUE(extension2_.get()) << error; - extension_info_map_ = new ExtensionInfoMap; + extension_info_map_ = new InfoMap; ASSERT_TRUE(extension_info_map_.get()); extension_info_map_->AddExtension(extension_.get(), base::Time() + base::TimeDelta::FromDays(1), diff --git a/chrome/browser/extensions/api/downloads/downloads_api.cc b/chrome/browser/extensions/api/downloads/downloads_api.cc index 4544f58..53837be 100644 --- a/chrome/browser/extensions/api/downloads/downloads_api.cc +++ b/chrome/browser/extensions/api/downloads/downloads_api.cc @@ -40,7 +40,6 @@ #include "chrome/browser/download/drag_download_item.h" #include "chrome/browser/extensions/event_router.h" #include "chrome/browser/extensions/extension_function_dispatcher.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_prefs.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" diff --git a/chrome/browser/extensions/api/storage/storage_api.cc b/chrome/browser/extensions/api/storage/storage_api.cc index e562d91..1d6b361 100644 --- a/chrome/browser/extensions/api/storage/storage_api.cc +++ b/chrome/browser/extensions/api/storage/storage_api.cc @@ -12,10 +12,10 @@ #include "base/values.h" #include "chrome/browser/extensions/api/storage/settings_frontend.h" #include "chrome/browser/extensions/extension_service.h" -#include "chrome/browser/extensions/extensions_quota_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/extensions/api/storage.h" #include "content/public/browser/browser_thread.h" +#include "extensions/browser/quota_service.h" namespace extensions { @@ -135,11 +135,10 @@ void GetModificationQuotaLimitHeuristics(QuotaLimitHeuristics* heuristics) { api::storage::sync::MAX_WRITE_OPERATIONS_PER_HOUR, base::TimeDelta::FromHours(1) }; - heuristics->push_back( - new ExtensionsQuotaService::TimedLimit( - longLimitConfig, - new QuotaLimitHeuristic::SingletonBucketMapper(), - "MAX_WRITE_OPERATIONS_PER_HOUR")); + heuristics->push_back(new QuotaService::TimedLimit( + longLimitConfig, + new QuotaLimitHeuristic::SingletonBucketMapper(), + "MAX_WRITE_OPERATIONS_PER_HOUR")); // A max of 10 operations per minute, sustained over 10 minutes. QuotaLimitHeuristic::Config shortLimitConfig = { @@ -147,12 +146,11 @@ void GetModificationQuotaLimitHeuristics(QuotaLimitHeuristics* heuristics) { api::storage::sync::MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE, base::TimeDelta::FromMinutes(1) }; - heuristics->push_back( - new ExtensionsQuotaService::SustainedLimit( - base::TimeDelta::FromMinutes(10), - shortLimitConfig, - new QuotaLimitHeuristic::SingletonBucketMapper(), - "MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE")); + heuristics->push_back(new QuotaService::SustainedLimit( + base::TimeDelta::FromMinutes(10), + shortLimitConfig, + new QuotaLimitHeuristic::SingletonBucketMapper(), + "MAX_SUSTAINED_WRITE_OPERATIONS_PER_MINUTE")); }; } // namespace diff --git a/chrome/browser/extensions/api/streams_private/streams_private_apitest.cc b/chrome/browser/extensions/api/streams_private/streams_private_apitest.cc index 0e99edc..723793a 100644 --- a/chrome/browser/extensions/api/streams_private/streams_private_apitest.cc +++ b/chrome/browser/extensions/api/streams_private/streams_private_apitest.cc @@ -8,7 +8,6 @@ #include "chrome/browser/download/download_prefs.h" #include "chrome/browser/extensions/event_router.h" #include "chrome/browser/extensions/extension_apitest.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser.h" diff --git a/chrome/browser/extensions/api/test/test_api.cc b/chrome/browser/extensions/api/test/test_api.cc index 5a4f485..fb76002 100644 --- a/chrome/browser/extensions/api/test/test_api.cc +++ b/chrome/browser/extensions/api/test/test_api.cc @@ -9,14 +9,14 @@ #include "base/command_line.h" #include "base/memory/singleton.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_function_dispatcher.h" -#include "chrome/browser/extensions/extensions_quota_service.h" +#include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/browser_commands.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/extensions/api/test.h" #include "content/public/browser/notification_service.h" +#include "extensions/browser/quota_service.h" namespace { @@ -84,7 +84,7 @@ TestResetQuotaFunction::~TestResetQuotaFunction() {} bool TestResetQuotaFunction::RunImpl() { ExtensionService* service = GetProfile()->GetExtensionService(); - ExtensionsQuotaService* quota = service->quota_service(); + QuotaService* quota = service->quota_service(); quota->Purge(); quota->violation_errors_.clear(); return true; diff --git a/chrome/browser/extensions/api/web_request/web_request_api.cc b/chrome/browser/extensions/api/web_request/web_request_api.cc index d10d681..4d74cfe 100644 --- a/chrome/browser/extensions/api/web_request/web_request_api.cc +++ b/chrome/browser/extensions/api/web_request/web_request_api.cc @@ -30,7 +30,6 @@ #include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h" #include "chrome/browser/extensions/api/web_request/web_request_time_tracker.h" #include "chrome/browser/extensions/event_router.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_prefs.h" #include "chrome/browser/extensions/extension_renderer_state.h" #include "chrome/browser/extensions/extension_service.h" @@ -51,6 +50,7 @@ #include "content/public/browser/render_process_host.h" #include "content/public/browser/resource_request_info.h" #include "content/public/browser/user_metrics.h" +#include "extensions/browser/info_map.h" #include "extensions/common/error_utils.h" #include "extensions/common/event_filtering_info.h" #include "extensions/common/features/feature.h" @@ -76,6 +76,7 @@ using extensions::Extension; using extensions::ExtensionWarning; using extensions::ExtensionWarningService; using extensions::ExtensionWarningSet; +using extensions::InfoMap; using extensions::Feature; using extensions::web_navigation_api_helpers::GetFrameId; @@ -144,7 +145,7 @@ bool IsWebRequestEvent(const std::string& event_name) { // Returns whether |request| has been triggered by an extension in // |extension_info_map|. bool IsRequestFromExtension(const net::URLRequest* request, - const ExtensionInfoMap* extension_info_map) { + const InfoMap* extension_info_map) { // |extension_info_map| is NULL for system-level requests. if (!extension_info_map) return false; @@ -469,7 +470,7 @@ struct ExtensionWebRequestEventRouter::BlockedRequest { // Provider of meta data about extensions, only used and non-NULL for events // that are delayed until the rules registry is ready. - ExtensionInfoMap* extension_info_map; + InfoMap* extension_info_map; BlockedRequest() : request(NULL), @@ -608,7 +609,7 @@ void ExtensionWebRequestEventRouter::RegisterRulesRegistry( int ExtensionWebRequestEventRouter::OnBeforeRequest( void* profile, - ExtensionInfoMap* extension_info_map, + InfoMap* extension_info_map, net::URLRequest* request, const net::CompletionCallback& callback, GURL* new_url) { @@ -674,7 +675,7 @@ int ExtensionWebRequestEventRouter::OnBeforeRequest( int ExtensionWebRequestEventRouter::OnBeforeSendHeaders( void* profile, - ExtensionInfoMap* extension_info_map, + InfoMap* extension_info_map, net::URLRequest* request, const net::CompletionCallback& callback, net::HttpRequestHeaders* headers) { @@ -731,7 +732,7 @@ int ExtensionWebRequestEventRouter::OnBeforeSendHeaders( void ExtensionWebRequestEventRouter::OnSendHeaders( void* profile, - ExtensionInfoMap* extension_info_map, + InfoMap* extension_info_map, net::URLRequest* request, const net::HttpRequestHeaders& headers) { // We hide events from the system context as well as sensitive requests. @@ -764,7 +765,7 @@ void ExtensionWebRequestEventRouter::OnSendHeaders( int ExtensionWebRequestEventRouter::OnHeadersReceived( void* profile, - ExtensionInfoMap* extension_info_map, + InfoMap* extension_info_map, net::URLRequest* request, const net::CompletionCallback& callback, const net::HttpResponseHeaders* original_response_headers, @@ -832,7 +833,7 @@ int ExtensionWebRequestEventRouter::OnHeadersReceived( net::NetworkDelegate::AuthRequiredResponse ExtensionWebRequestEventRouter::OnAuthRequired( void* profile, - ExtensionInfoMap* extension_info_map, + InfoMap* extension_info_map, net::URLRequest* request, const net::AuthChallengeInfo& auth_info, const net::NetworkDelegate::AuthCallback& callback, @@ -885,7 +886,7 @@ ExtensionWebRequestEventRouter::OnAuthRequired( void ExtensionWebRequestEventRouter::OnBeforeRedirect( void* profile, - ExtensionInfoMap* extension_info_map, + InfoMap* extension_info_map, net::URLRequest* request, const GURL& new_location) { // We hide events from the system context as well as sensitive requests. @@ -933,7 +934,7 @@ void ExtensionWebRequestEventRouter::OnBeforeRedirect( void ExtensionWebRequestEventRouter::OnResponseStarted( void* profile, - ExtensionInfoMap* extension_info_map, + InfoMap* extension_info_map, net::URLRequest* request) { // We hide events from the system context as well as sensitive requests. if (!profile || @@ -976,10 +977,9 @@ void ExtensionWebRequestEventRouter::OnResponseStarted( DispatchEvent(profile, request, listeners, args); } -void ExtensionWebRequestEventRouter::OnCompleted( - void* profile, - ExtensionInfoMap* extension_info_map, - net::URLRequest* request) { +void ExtensionWebRequestEventRouter::OnCompleted(void* profile, + InfoMap* extension_info_map, + net::URLRequest* request) { // We hide events from the system context as well as sensitive requests. // However, if the request first became sensitive after redirecting we have // already signaled it and thus we have to signal the end of it. This is @@ -1031,7 +1031,7 @@ void ExtensionWebRequestEventRouter::OnCompleted( void ExtensionWebRequestEventRouter::OnErrorOccurred( void* profile, - ExtensionInfoMap* extension_info_map, + InfoMap* extension_info_map, net::URLRequest* request, bool started) { // We hide events from the system context as well as sensitive requests. @@ -1344,7 +1344,7 @@ bool ExtensionWebRequestEventRouter::WasSignaled( void ExtensionWebRequestEventRouter::GetMatchingListenersImpl( void* profile, - ExtensionInfoMap* extension_info_map, + InfoMap* extension_info_map, bool crosses_incognito, const std::string& event_name, const GURL& url, @@ -1421,7 +1421,7 @@ void ExtensionWebRequestEventRouter::GetMatchingListenersImpl( std::vector<const ExtensionWebRequestEventRouter::EventListener*> ExtensionWebRequestEventRouter::GetMatchingListeners( void* profile, - ExtensionInfoMap* extension_info_map, + InfoMap* extension_info_map, const std::string& event_name, net::URLRequest* request, int* extra_info_spec) { @@ -1849,7 +1849,7 @@ int ExtensionWebRequestEventRouter::ExecuteDeltas( bool ExtensionWebRequestEventRouter::ProcessDeclarativeRules( void* profile, - ExtensionInfoMap* extension_info_map, + InfoMap* extension_info_map, const std::string& event_name, net::URLRequest* request, extensions::RequestStage request_stage, @@ -1999,7 +1999,7 @@ void ExtensionWebRequestEventRouter::ClearSignaled(uint64 request_id, // webRequest.handlerBehaviorChanged() should trigger a quota violation at the // time it is called. Instead we only decrement the bucket counter at the time // when the cache is cleared (when page loads happen). -class ClearCacheQuotaHeuristic : public QuotaLimitHeuristic { +class ClearCacheQuotaHeuristic : public extensions::QuotaLimitHeuristic { public: ClearCacheQuotaHeuristic(const Config& config, BucketMapper* map) : QuotaLimitHeuristic( @@ -2245,14 +2245,13 @@ bool WebRequestEventHandled::RunImpl() { } void WebRequestHandlerBehaviorChangedFunction::GetQuotaLimitHeuristics( - QuotaLimitHeuristics* heuristics) const { - QuotaLimitHeuristic::Config config = { - // See web_request.json for current value. - web_request::MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES, - base::TimeDelta::FromMinutes(10) - }; - QuotaLimitHeuristic::BucketMapper* bucket_mapper = - new QuotaLimitHeuristic::SingletonBucketMapper(); + extensions::QuotaLimitHeuristics* heuristics) const { + extensions::QuotaLimitHeuristic::Config config = { + // See web_request.json for current value. + web_request::MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES, + base::TimeDelta::FromMinutes(10)}; + extensions::QuotaLimitHeuristic::BucketMapper* bucket_mapper = + new extensions::QuotaLimitHeuristic::SingletonBucketMapper(); ClearCacheQuotaHeuristic* heuristic = new ClearCacheQuotaHeuristic(config, bucket_mapper); heuristics->push_back(heuristic); diff --git a/chrome/browser/extensions/api/web_request/web_request_api.h b/chrome/browser/extensions/api/web_request/web_request_api.h index 15c985b..a68e0fb 100644 --- a/chrome/browser/extensions/api/web_request/web_request_api.h +++ b/chrome/browser/extensions/api/web_request/web_request_api.h @@ -27,7 +27,6 @@ #include "net/http/http_request_headers.h" #include "webkit/common/resource_type.h" -class ExtensionInfoMap; class ExtensionWebRequestTimeTracker; class GURL; @@ -42,6 +41,7 @@ class RenderProcessHost; } namespace extensions { +class InfoMap; class WebRequestRulesRegistry; } @@ -145,7 +145,7 @@ class ExtensionWebRequestEventRouter // the given request. Returns net::ERR_IO_PENDING if an extension is // intercepting the request, OK otherwise. int OnBeforeRequest(void* profile, - ExtensionInfoMap* extension_info_map, + extensions::InfoMap* extension_info_map, net::URLRequest* request, const net::CompletionCallback& callback, GURL* new_url); @@ -155,7 +155,7 @@ class ExtensionWebRequestEventRouter // Returns net::ERR_IO_PENDING if an extension is intercepting the request, OK // otherwise. int OnBeforeSendHeaders(void* profile, - ExtensionInfoMap* extension_info_map, + extensions::InfoMap* extension_info_map, net::URLRequest* request, const net::CompletionCallback& callback, net::HttpRequestHeaders* headers); @@ -163,7 +163,7 @@ class ExtensionWebRequestEventRouter // Dispatches the onSendHeaders event. This is fired for HTTP(s) requests // only. void OnSendHeaders(void* profile, - ExtensionInfoMap* extension_info_map, + extensions::InfoMap* extension_info_map, net::URLRequest* request, const net::HttpRequestHeaders& headers); @@ -178,7 +178,7 @@ class ExtensionWebRequestEventRouter // into |override_response_headers|. int OnHeadersReceived( void* profile, - ExtensionInfoMap* extension_info_map, + extensions::InfoMap* extension_info_map, net::URLRequest* request, const net::CompletionCallback& callback, const net::HttpResponseHeaders* original_response_headers, @@ -190,36 +190,36 @@ class ExtensionWebRequestEventRouter // AUTH_REQUIRED_RESPONSE_IO_PENDING is returned and |callback| will be // invoked later. net::NetworkDelegate::AuthRequiredResponse OnAuthRequired( - void* profile, - ExtensionInfoMap* extension_info_map, - net::URLRequest* request, - const net::AuthChallengeInfo& auth_info, - const net::NetworkDelegate::AuthCallback& callback, - net::AuthCredentials* credentials); + void* profile, + extensions::InfoMap* extension_info_map, + net::URLRequest* request, + const net::AuthChallengeInfo& auth_info, + const net::NetworkDelegate::AuthCallback& callback, + net::AuthCredentials* credentials); // Dispatches the onBeforeRedirect event. This is fired for HTTP(s) requests // only. void OnBeforeRedirect(void* profile, - ExtensionInfoMap* extension_info_map, + extensions::InfoMap* extension_info_map, net::URLRequest* request, const GURL& new_location); // Dispatches the onResponseStarted event indicating that the first bytes of // the response have arrived. void OnResponseStarted(void* profile, - ExtensionInfoMap* extension_info_map, + extensions::InfoMap* extension_info_map, net::URLRequest* request); // Dispatches the onComplete event. void OnCompleted(void* profile, - ExtensionInfoMap* extension_info_map, + extensions::InfoMap* extension_info_map, net::URLRequest* request); // Dispatches an onErrorOccurred event. void OnErrorOccurred(void* profile, - ExtensionInfoMap* extension_info_map, - net::URLRequest* request, - bool started); + extensions::InfoMap* extension_info_map, + net::URLRequest* request, + bool started); // Notifications when objects are going away. void OnURLRequestDestroyed(void* profile, net::URLRequest* request); @@ -304,7 +304,7 @@ class ExtensionWebRequestEventRouter // set of extra_info_spec flags that every matching listener asked for. std::vector<const EventListener*> GetMatchingListeners( void* profile, - ExtensionInfoMap* extension_info_map, + extensions::InfoMap* extension_info_map, const std::string& event_name, net::URLRequest* request, int* extra_info_spec); @@ -314,7 +314,7 @@ class ExtensionWebRequestEventRouter // profile if the event is originally for the normal profile, or vice versa). void GetMatchingListenersImpl( void* profile, - ExtensionInfoMap* extension_info_map, + extensions::InfoMap* extension_info_map, bool crosses_incognito, const std::string& event_name, const GURL& url, @@ -356,7 +356,7 @@ class ExtensionWebRequestEventRouter // deltas were generated. bool ProcessDeclarativeRules( void* profile, - ExtensionInfoMap* extension_info_map, + extensions::InfoMap* extension_info_map, const std::string& event_name, net::URLRequest* request, extensions::RequestStage request_stage, @@ -464,7 +464,7 @@ class WebRequestHandlerBehaviorChangedFunction // ExtensionFunction: virtual void GetQuotaLimitHeuristics( - QuotaLimitHeuristics* heuristics) const OVERRIDE; + extensions::QuotaLimitHeuristics* heuristics) const OVERRIDE; // Handle quota exceeded gracefully: Only warn the user but still execute the // function. virtual void OnQuotaExceeded(const std::string& error) OVERRIDE; diff --git a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc index b563564..cb672ba 100644 --- a/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc +++ b/chrome/browser/extensions/api/web_request/web_request_api_unittest.cc @@ -64,7 +64,6 @@ using base::Time; using base::TimeDelta; using base::Value; using chrome::VersionInfo; -using extensions::Feature; using helpers::CalculateOnAuthRequiredDelta; using helpers::CalculateOnBeforeRequestDelta; using helpers::CalculateOnBeforeSendHeadersDelta; @@ -209,7 +208,7 @@ class ExtensionWebRequestTest : public testing::Test { BooleanPrefMember enable_referrers_; TestIPCSender ipc_sender_; scoped_refptr<EventRouterForwarder> event_router_; - scoped_refptr<ExtensionInfoMap> extension_info_map_; + scoped_refptr<InfoMap> extension_info_map_; scoped_ptr<ChromeNetworkDelegate> network_delegate_; scoped_ptr<net::TestURLRequestContext> context_; }; @@ -803,7 +802,7 @@ class ExtensionWebRequestHeaderModificationTest BooleanPrefMember enable_referrers_; TestIPCSender ipc_sender_; scoped_refptr<EventRouterForwarder> event_router_; - scoped_refptr<ExtensionInfoMap> extension_info_map_; + scoped_refptr<InfoMap> extension_info_map_; scoped_ptr<ChromeNetworkDelegate> network_delegate_; scoped_ptr<net::MockHostResolver> host_resolver_; scoped_ptr<net::TestURLRequestContext> context_; diff --git a/chrome/browser/extensions/api/web_request/web_request_permissions.cc b/chrome/browser/extensions/api/web_request/web_request_permissions.cc index d483ce5..93430fb 100644 --- a/chrome/browser/extensions/api/web_request/web_request_permissions.cc +++ b/chrome/browser/extensions/api/web_request/web_request_permissions.cc @@ -6,13 +6,13 @@ #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_renderer_state.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_constants.h" #include "chrome/common/extensions/permissions/permissions_data.h" #include "chrome/common/url_constants.h" #include "content/public/browser/resource_request_info.h" +#include "extensions/browser/info_map.h" #include "extensions/common/constants.h" #include "net/url_request/url_request.h" #include "url/gurl.h" @@ -79,7 +79,7 @@ bool HasWebRequestScheme(const GURL& url) { // static bool WebRequestPermissions::HideRequest( - const ExtensionInfoMap* extension_info_map, + const extensions::InfoMap* extension_info_map, const net::URLRequest* request) { // Hide requests from the Chrome WebStore App or signin process. const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request); @@ -106,7 +106,7 @@ bool WebRequestPermissions::HideRequest( // static bool WebRequestPermissions::CanExtensionAccessURL( - const ExtensionInfoMap* extension_info_map, + const extensions::InfoMap* extension_info_map, const std::string& extension_id, const GURL& url, bool crosses_incognito, diff --git a/chrome/browser/extensions/api/web_request/web_request_permissions.h b/chrome/browser/extensions/api/web_request/web_request_permissions.h index 6ff0f43..367a3c0 100644 --- a/chrome/browser/extensions/api/web_request/web_request_permissions.h +++ b/chrome/browser/extensions/api/web_request/web_request_permissions.h @@ -10,9 +10,12 @@ #include "base/basictypes.h" -class ExtensionInfoMap; class GURL; +namespace extensions { +class InfoMap; +} + namespace net { class URLRequest; } @@ -28,13 +31,13 @@ class WebRequestPermissions { }; // Returns true if the request shall not be reported to extensions. - static bool HideRequest(const ExtensionInfoMap* extension_info_map, + static bool HideRequest(const extensions::InfoMap* extension_info_map, const net::URLRequest* request); // |host_permission_check| controls how permissions are checked with regard to // |url|. static bool CanExtensionAccessURL( - const ExtensionInfoMap* extension_info_map, + const extensions::InfoMap* extension_info_map, const std::string& extension_id, const GURL& url, bool crosses_incognito, diff --git a/chrome/browser/extensions/api/web_request/web_request_permissions_unittest.cc b/chrome/browser/extensions/api/web_request/web_request_permissions_unittest.cc index a0eb5e7..1157807 100644 --- a/chrome/browser/extensions/api/web_request/web_request_permissions_unittest.cc +++ b/chrome/browser/extensions/api/web_request/web_request_permissions_unittest.cc @@ -5,12 +5,12 @@ #include "chrome/browser/extensions/api/web_request/web_request_permissions.h" #include "base/message_loop/message_loop.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/common/extensions/extension_constants.h" #include "chrome/common/extensions/extension_test_util.h" #include "chrome/test/base/testing_profile.h" #include "content/public/browser/resource_request_info.h" #include "content/public/test/test_browser_thread_bundle.h" +#include "extensions/browser/info_map.h" #include "net/base/request_priority.h" #include "net/url_request/url_request_test_util.h" #include "testing/gtest/include/gtest/gtest.h" @@ -35,7 +35,7 @@ class ExtensionWebRequestHelpersTestWithThreadsTest : public testing::Test { scoped_refptr<Extension> permissionless_extension_; // This extension has Web Request permissions, and *.com a host permission. scoped_refptr<Extension> com_extension_; - scoped_refptr<ExtensionInfoMap> extension_info_map_; + scoped_refptr<extensions::InfoMap> extension_info_map_; private: content::TestBrowserThreadBundle thread_bundle_; @@ -60,7 +60,7 @@ void ExtensionWebRequestHelpersTestWithThreadsTest::SetUp() { "ext_id_2", &error); ASSERT_TRUE(com_extension_.get()) << error; - extension_info_map_ = new ExtensionInfoMap; + extension_info_map_ = new extensions::InfoMap; extension_info_map_->AddExtension(permissionless_extension_.get(), base::Time::Now(), false /*incognito_enabled*/); diff --git a/chrome/browser/extensions/extension_function.h b/chrome/browser/extensions/extension_function.h index 2834823..d461c63 100644 --- a/chrome/browser/extensions/extension_function.h +++ b/chrome/browser/extensions/extension_function.h @@ -16,10 +16,10 @@ #include "base/process/process.h" #include "base/sequenced_task_runner_helpers.h" #include "chrome/browser/extensions/extension_function_histogram_value.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/common/extensions/extension.h" #include "content/public/browser/browser_thread.h" #include "content/public/common/console_message_level.h" +#include "extensions/browser/info_map.h" #include "ipc/ipc_message.h" class ChromeRenderMessageFilter; @@ -27,7 +27,6 @@ class ExtensionFunction; class ExtensionFunctionDispatcher; class UIThreadExtensionFunction; class IOThreadExtensionFunction; -class QuotaLimitHeuristic; namespace base { class ListValue; @@ -40,6 +39,10 @@ class RenderViewHost; class WebContents; } +namespace extensions { +class QuotaLimitHeuristic; +} + #ifdef NDEBUG #define EXTENSION_FUNCTION_VALIDATE(test) do { \ if (!(test)) { \ @@ -127,9 +130,9 @@ class ExtensionFunction // instances is passed to the owner of |heuristics|. // No quota limiting by default. // - // Only called once per lifetime of the ExtensionsQuotaService. + // Only called once per lifetime of the QuotaService. virtual void GetQuotaLimitHeuristics( - QuotaLimitHeuristics* heuristics) const {} + extensions::QuotaLimitHeuristics* heuristics) const {} // Called when the quota limit has been exceeded. The default implementation // returns an error. @@ -367,10 +370,10 @@ class IOThreadExtensionFunction : public ExtensionFunction { int routing_id() const { return routing_id_; } - void set_extension_info_map(const ExtensionInfoMap* extension_info_map) { + void set_extension_info_map(const extensions::InfoMap* extension_info_map) { extension_info_map_ = extension_info_map; } - const ExtensionInfoMap* extension_info_map() const { + const extensions::InfoMap* extension_info_map() const { return extension_info_map_.get(); } @@ -389,7 +392,7 @@ class IOThreadExtensionFunction : public ExtensionFunction { base::WeakPtr<ChromeRenderMessageFilter> ipc_sender_; int routing_id_; - scoped_refptr<const ExtensionInfoMap> extension_info_map_; + scoped_refptr<const extensions::InfoMap> extension_info_map_; }; // Base class for an extension function that runs asynchronously *relative to diff --git a/chrome/browser/extensions/extension_function_dispatcher.cc b/chrome/browser/extensions/extension_function_dispatcher.cc index 9fc3be3..9b5bded 100644 --- a/chrome/browser/extensions/extension_function_dispatcher.cc +++ b/chrome/browser/extensions/extension_function_dispatcher.cc @@ -20,7 +20,6 @@ #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/extensions/extension_util.h" #include "chrome/browser/extensions/extension_web_ui.h" -#include "chrome/browser/extensions/extensions_quota_service.h" #include "chrome/browser/extensions/process_map.h" #include "chrome/browser/external_protocol/external_protocol_handler.h" #include "chrome/browser/profiles/profile.h" @@ -35,6 +34,7 @@ #include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents_observer.h" #include "content/public/common/result_codes.h" +#include "extensions/browser/quota_service.h" #include "extensions/common/extension_api.h" #include "ipc/ipc_message.h" #include "ipc/ipc_message_macros.h" @@ -234,7 +234,7 @@ void ExtensionFunctionDispatcher::ResetFunctions() { // static void ExtensionFunctionDispatcher::DispatchOnIOThread( - ExtensionInfoMap* extension_info_map, + extensions::InfoMap* extension_info_map, void* profile, int render_process_id, base::WeakPtr<ChromeRenderMessageFilter> ipc_sender, @@ -272,7 +272,7 @@ void ExtensionFunctionDispatcher::DispatchOnIOThread( if (!CheckPermissions(function.get(), extension, params, callback)) return; - ExtensionsQuotaService* quota = extension_info_map->GetQuotaService(); + extensions::QuotaService* quota = extension_info_map->GetQuotaService(); std::string violation_error = quota->Assess(extension->id(), function.get(), ¶ms.arguments, @@ -359,7 +359,7 @@ void ExtensionFunctionDispatcher::DispatchWithCallback( if (!CheckPermissions(function.get(), extension, params, callback)) return; - ExtensionsQuotaService* quota = service->quota_service(); + extensions::QuotaService* quota = service->quota_service(); std::string violation_error = quota->Assess(extension->id(), function.get(), ¶ms.arguments, diff --git a/chrome/browser/extensions/extension_function_dispatcher.h b/chrome/browser/extensions/extension_function_dispatcher.h index 27af9e1..2bd9192 100644 --- a/chrome/browser/extensions/extension_function_dispatcher.h +++ b/chrome/browser/extensions/extension_function_dispatcher.h @@ -15,7 +15,6 @@ #include "url/gurl.h" class ChromeRenderMessageFilter; -class ExtensionInfoMap; class Profile; struct ExtensionHostMsg_Request_Params; @@ -27,6 +26,7 @@ class WebContents; namespace extensions { class Extension; class ExtensionAPI; +class InfoMap; class ProcessMap; class WindowController; } @@ -85,7 +85,7 @@ class ExtensionFunctionDispatcher // Dispatches an IO-thread extension function. Only used for specific // functions that must be handled on the IO-thread. static void DispatchOnIOThread( - ExtensionInfoMap* extension_info_map, + extensions::InfoMap* extension_info_map, void* profile, int render_process_id, base::WeakPtr<ChromeRenderMessageFilter> ipc_sender, diff --git a/chrome/browser/extensions/extension_protocols.cc b/chrome/browser/extensions/extension_protocols.cc index c638672..13824e4 100644 --- a/chrome/browser/extensions/extension_protocols.cc +++ b/chrome/browser/extensions/extension_protocols.cc @@ -23,7 +23,6 @@ #include "base/threading/sequenced_worker_pool.h" #include "base/threading/thread_restrictions.h" #include "build/build_config.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_renderer_state.h" #include "chrome/browser/extensions/image_loader.h" #include "chrome/common/chrome_paths.h" @@ -37,6 +36,7 @@ #include "chrome/common/url_constants.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/resource_request_info.h" +#include "extensions/browser/info_map.h" #include "extensions/common/constants.h" #include "extensions/common/extension_resource.h" #include "extensions/common/file_util.h" @@ -314,7 +314,7 @@ class URLRequestExtensionJob : public net::URLRequestFileJob { bool ExtensionCanLoadInIncognito(const ResourceRequestInfo* info, const std::string& extension_id, - ExtensionInfoMap* extension_info_map) { + extensions::InfoMap* extension_info_map) { if (!extension_info_map->IsIncognitoEnabled(extension_id)) return false; @@ -336,7 +336,7 @@ bool ExtensionCanLoadInIncognito(const ResourceRequestInfo* info, bool AllowExtensionResourceLoad(net::URLRequest* request, bool is_incognito, const Extension* extension, - ExtensionInfoMap* extension_info_map) { + extensions::InfoMap* extension_info_map) { const ResourceRequestInfo* info = ResourceRequestInfo::ForRequest(request); // We have seen crashes where info is NULL: crbug.com/52374. @@ -452,9 +452,8 @@ class ExtensionProtocolHandler : public net::URLRequestJobFactory::ProtocolHandler { public: ExtensionProtocolHandler(bool is_incognito, - ExtensionInfoMap* extension_info_map) - : is_incognito_(is_incognito), - extension_info_map_(extension_info_map) {} + extensions::InfoMap* extension_info_map) + : is_incognito_(is_incognito), extension_info_map_(extension_info_map) {} virtual ~ExtensionProtocolHandler() {} @@ -464,7 +463,7 @@ class ExtensionProtocolHandler private: const bool is_incognito_; - ExtensionInfoMap* const extension_info_map_; + extensions::InfoMap* const extension_info_map_; DISALLOW_COPY_AND_ASSIGN(ExtensionProtocolHandler); }; @@ -599,6 +598,6 @@ ExtensionProtocolHandler::MaybeCreateJob( net::URLRequestJobFactory::ProtocolHandler* CreateExtensionProtocolHandler( bool is_incognito, - ExtensionInfoMap* extension_info_map) { + extensions::InfoMap* extension_info_map) { return new ExtensionProtocolHandler(is_incognito, extension_info_map); } diff --git a/chrome/browser/extensions/extension_protocols.h b/chrome/browser/extensions/extension_protocols.h index 2e74e8a..1cc8f1c 100644 --- a/chrome/browser/extensions/extension_protocols.h +++ b/chrome/browser/extensions/extension_protocols.h @@ -7,11 +7,13 @@ #include "net/url_request/url_request_job_factory.h" -class ExtensionInfoMap; +namespace extensions { +class InfoMap; +} // Creates the handlers for the chrome-extension:// scheme. net::URLRequestJobFactory::ProtocolHandler* CreateExtensionProtocolHandler( bool is_incognito, - ExtensionInfoMap* extension_info_map); + extensions::InfoMap* extension_info_map); #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_PROTOCOLS_H_ diff --git a/chrome/browser/extensions/extension_protocols_unittest.cc b/chrome/browser/extensions/extension_protocols_unittest.cc index 6be3ea3..ede181d 100644 --- a/chrome/browser/extensions/extension_protocols_unittest.cc +++ b/chrome/browser/extensions/extension_protocols_unittest.cc @@ -9,7 +9,6 @@ #include "base/strings/string_number_conversions.h" #include "base/strings/string_util.h" #include "base/values.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_protocols.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/extensions/extension.h" @@ -17,6 +16,7 @@ #include "content/public/browser/resource_request_info.h" #include "content/public/test/mock_resource_context.h" #include "content/public/test/test_browser_thread_bundle.h" +#include "extensions/browser/info_map.h" #include "extensions/common/constants.h" #include "net/base/request_priority.h" #include "net/url_request/url_request.h" @@ -94,7 +94,7 @@ class ExtensionProtocolTest : public testing::Test { virtual void SetUp() OVERRIDE { testing::Test::SetUp(); - extension_info_map_ = new ExtensionInfoMap(); + extension_info_map_ = new InfoMap(); net::URLRequestContext* request_context = resource_context_.GetRequestContext(); old_factory_ = request_context->job_factory(); @@ -129,7 +129,7 @@ class ExtensionProtocolTest : public testing::Test { protected: content::TestBrowserThreadBundle thread_bundle_; - scoped_refptr<ExtensionInfoMap> extension_info_map_; + scoped_refptr<InfoMap> extension_info_map_; net::URLRequestJobFactoryImpl job_factory_; const net::URLRequestJobFactory* old_factory_; net::TestDelegate test_delegate_; diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc index 5dbc562..51954a7 100644 --- a/chrome/browser/extensions/extension_service.cc +++ b/chrome/browser/extensions/extension_service.cc @@ -2547,8 +2547,9 @@ void ExtensionService::Observe(int type, process_map_.RemoveAllFromProcess(process->GetID()); BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&ExtensionInfoMap::UnregisterAllExtensionsInProcess, + BrowserThread::IO, + FROM_HERE, + base::Bind(&extensions::InfoMap::UnregisterAllExtensionsInProcess, system_->info_map(), process->GetID())); break; diff --git a/chrome/browser/extensions/extension_service.h b/chrome/browser/extensions/extension_service.h index 86276c0..6b9cb99 100644 --- a/chrome/browser/extensions/extension_service.h +++ b/chrome/browser/extensions/extension_service.h @@ -24,7 +24,6 @@ #include "chrome/browser/extensions/extension_prefs.h" #include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_sync_service.h" -#include "chrome/browser/extensions/extensions_quota_service.h" #include "chrome/browser/extensions/external_provider_interface.h" #include "chrome/browser/extensions/management_policy.h" #include "chrome/browser/extensions/menu_manager.h" @@ -39,6 +38,7 @@ #include "content/public/browser/devtools_agent_host.h" #include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_registrar.h" +#include "extensions/browser/quota_service.h" #include "extensions/common/manifest.h" #include "extensions/common/one_shot_event.h" @@ -454,7 +454,7 @@ class ExtensionService // Note that this may return NULL if autoupdate is not turned on. extensions::ExtensionUpdater* updater(); - ExtensionsQuotaService* quota_service() { return "a_service_; } + extensions::QuotaService* quota_service() { return "a_service_; } extensions::MenuManager* menu_manager() { return &menu_manager_; } @@ -767,7 +767,7 @@ class ExtensionService bool install_updates_when_idle_; // Used by dispatchers to limit API quota for individual extensions. - ExtensionsQuotaService quota_service_; + extensions::QuotaService quota_service_; // Signaled when all extensions are loaded. extensions::OneShotEvent* const ready_; diff --git a/chrome/browser/extensions/extension_system.cc b/chrome/browser/extensions/extension_system.cc index b7099d2..a38232f 100644 --- a/chrome/browser/extensions/extension_system.cc +++ b/chrome/browser/extensions/extension_system.cc @@ -16,7 +16,6 @@ #include "chrome/browser/extensions/error_console/error_console.h" #include "chrome/browser/extensions/event_router.h" #include "chrome/browser/extensions/extension_error_reporter.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_pref_store.h" #include "chrome/browser/extensions/extension_pref_value_map.h" #include "chrome/browser/extensions/extension_pref_value_map_factory.h" @@ -42,6 +41,7 @@ #include "chrome/common/extensions/features/feature_channel.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/url_data_source.h" +#include "extensions/browser/info_map.h" #include "extensions/browser/lazy_background_task_queue.h" #include "extensions/common/constants.h" #include "extensions/common/manifest.h" @@ -271,9 +271,9 @@ UserScriptMaster* ExtensionSystemImpl::Shared::user_script_master() { return user_script_master_.get(); } -ExtensionInfoMap* ExtensionSystemImpl::Shared::info_map() { +InfoMap* ExtensionSystemImpl::Shared::info_map() { if (!extension_info_map_.get()) - extension_info_map_ = new ExtensionInfoMap(); + extension_info_map_ = new InfoMap(); return extension_info_map_.get(); } @@ -327,7 +327,7 @@ void ExtensionSystemImpl::InitForRegularProfile( if (user_script_master() || extension_service()) return; // Already initialized. - // The ExtensionInfoMap needs to be created before the + // The InfoMap needs to be created before the // ExtensionProcessManager. shared_->info_map(); @@ -363,9 +363,7 @@ StateStore* ExtensionSystemImpl::rules_store() { return shared_->rules_store(); } -ExtensionInfoMap* ExtensionSystemImpl::info_map() { - return shared_->info_map(); -} +InfoMap* ExtensionSystemImpl::info_map() { return shared_->info_map(); } LazyBackgroundTaskQueue* ExtensionSystemImpl::lazy_background_task_queue() { return shared_->lazy_background_task_queue(); @@ -400,20 +398,22 @@ void ExtensionSystemImpl::RegisterExtensionWithRequestContexts( } bool incognito_enabled = extension_util::IsIncognitoEnabled(extension->id(), extension_service()); - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&ExtensionInfoMap::AddExtension, info_map(), - make_scoped_refptr(extension), install_time, - incognito_enabled)); + BrowserThread::PostTask(BrowserThread::IO, + FROM_HERE, + base::Bind(&InfoMap::AddExtension, + info_map(), + make_scoped_refptr(extension), + install_time, + incognito_enabled)); } void ExtensionSystemImpl::UnregisterExtensionWithRequestContexts( const std::string& extension_id, const UnloadedExtensionInfo::Reason reason) { BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - base::Bind(&ExtensionInfoMap::RemoveExtension, info_map(), - extension_id, reason)); + BrowserThread::IO, + FROM_HERE, + base::Bind(&InfoMap::RemoveExtension, info_map(), extension_id, reason)); } } // namespace extensions diff --git a/chrome/browser/extensions/extension_system.h b/chrome/browser/extensions/extension_system.h index 663c176..addf210 100644 --- a/chrome/browser/extensions/extension_system.h +++ b/chrome/browser/extensions/extension_system.h @@ -13,7 +13,6 @@ #include "components/browser_context_keyed_service/browser_context_keyed_service.h" #include "extensions/common/one_shot_event.h" -class ExtensionInfoMap; class ExtensionProcessManager; class ExtensionService; class Profile; @@ -36,6 +35,7 @@ class Extension; class ExtensionSystemSharedFactory; class ExtensionWarningBadgeService; class ExtensionWarningService; +class InfoMap; class LazyBackgroundTaskQueue; class ManagementPolicy; class NavigationObserver; @@ -94,7 +94,7 @@ class ExtensionSystem : public BrowserContextKeyedService { virtual StateStore* rules_store() = 0; // Returns the IO-thread-accessible extension data. - virtual ExtensionInfoMap* info_map() = 0; + virtual InfoMap* info_map() = 0; // The LazyBackgroundTaskQueue is created at startup. virtual LazyBackgroundTaskQueue* lazy_background_task_queue() = 0; @@ -154,7 +154,7 @@ class ExtensionSystemImpl : public ExtensionSystem { virtual StateStore* rules_store() OVERRIDE; // shared virtual LazyBackgroundTaskQueue* lazy_background_task_queue() OVERRIDE; // shared - virtual ExtensionInfoMap* info_map() OVERRIDE; // shared + virtual InfoMap* info_map() OVERRIDE; // shared virtual EventRouter* event_router() OVERRIDE; // shared virtual ExtensionWarningService* warning_service() OVERRIDE; virtual Blacklist* blacklist() OVERRIDE; // shared @@ -194,7 +194,7 @@ class ExtensionSystemImpl : public ExtensionSystem { ManagementPolicy* management_policy(); UserScriptMaster* user_script_master(); Blacklist* blacklist(); - ExtensionInfoMap* info_map(); + InfoMap* info_map(); LazyBackgroundTaskQueue* lazy_background_task_queue(); EventRouter* event_router(); ExtensionWarningService* warning_service(); @@ -222,7 +222,7 @@ class ExtensionSystemImpl : public ExtensionSystem { scoped_ptr<ExtensionService> extension_service_; scoped_ptr<ManagementPolicy> management_policy_; // extension_info_map_ needs to outlive extension_process_manager_. - scoped_refptr<ExtensionInfoMap> extension_info_map_; + scoped_refptr<InfoMap> extension_info_map_; scoped_ptr<ExtensionWarningService> extension_warning_service_; scoped_ptr<ExtensionWarningBadgeService> extension_warning_badge_service_; scoped_ptr<ErrorConsole> error_console_; diff --git a/chrome/browser/extensions/test_extension_system.cc b/chrome/browser/extensions/test_extension_system.cc index a628a9f..24d57b8 100644 --- a/chrome/browser/extensions/test_extension_system.cc +++ b/chrome/browser/extensions/test_extension_system.cc @@ -9,7 +9,6 @@ #include "chrome/browser/extensions/blacklist.h" #include "chrome/browser/extensions/error_console/error_console.h" #include "chrome/browser/extensions/event_router.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_pref_value_map.h" #include "chrome/browser/extensions/extension_pref_value_map_factory.h" #include "chrome/browser/extensions/extension_prefs.h" @@ -25,6 +24,7 @@ #include "chrome/browser/value_store/testing_value_store.h" #include "chrome/common/chrome_switches.h" #include "content/public/browser/browser_thread.h" +#include "extensions/browser/info_map.h" using content::BrowserThread; @@ -33,9 +33,8 @@ namespace extensions { TestExtensionSystem::TestExtensionSystem(Profile* profile) : profile_(profile), value_store_(NULL), - info_map_(new ExtensionInfoMap()), - error_console_(new ErrorConsole(profile, NULL)) { -} + info_map_(new InfoMap()), + error_console_(new ErrorConsole(profile, NULL)) {} TestExtensionSystem::~TestExtensionSystem() { } @@ -133,9 +132,7 @@ StateStore* TestExtensionSystem::rules_store() { return state_store_.get(); } -ExtensionInfoMap* TestExtensionSystem::info_map() { - return info_map_.get(); -} +InfoMap* TestExtensionSystem::info_map() { return info_map_.get(); } LazyBackgroundTaskQueue* TestExtensionSystem::lazy_background_task_queue() { diff --git a/chrome/browser/extensions/test_extension_system.h b/chrome/browser/extensions/test_extension_system.h index cab117b..6ae064c 100644 --- a/chrome/browser/extensions/test_extension_system.h +++ b/chrome/browser/extensions/test_extension_system.h @@ -64,7 +64,7 @@ class TestExtensionSystem : public ExtensionSystem { virtual StateStore* state_store() OVERRIDE; virtual StateStore* rules_store() OVERRIDE; TestingValueStore* value_store() { return value_store_; } - virtual ExtensionInfoMap* info_map() OVERRIDE; + virtual InfoMap* info_map() OVERRIDE; virtual LazyBackgroundTaskQueue* lazy_background_task_queue() OVERRIDE; virtual EventRouter* event_router() OVERRIDE; virtual ExtensionWarningService* warning_service() OVERRIDE; @@ -93,7 +93,7 @@ class TestExtensionSystem : public ExtensionSystem { scoped_ptr<ManagementPolicy> management_policy_; scoped_ptr<ExtensionService> extension_service_; scoped_ptr<ExtensionProcessManager> extension_process_manager_; - scoped_refptr<ExtensionInfoMap> info_map_; + scoped_refptr<InfoMap> info_map_; scoped_ptr<ErrorConsole> error_console_; OneShotEvent ready_; }; diff --git a/chrome/browser/extensions/user_script_master.h b/chrome/browser/extensions/user_script_master.h index 44aeb93..76f01fd 100644 --- a/chrome/browser/extensions/user_script_master.h +++ b/chrome/browser/extensions/user_script_master.h @@ -14,7 +14,6 @@ #include "base/memory/scoped_ptr.h" #include "base/memory/shared_memory.h" #include "base/strings/string_piece.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/common/extensions/extension_messages.h" #include "chrome/common/extensions/extension_set.h" #include "content/public/browser/browser_thread.h" diff --git a/chrome/browser/nacl_host/nacl_browser_delegate_impl.cc b/chrome/browser/nacl_host/nacl_browser_delegate_impl.cc index 342e05a..7f160177 100644 --- a/chrome/browser/nacl_host/nacl_browser_delegate_impl.cc +++ b/chrome/browser/nacl_host/nacl_browser_delegate_impl.cc @@ -9,7 +9,6 @@ #include "base/strings/string_util.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/component_updater/pnacl/pnacl_component_installer.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/nacl_host/nacl_infobar_delegate.h" #include "chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.h" @@ -20,6 +19,7 @@ #include "chrome/common/extensions/manifest_handlers/shared_module_info.h" #include "chrome/common/logging_chrome.h" #include "content/public/browser/browser_thread.h" +#include "extensions/browser/info_map.h" #include "extensions/common/constants.h" #include "extensions/common/url_pattern.h" #include "ppapi/c/private/ppb_nacl_private.h" @@ -27,10 +27,8 @@ using extensions::SharedModuleInfo; NaClBrowserDelegateImpl::NaClBrowserDelegateImpl( - ExtensionInfoMap* extension_info_map) - : extension_info_map_(extension_info_map), - inverse_debug_patterns_(false) { -} + extensions::InfoMap* extension_info_map) + : extension_info_map_(extension_info_map), inverse_debug_patterns_(false) {} NaClBrowserDelegateImpl::~NaClBrowserDelegateImpl() { } diff --git a/chrome/browser/nacl_host/nacl_browser_delegate_impl.h b/chrome/browser/nacl_host/nacl_browser_delegate_impl.h index de75b82..b93b759 100644 --- a/chrome/browser/nacl_host/nacl_browser_delegate_impl.h +++ b/chrome/browser/nacl_host/nacl_browser_delegate_impl.h @@ -6,12 +6,12 @@ #define CHROME_BROWSER_NACL_HOST_NACL_BROWSER_DELEGATE_IMPL_H_ #include "base/compiler_specific.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "components/nacl/common/nacl_browser_delegate.h" +#include "extensions/browser/info_map.h" class NaClBrowserDelegateImpl : public NaClBrowserDelegate { public: - explicit NaClBrowserDelegateImpl(ExtensionInfoMap* extension_info_map); + explicit NaClBrowserDelegateImpl(extensions::InfoMap* extension_info_map); virtual ~NaClBrowserDelegateImpl(); virtual void ShowNaClInfobar(int render_process_id, int render_view_id, @@ -31,7 +31,7 @@ class NaClBrowserDelegateImpl : public NaClBrowserDelegate { virtual bool URLMatchesDebugPatterns(const GURL& manifest_url) OVERRIDE; private: - scoped_refptr<ExtensionInfoMap> extension_info_map_; + scoped_refptr<extensions::InfoMap> extension_info_map_; std::vector<URLPattern> debug_patterns_; bool inverse_debug_patterns_; DISALLOW_COPY_AND_ASSIGN(NaClBrowserDelegateImpl); diff --git a/chrome/browser/nacl_host/nacl_process_host.h b/chrome/browser/nacl_host/nacl_process_host.h index 6db00bc..82a4f73 100644 --- a/chrome/browser/nacl_host/nacl_process_host.h +++ b/chrome/browser/nacl_host/nacl_process_host.h @@ -22,7 +22,6 @@ #include "url/gurl.h" class CommandLine; -class ExtensionInfoMap; class NaClHostMessageFilter; namespace content { diff --git a/chrome/browser/net/chrome_network_delegate.cc b/chrome/browser/net/chrome_network_delegate.cc index ffb7959..959d2ab 100644 --- a/chrome/browser/net/chrome_network_delegate.cc +++ b/chrome/browser/net/chrome_network_delegate.cc @@ -25,7 +25,6 @@ #include "chrome/browser/extensions/api/proxy/proxy_api.h" #include "chrome/browser/extensions/api/web_request/web_request_api.h" #include "chrome/browser/extensions/event_router_forwarder.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/google/google_util.h" @@ -41,6 +40,7 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/render_view_host.h" #include "content/public/browser/resource_request_info.h" +#include "extensions/browser/info_map.h" #include "extensions/common/constants.h" #include "net/base/host_port_pair.h" #include "net/base/net_errors.h" @@ -320,7 +320,7 @@ ChromeNetworkDelegate::ChromeNetworkDelegate( ChromeNetworkDelegate::~ChromeNetworkDelegate() {} void ChromeNetworkDelegate::set_extension_info_map( - ExtensionInfoMap* extension_info_map) { + extensions::InfoMap* extension_info_map) { extension_info_map_ = extension_info_map; } diff --git a/chrome/browser/net/chrome_network_delegate.h b/chrome/browser/net/chrome_network_delegate.h index 469d0b6..2aa2c45 100644 --- a/chrome/browser/net/chrome_network_delegate.h +++ b/chrome/browser/net/chrome_network_delegate.h @@ -17,7 +17,6 @@ class ClientHints; class CookieSettings; -class ExtensionInfoMap; class PrefService; template<class T> class PrefMember; @@ -35,6 +34,7 @@ class Predictor; namespace extensions { class EventRouterForwarder; +class InfoMap; } namespace net { @@ -58,7 +58,7 @@ class ChromeNetworkDelegate : public net::NetworkDelegate { // Not inlined because we assign a scoped_refptr, which requires us to include // the header file. - void set_extension_info_map(ExtensionInfoMap* extension_info_map); + void set_extension_info_map(extensions::InfoMap* extension_info_map); void set_url_blacklist_manager( const policy::URLBlacklistManager* url_blacklist_manager) { @@ -188,7 +188,7 @@ class ChromeNetworkDelegate : public net::NetworkDelegate { base::FilePath profile_path_; scoped_refptr<CookieSettings> cookie_settings_; - scoped_refptr<ExtensionInfoMap> extension_info_map_; + scoped_refptr<extensions::InfoMap> extension_info_map_; scoped_ptr<chrome_browser_net::ConnectInterceptor> connect_interceptor_; diff --git a/chrome/browser/notifications/desktop_notification_service.cc b/chrome/browser/notifications/desktop_notification_service.cc index 5c21338..6fbaa2a 100644 --- a/chrome/browser/notifications/desktop_notification_service.cc +++ b/chrome/browser/notifications/desktop_notification_service.cc @@ -15,7 +15,6 @@ #include "chrome/browser/content_settings/host_content_settings_map.h" #include "chrome/browser/extensions/api/notifications/notifications_api.h" #include "chrome/browser/extensions/event_router.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/infobars/confirm_infobar_delegate.h" @@ -38,6 +37,7 @@ #include "content/public/browser/render_view_host.h" #include "content/public/browser/web_contents.h" #include "content/public/common/show_desktop_notification_params.h" +#include "extensions/browser/info_map.h" #include "extensions/common/constants.h" #include "grit/browser_resources.h" #include "grit/chromium_strings.h" @@ -516,7 +516,7 @@ string16 DesktopNotificationService::DisplayNameForOriginInProcessId( // is allowed by an extension. if (NotificationUIManager::DelegatesToMessageCenter() || origin.SchemeIs(extensions::kExtensionScheme)) { - ExtensionInfoMap* extension_info_map = + extensions::InfoMap* extension_info_map = extensions::ExtensionSystem::Get(profile_)->info_map(); if (extension_info_map) { ExtensionSet extensions; diff --git a/chrome/browser/notifications/message_center_notification_manager.cc b/chrome/browser/notifications/message_center_notification_manager.cc index d404890..192a203 100644 --- a/chrome/browser/notifications/message_center_notification_manager.cc +++ b/chrome/browser/notifications/message_center_notification_manager.cc @@ -8,7 +8,6 @@ #include "base/memory/scoped_ptr.h" #include "base/prefs/pref_service.h" #include "chrome/browser/chrome_notification_types.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_system.h" #include "chrome/browser/notifications/desktop_notification_service.h" #include "chrome/browser/notifications/desktop_notification_service_factory.h" @@ -25,6 +24,7 @@ #include "content/public/browser/notification_service.h" #include "content/public/browser/web_contents.h" #include "content/public/common/url_constants.h" +#include "extensions/browser/info_map.h" #include "ui/gfx/image/image_skia.h" #include "ui/message_center/message_center_style.h" #include "ui/message_center/message_center_tray.h" @@ -420,7 +420,7 @@ MessageCenterNotificationManager::ProfileNotification::OnDownloadsCompleted() { std::string MessageCenterNotificationManager::ProfileNotification::GetExtensionId() { - ExtensionInfoMap* extension_info_map = + extensions::InfoMap* extension_info_map = extensions::ExtensionSystem::Get(profile())->info_map(); ExtensionSet extensions; extension_info_map->GetExtensionsWithAPIPermissionForSecurityOrigin( diff --git a/chrome/browser/profiles/off_the_record_profile_impl.cc b/chrome/browser/profiles/off_the_record_profile_impl.cc index e858a2b..a84232e 100644 --- a/chrome/browser/profiles/off_the_record_profile_impl.cc +++ b/chrome/browser/profiles/off_the_record_profile_impl.cc @@ -21,7 +21,6 @@ #include "chrome/browser/download/download_service.h" #include "chrome/browser/download/download_service_factory.h" #include "chrome/browser/extensions/api/web_request/web_request_api.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/extensions/extension_special_storage_policy.h" #include "chrome/browser/extensions/extension_system.h" diff --git a/chrome/browser/profiles/profile_io_data.cc b/chrome/browser/profiles/profile_io_data.cc index 759a641..a5b848e 100644 --- a/chrome/browser/profiles/profile_io_data.cc +++ b/chrome/browser/profiles/profile_io_data.cc @@ -30,7 +30,6 @@ #include "chrome/browser/custom_handlers/protocol_handler_registry_factory.h" #include "chrome/browser/download/download_service.h" #include "chrome/browser/download/download_service_factory.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_protocols.h" #include "chrome/browser/extensions/extension_resource_protocols.h" #include "chrome/browser/extensions/extension_system.h" @@ -62,6 +61,7 @@ #include "content/public/browser/host_zoom_map.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/resource_context.h" +#include "extensions/browser/info_map.h" #include "extensions/common/constants.h" #include "net/cert/cert_verifier.h" #include "net/cookies/canonical_cookie.h" @@ -627,7 +627,7 @@ ChromeURLRequestContext* ProfileIOData::GetIsolatedMediaRequestContext( return context; } -ExtensionInfoMap* ProfileIOData::GetExtensionInfoMap() const { +extensions::InfoMap* ProfileIOData::GetExtensionInfoMap() const { DCHECK(initialized_) << "ExtensionSystem not initialized"; return extension_info_map_.get(); } diff --git a/chrome/browser/profiles/profile_io_data.h b/chrome/browser/profiles/profile_io_data.h index fcdf2a9..92813c6 100644 --- a/chrome/browser/profiles/profile_io_data.h +++ b/chrome/browser/profiles/profile_io_data.h @@ -30,7 +30,6 @@ class ChromeHttpUserAgentSettings; class ChromeNetworkDelegate; class CookieSettings; class DesktopNotificationService; -class ExtensionInfoMap; class HostContentSettingsMap; class ManagedModeURLFilter; class Profile; @@ -43,6 +42,10 @@ class LoadTimeStats; class ResourcePrefetchPredictorObserver; } +namespace extensions { +class InfoMap; +} + namespace net { class CertVerifier; class CookieStore; @@ -113,7 +116,7 @@ class ProfileIOData { // These are useful when the Chrome layer is called from the content layer // with a content::ResourceContext, and they want access to Chrome data for // that profile. - ExtensionInfoMap* GetExtensionInfoMap() const; + extensions::InfoMap* GetExtensionInfoMap() const; CookieSettings* GetCookieSettings() const; HostContentSettingsMap* GetHostContentSettingsMap() const; @@ -250,7 +253,7 @@ class ProfileIOData { scoped_refptr<HostContentSettingsMap> host_content_settings_map; scoped_refptr<net::SSLConfigService> ssl_config_service; scoped_refptr<net::CookieMonster::Delegate> cookie_monster_delegate; - scoped_refptr<ExtensionInfoMap> extension_info_map; + scoped_refptr<extensions::InfoMap> extension_info_map; scoped_ptr<chrome_browser_net::ResourcePrefetchPredictorObserver> resource_prefetch_predictor_observer_; @@ -488,7 +491,7 @@ class ProfileIOData { mutable scoped_ptr<policy::URLBlacklistManager> url_blacklist_manager_; // Pointed to by URLRequestContext. - mutable scoped_refptr<ExtensionInfoMap> extension_info_map_; + mutable scoped_refptr<extensions::InfoMap> extension_info_map_; mutable scoped_ptr<net::ServerBoundCertService> server_bound_cert_service_; mutable scoped_ptr<ChromeNetworkDelegate> network_delegate_; mutable scoped_ptr<net::FraudulentCertificateReporter> diff --git a/chrome/browser/renderer_host/chrome_render_message_filter.h b/chrome/browser/renderer_host/chrome_render_message_filter.h index d683fbb..b1f3298 100644 --- a/chrome/browser/renderer_host/chrome_render_message_filter.h +++ b/chrome/browser/renderer_host/chrome_render_message_filter.h @@ -21,9 +21,12 @@ struct ExtensionHostMsg_APIActionOrEvent_Params; struct ExtensionHostMsg_DOMAction_Params; struct ExtensionHostMsg_Request_Params; struct ExtensionMsg_ExternalConnectionInfo; -class ExtensionInfoMap; class GURL; +namespace extensions { +class InfoMap; +} + namespace net { class HostResolver; class URLRequestContextGetter; @@ -199,7 +202,7 @@ class ChromeRenderMessageFilter : public content::BrowserMessageFilter { // used on the IO thread. chrome_browser_net::Predictor* predictor_; scoped_refptr<net::URLRequestContextGetter> request_context_; - scoped_refptr<ExtensionInfoMap> extension_info_map_; + scoped_refptr<extensions::InfoMap> extension_info_map_; // Used to look up permissions at database creation time. scoped_refptr<CookieSettings> cookie_settings_; diff --git a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc index 13b1308..a69d0427 100644 --- a/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc +++ b/chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate.cc @@ -16,7 +16,6 @@ #include "chrome/browser/download/download_request_limiter.h" #include "chrome/browser/download/download_resource_throttle.h" #include "chrome/browser/extensions/api/streams_private/streams_private_api.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/browser/extensions/extension_renderer_state.h" #include "chrome/browser/extensions/user_script_listener.h" #include "chrome/browser/external_protocol/external_protocol_handler.h" @@ -48,6 +47,7 @@ #include "content/public/browser/resource_request_info.h" #include "content/public/browser/stream_handle.h" #include "content/public/common/resource_response.h" +#include "extensions/browser/info_map.h" #include "extensions/common/constants.h" #include "extensions/common/user_script.h" #include "net/base/load_flags.h" @@ -589,7 +589,7 @@ bool ChromeResourceDispatcherHostDelegate::ShouldInterceptResourceAsStream( ProfileIOData* io_data = ProfileIOData::FromResourceContext(resource_context); bool profile_is_incognito = io_data->is_incognito(); - const scoped_refptr<const ExtensionInfoMap> extension_info_map( + const scoped_refptr<const extensions::InfoMap> extension_info_map( io_data->GetExtensionInfoMap()); std::vector<std::string> whitelist = MimeTypesHandler::GetMIMETypeWhitelist(); // Go through the white-listed extensions and try to use them to intercept diff --git a/chrome/chrome_browser_extensions.gypi b/chrome/chrome_browser_extensions.gypi index 22596bf..cc8e436 100644 --- a/chrome/chrome_browser_extensions.gypi +++ b/chrome/chrome_browser_extensions.gypi @@ -703,8 +703,6 @@ 'browser/extensions/extension_icon_image.h', 'browser/extensions/extension_icon_manager.cc', 'browser/extensions/extension_icon_manager.h', - 'browser/extensions/extension_info_map.cc', - 'browser/extensions/extension_info_map.h', 'browser/extensions/extension_infobar_delegate.cc', 'browser/extensions/extension_infobar_delegate.h', 'browser/extensions/extension_install_prompt.cc', @@ -778,8 +776,6 @@ 'browser/extensions/extension_web_ui_override_registrar.h', 'browser/extensions/extension_webkit_preferences.cc', 'browser/extensions/extension_webkit_preferences.h', - 'browser/extensions/extensions_quota_service.cc', - 'browser/extensions/extensions_quota_service.h', 'browser/extensions/external_component_loader.cc', 'browser/extensions/external_component_loader.h', 'browser/extensions/external_install_ui.cc', diff --git a/chrome/chrome_tests_unit.gypi b/chrome/chrome_tests_unit.gypi index dfbf0e5..abb71c1c 100644 --- a/chrome/chrome_tests_unit.gypi +++ b/chrome/chrome_tests_unit.gypi @@ -524,7 +524,9 @@ '../extensions/browser/admin_policy_unittest.cc', '../extensions/browser/file_highlighter_unittest.cc', '../extensions/browser/file_reader_unittest.cc', + '../extensions/browser/info_map_unittest.cc', '../extensions/browser/lazy_background_task_queue_unittest.cc', + '../extensions/browser/quota_service_unittest.cc', '../extensions/common/event_filter_unittest.cc', '../extensions/common/extension_resource_unittest.cc', '../extensions/common/file_util_unittest.cc', @@ -884,7 +886,6 @@ 'browser/extensions/extension_function_test_utils.h', 'browser/extensions/extension_icon_image_unittest.cc', 'browser/extensions/extension_icon_manager_unittest.cc', - 'browser/extensions/extension_info_map_unittest.cc', 'browser/extensions/policy_handlers_unittest.cc', 'browser/extensions/extension_pref_value_map_unittest.cc', 'browser/extensions/extension_prefs_unittest.cc', @@ -899,7 +900,6 @@ 'browser/extensions/extension_ui_unittest.cc', 'browser/extensions/extension_warning_badge_service_unittest.cc', 'browser/extensions/extension_warning_service_unittest.cc', - 'browser/extensions/extensions_quota_service_unittest.cc', 'browser/extensions/external_policy_loader_unittest.cc', 'browser/extensions/external_provider_impl_chromeos_unittest.cc', 'browser/extensions/image_loader_unittest.cc', diff --git a/extensions/browser/DEPS b/extensions/browser/DEPS index 5adf345..afab308 100644 --- a/extensions/browser/DEPS +++ b/extensions/browser/DEPS @@ -8,6 +8,7 @@ include_rules = [ # # TODO(jamescook): Remove these. http://crbug.com/162530 "+chrome/browser/chrome_notification_types.h", + "+chrome/browser/extensions/extension_function.h", "+chrome/browser/extensions/extension_host.h", "+chrome/browser/extensions/extension_process_manager.h", "+chrome/browser/extensions/extension_service.h", @@ -15,6 +16,7 @@ include_rules = [ "+chrome/browser/extensions/process_map.h", "+chrome/common/extensions/extension.h", "+chrome/common/extensions/extension_messages.h", + "+chrome/common/extensions/extension_set.h", "+grit/generated_resources.h", ] @@ -24,6 +26,7 @@ specific_include_rules = { # TODO(jamescook): Remove these. http://crbug.com/159366 "+chrome/browser/extensions/extension_service_unittest.h", "+chrome/browser/extensions/test_extension_system.h", + "+chrome/common/chrome_paths.h", "+chrome/test/base/testing_profile.h", ] } diff --git a/chrome/browser/extensions/extension_info_map.cc b/extensions/browser/info_map.cc index 4d4fb22..a877ec9 100644 --- a/chrome/browser/extensions/extension_info_map.cc +++ b/extensions/browser/info_map.cc @@ -1,19 +1,18 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/extensions/extension_info_map.h" +#include "extensions/browser/info_map.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_set.h" -#include "chrome/common/url_constants.h" #include "content/public/browser/browser_thread.h" #include "extensions/common/constants.h" #include "extensions/common/manifest_handlers/incognito_info.h" using content::BrowserThread; -using extensions::Extension; -using extensions::UnloadedExtensionInfo; + +namespace extensions { namespace { @@ -23,7 +22,7 @@ void CheckOnValidThread() { } // namespace -struct ExtensionInfoMap::ExtraData { +struct InfoMap::ExtraData { // When the extension was installed. base::Time install_time; @@ -34,19 +33,17 @@ struct ExtensionInfoMap::ExtraData { ~ExtraData(); }; -ExtensionInfoMap::ExtraData::ExtraData() : incognito_enabled(false) {} +InfoMap::ExtraData::ExtraData() : incognito_enabled(false) {} -ExtensionInfoMap::ExtraData::~ExtraData() {} +InfoMap::ExtraData::~ExtraData() {} -ExtensionInfoMap::ExtensionInfoMap() : signin_process_id_(-1) {} +InfoMap::InfoMap() : signin_process_id_(-1) {} -const extensions::ProcessMap& ExtensionInfoMap::process_map() const { - return process_map_; -} +const ProcessMap& InfoMap::process_map() const { return process_map_; } -void ExtensionInfoMap::AddExtension(const Extension* extension, - base::Time install_time, - bool incognito_enabled) { +void InfoMap::AddExtension(const Extension* extension, + base::Time install_time, + bool incognito_enabled) { CheckOnValidThread(); extensions_.Insert(extension); disabled_extensions_.Remove(extension->id()); @@ -55,9 +52,8 @@ void ExtensionInfoMap::AddExtension(const Extension* extension, extra_data_[extension->id()].incognito_enabled = incognito_enabled; } -void ExtensionInfoMap::RemoveExtension( - const std::string& extension_id, - const UnloadedExtensionInfo::Reason reason) { +void InfoMap::RemoveExtension(const std::string& extension_id, + const UnloadedExtensionInfo::Reason reason) { CheckOnValidThread(); const Extension* extension = extensions_.GetByID(extension_id); extra_data_.erase(extension_id); // we don't care about disabled extra data @@ -80,16 +76,14 @@ void ExtensionInfoMap::RemoveExtension( } } -base::Time ExtensionInfoMap::GetInstallTime( - const std::string& extension_id) const { +base::Time InfoMap::GetInstallTime(const std::string& extension_id) const { ExtraDataMap::const_iterator iter = extra_data_.find(extension_id); if (iter != extra_data_.end()) return iter->second.install_time; return base::Time(); } -bool ExtensionInfoMap::IsIncognitoEnabled( - const std::string& extension_id) const { +bool InfoMap::IsIncognitoEnabled(const std::string& extension_id) const { // Keep in sync with duplicate in extension_process_manager.cc. ExtraDataMap::const_iterator iter = extra_data_.find(extension_id); if (iter != extra_data_.end()) @@ -97,43 +91,42 @@ bool ExtensionInfoMap::IsIncognitoEnabled( return false; } -bool ExtensionInfoMap::CanCrossIncognito(const Extension* extension) const { +bool InfoMap::CanCrossIncognito(const Extension* extension) const { // This is duplicated from ExtensionService :(. return IsIncognitoEnabled(extension->id()) && - !extensions::IncognitoInfo::IsSplitMode(extension); + !IncognitoInfo::IsSplitMode(extension); } -void ExtensionInfoMap::RegisterExtensionProcess(const std::string& extension_id, - int process_id, - int site_instance_id) { +void InfoMap::RegisterExtensionProcess(const std::string& extension_id, + int process_id, + int site_instance_id) { if (!process_map_.Insert(extension_id, process_id, site_instance_id)) { NOTREACHED() << "Duplicate extension process registration for: " << extension_id << "," << process_id << "."; } } -void ExtensionInfoMap::UnregisterExtensionProcess( - const std::string& extension_id, - int process_id, - int site_instance_id) { +void InfoMap::UnregisterExtensionProcess(const std::string& extension_id, + int process_id, + int site_instance_id) { if (!process_map_.Remove(extension_id, process_id, site_instance_id)) { NOTREACHED() << "Unknown extension process registration for: " << extension_id << "," << process_id << "."; } } -void ExtensionInfoMap::UnregisterAllExtensionsInProcess(int process_id) { +void InfoMap::UnregisterAllExtensionsInProcess(int process_id) { process_map_.RemoveAllFromProcess(process_id); } -void ExtensionInfoMap::GetExtensionsWithAPIPermissionForSecurityOrigin( +void InfoMap::GetExtensionsWithAPIPermissionForSecurityOrigin( const GURL& origin, int process_id, - extensions::APIPermission::ID permission, + APIPermission::ID permission, ExtensionSet* extensions) const { DCHECK(extensions); - if (origin.SchemeIs(extensions::kExtensionScheme)) { + if (origin.SchemeIs(kExtensionScheme)) { const std::string& id = origin.host(); const Extension* extension = extensions_.GetByID(id); if (extension && extension->HasAPIPermission(permission) && @@ -153,33 +146,36 @@ void ExtensionInfoMap::GetExtensionsWithAPIPermissionForSecurityOrigin( } } -bool ExtensionInfoMap::SecurityOriginHasAPIPermission( - const GURL& origin, int process_id, - extensions::APIPermission::ID permission) const { +bool InfoMap::SecurityOriginHasAPIPermission(const GURL& origin, + int process_id, + APIPermission::ID permission) + const { ExtensionSet extensions; GetExtensionsWithAPIPermissionForSecurityOrigin( origin, process_id, permission, &extensions); return !extensions.is_empty(); } -ExtensionsQuotaService* ExtensionInfoMap::GetQuotaService() { +QuotaService* InfoMap::GetQuotaService() { CheckOnValidThread(); if (!quota_service_) - quota_service_.reset(new ExtensionsQuotaService()); + quota_service_.reset(new QuotaService()); return quota_service_.get(); } -void ExtensionInfoMap::SetSigninProcess(int process_id) { +void InfoMap::SetSigninProcess(int process_id) { signin_process_id_ = process_id; } -bool ExtensionInfoMap::IsSigninProcess(int process_id) const { +bool InfoMap::IsSigninProcess(int process_id) const { return process_id == signin_process_id_; } -ExtensionInfoMap::~ExtensionInfoMap() { +InfoMap::~InfoMap() { if (quota_service_) { - BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE, - quota_service_.release()); + BrowserThread::DeleteSoon( + BrowserThread::IO, FROM_HERE, quota_service_.release()); } } + +} // namespace extensions diff --git a/chrome/browser/extensions/extension_info_map.h b/extensions/browser/info_map.h index 53c04f5..d68933f 100644 --- a/chrome/browser/extensions/extension_info_map.h +++ b/extensions/browser/info_map.h @@ -1,9 +1,9 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_INFO_MAP_H_ -#define CHROME_BROWSER_EXTENSIONS_EXTENSION_INFO_MAP_H_ +#ifndef EXTENSIONS_BROWSER_INFO_MAP_H_ +#define EXTENSIONS_BROWSER_INFO_MAP_H_ #include <string> @@ -11,20 +11,19 @@ #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "base/time/time.h" -#include "chrome/browser/extensions/extensions_quota_service.h" #include "chrome/browser/extensions/process_map.h" #include "chrome/common/extensions/extension_set.h" +#include "extensions/browser/quota_service.h" namespace extensions { class Extension; -} // Contains extension data that needs to be accessed on the IO thread. It can // be created/destroyed on any thread, but all other methods must be called on // the IO thread. -class ExtensionInfoMap : public base::RefCountedThreadSafe<ExtensionInfoMap> { +class InfoMap : public base::RefCountedThreadSafe<InfoMap> { public: - ExtensionInfoMap(); + InfoMap(); const ExtensionSet& extensions() const { return extensions_; } const ExtensionSet& disabled_extensions() const { @@ -74,11 +73,12 @@ class ExtensionInfoMap : public base::RefCountedThreadSafe<ExtensionInfoMap> { // Returns true if there is exists an extension with the same origin as // |origin| in |process_id| with |permission|. - bool SecurityOriginHasAPIPermission( - const GURL& origin, int process_id, - extensions::APIPermission::ID permission) const; + bool SecurityOriginHasAPIPermission(const GURL& origin, + int process_id, + extensions::APIPermission::ID permission) + const; - ExtensionsQuotaService* GetQuotaService(); + QuotaService* GetQuotaService(); // Keep track of the signin process, so we can restrict extension access to // it. @@ -86,14 +86,14 @@ class ExtensionInfoMap : public base::RefCountedThreadSafe<ExtensionInfoMap> { bool IsSigninProcess(int process_id) const; private: - friend class base::RefCountedThreadSafe<ExtensionInfoMap>; + friend class base::RefCountedThreadSafe<InfoMap>; // Extra dynamic data related to an extension. struct ExtraData; // Map of extension_id to ExtraData. typedef std::map<std::string, ExtraData> ExtraDataMap; - ~ExtensionInfoMap(); + ~InfoMap(); ExtensionSet extensions_; ExtensionSet disabled_extensions_; @@ -102,9 +102,9 @@ class ExtensionInfoMap : public base::RefCountedThreadSafe<ExtensionInfoMap> { ExtraDataMap extra_data_; // Used by dispatchers to limit API quota for individual extensions. - // The ExtensionQutoaService is not thread safe. We need to create and destroy - // it on the IO thread. - scoped_ptr<ExtensionsQuotaService> quota_service_; + // The QuotaService is not thread safe. We need to create and destroy it on + // the IO thread. + scoped_ptr<QuotaService> quota_service_; // Assignment of extensions to processes. extensions::ProcessMap process_map_; @@ -112,4 +112,6 @@ class ExtensionInfoMap : public base::RefCountedThreadSafe<ExtensionInfoMap> { int signin_process_id_; }; -#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_INFO_MAP_H_ +} // namespace extensions + +#endif // EXTENSIONS_BROWSER_INFO_MAP_H_ diff --git a/chrome/browser/extensions/extension_info_map_unittest.cc b/extensions/browser/info_map_unittest.cc index dac4e0a..5136069 100644 --- a/chrome/browser/extensions/extension_info_map_unittest.cc +++ b/extensions/browser/info_map_unittest.cc @@ -1,32 +1,28 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/json/json_file_value_serializer.h" #include "base/message_loop/message_loop.h" #include "base/path_service.h" -#include "chrome/browser/extensions/extension_info_map.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/extensions/extension.h" #include "content/public/test/test_browser_thread.h" +#include "extensions/browser/info_map.h" #include "extensions/common/manifest_constants.h" #include "testing/gtest/include/gtest/gtest.h" using content::BrowserThread; -using extensions::APIPermission; -using extensions::Extension; -using extensions::Manifest; namespace keys = extensions::manifest_keys; -namespace { +namespace extensions { -class ExtensionInfoMapTest : public testing::Test { +class InfoMapTest : public testing::Test { public: - ExtensionInfoMapTest() + InfoMapTest() : ui_thread_(BrowserThread::UI, &message_loop_), - io_thread_(BrowserThread::IO, &message_loop_) { - } + io_thread_(BrowserThread::IO, &message_loop_) {} private: base::MessageLoop message_loop_; @@ -47,9 +43,12 @@ static scoped_refptr<Extension> CreateExtension(const std::string& name) { manifest.SetString(keys::kName, name); std::string error; - scoped_refptr<Extension> extension = Extension::Create( - path.AppendASCII(name), Manifest::INVALID_LOCATION, manifest, - Extension::NO_FLAGS, &error); + scoped_refptr<Extension> extension = + Extension::Create(path.AppendASCII(name), + Manifest::INVALID_LOCATION, + manifest, + Extension::NO_FLAGS, + &error); EXPECT_TRUE(extension.get()) << error; return extension; @@ -59,9 +58,7 @@ static scoped_refptr<Extension> LoadManifest(const std::string& dir, const std::string& test_file) { base::FilePath path; PathService::Get(chrome::DIR_TEST_DATA, &path); - path = path.AppendASCII("extensions") - .AppendASCII(dir) - .AppendASCII(test_file); + path = path.AppendASCII("extensions").AppendASCII(dir).AppendASCII(test_file); JSONFileValueSerializer serializer(path); scoped_ptr<Value> result(serializer.Deserialize(NULL, NULL)); @@ -69,18 +66,20 @@ static scoped_refptr<Extension> LoadManifest(const std::string& dir, return NULL; std::string error; - scoped_refptr<Extension> extension = Extension::Create( - path, Manifest::INVALID_LOCATION, - *static_cast<DictionaryValue*>(result.get()), - Extension::NO_FLAGS, &error); + scoped_refptr<Extension> extension = + Extension::Create(path, + Manifest::INVALID_LOCATION, + *static_cast<DictionaryValue*>(result.get()), + Extension::NO_FLAGS, + &error); EXPECT_TRUE(extension.get()) << error; return extension; } -// Test that the ExtensionInfoMap handles refcounting properly. -TEST_F(ExtensionInfoMapTest, RefCounting) { - scoped_refptr<ExtensionInfoMap> info_map(new ExtensionInfoMap()); +// Test that the InfoMap handles refcounting properly. +TEST_F(InfoMapTest, RefCounting) { + scoped_refptr<InfoMap> info_map(new InfoMap()); // New extensions should have a single reference holding onto them. scoped_refptr<Extension> extension1(CreateExtension("extension1")); @@ -110,9 +109,9 @@ TEST_F(ExtensionInfoMapTest, RefCounting) { EXPECT_TRUE(extension3->HasOneRef()); } -// Tests that we can query a few extension properties from the ExtensionInfoMap. -TEST_F(ExtensionInfoMapTest, Properties) { - scoped_refptr<ExtensionInfoMap> info_map(new ExtensionInfoMap()); +// Tests that we can query a few extension properties from the InfoMap. +TEST_F(InfoMapTest, Properties) { + scoped_refptr<InfoMap> info_map(new InfoMap()); scoped_refptr<Extension> extension1(CreateExtension("extension1")); scoped_refptr<Extension> extension2(CreateExtension("extension2")); @@ -126,13 +125,13 @@ TEST_F(ExtensionInfoMapTest, Properties) { } // Tests CheckURLAccessToExtensionPermission given both extension and app URLs. -TEST_F(ExtensionInfoMapTest, CheckPermissions) { - scoped_refptr<ExtensionInfoMap> info_map(new ExtensionInfoMap()); +TEST_F(InfoMapTest, CheckPermissions) { + scoped_refptr<InfoMap> info_map(new InfoMap()); - scoped_refptr<Extension> app(LoadManifest("manifest_tests", - "valid_app.json")); - scoped_refptr<Extension> extension(LoadManifest("manifest_tests", - "tabs_extension.json")); + scoped_refptr<Extension> app( + LoadManifest("manifest_tests", "valid_app.json")); + scoped_refptr<Extension> extension( + LoadManifest("manifest_tests", "tabs_extension.json")); GURL app_url("http://www.google.com/mail/foo.html"); ASSERT_TRUE(app->is_app()); @@ -145,21 +144,16 @@ TEST_F(ExtensionInfoMapTest, CheckPermissions) { // chrome-extension URL or from its web extent. const Extension* match = info_map->extensions().GetExtensionOrAppByURL( app->GetResourceURL("a.html")); - EXPECT_TRUE(match && - match->HasAPIPermission(APIPermission::kNotification)); + EXPECT_TRUE(match && match->HasAPIPermission(APIPermission::kNotification)); match = info_map->extensions().GetExtensionOrAppByURL(app_url); - EXPECT_TRUE(match && - match->HasAPIPermission(APIPermission::kNotification)); - EXPECT_FALSE(match && - match->HasAPIPermission(APIPermission::kTab)); + EXPECT_TRUE(match && match->HasAPIPermission(APIPermission::kNotification)); + EXPECT_FALSE(match && match->HasAPIPermission(APIPermission::kTab)); // The extension should have the tabs permission. match = info_map->extensions().GetExtensionOrAppByURL( extension->GetResourceURL("a.html")); - EXPECT_TRUE(match && - match->HasAPIPermission(APIPermission::kTab)); - EXPECT_FALSE(match && - match->HasAPIPermission(APIPermission::kNotification)); + EXPECT_TRUE(match && match->HasAPIPermission(APIPermission::kTab)); + EXPECT_FALSE(match && match->HasAPIPermission(APIPermission::kNotification)); // Random URL should not have any permissions. GURL evil_url("http://evil.com/a.html"); @@ -167,4 +161,4 @@ TEST_F(ExtensionInfoMapTest, CheckPermissions) { EXPECT_FALSE(match); } -} // namespace +} // namespace extensions diff --git a/chrome/browser/extensions/extensions_quota_service.cc b/extensions/browser/quota_service.cc index 830c93a..ce21b25 100644 --- a/chrome/browser/extensions/extensions_quota_service.cc +++ b/extensions/browser/quota_service.cc @@ -1,8 +1,8 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "chrome/browser/extensions/extensions_quota_service.h" +#include "extensions/browser/quota_service.h" #include "base/message_loop/message_loop.h" #include "base/stl_util.h" @@ -20,25 +20,27 @@ const char kOverQuotaError[] = "This request exceeds the * quota."; } // namespace -ExtensionsQuotaService::ExtensionsQuotaService() { +namespace extensions { + +QuotaService::QuotaService() { if (base::MessageLoop::current() != NULL) { // Null in unit tests. purge_timer_.Start(FROM_HERE, base::TimeDelta::FromDays(kPurgeIntervalInDays), - this, &ExtensionsQuotaService::Purge); + this, + &QuotaService::Purge); } } -ExtensionsQuotaService::~ExtensionsQuotaService() { +QuotaService::~QuotaService() { DCHECK(CalledOnValidThread()); purge_timer_.Stop(); Purge(); } -std::string ExtensionsQuotaService::Assess( - const std::string& extension_id, - ExtensionFunction* function, - const base::ListValue* args, - const base::TimeTicks& event_time) { +std::string QuotaService::Assess(const std::string& extension_id, + ExtensionFunction* function, + const base::ListValue* args, + const base::TimeTicks& event_time) { DCHECK(CalledOnValidThread()); if (function->ShouldSkipQuotaLimiting()) @@ -62,7 +64,8 @@ std::string ExtensionsQuotaService::Assess( QuotaLimitHeuristic* failed_heuristic = NULL; for (QuotaLimitHeuristics::iterator heuristic = heuristics.begin(); - heuristic != heuristics.end(); ++heuristic) { + heuristic != heuristics.end(); + ++heuristic) { // Apply heuristic to each item (bucket). if (!(*heuristic)->ApplyToArgs(args, event_time)) { failed_heuristic = *heuristic; @@ -82,8 +85,7 @@ std::string ExtensionsQuotaService::Assess( return error; } -void ExtensionsQuotaService::PurgeFunctionHeuristicsMap( - FunctionHeuristicsMap* map) { +void QuotaService::PurgeFunctionHeuristicsMap(FunctionHeuristicsMap* map) { FunctionHeuristicsMap::iterator heuristics = map->begin(); while (heuristics != map->end()) { STLDeleteElements(&heuristics->second); @@ -91,7 +93,7 @@ void ExtensionsQuotaService::PurgeFunctionHeuristicsMap( } } -void ExtensionsQuotaService::Purge() { +void QuotaService::Purge() { DCHECK(CalledOnValidThread()); std::map<std::string, FunctionHeuristicsMap>::iterator it = function_heuristics_.begin(); @@ -100,7 +102,7 @@ void ExtensionsQuotaService::Purge() { } void QuotaLimitHeuristic::Bucket::Reset(const Config& config, - const base::TimeTicks& start) { + const base::TimeTicks& start) { num_tokens_ = config.refill_token_count; expiration_ = start + config.refill_interval; } @@ -114,13 +116,12 @@ void QuotaLimitHeuristic::SingletonBucketMapper::GetBucketsForArgs( QuotaLimitHeuristic::QuotaLimitHeuristic(const Config& config, BucketMapper* map, const std::string& name) - : config_(config), bucket_mapper_(map), name_(name) { -} + : config_(config), bucket_mapper_(map), name_(name) {} QuotaLimitHeuristic::~QuotaLimitHeuristic() {} bool QuotaLimitHeuristic::ApplyToArgs(const base::ListValue* args, - const base::TimeTicks& event_time) { + const base::TimeTicks& event_time) { BucketList buckets; bucket_mapper_->GetBucketsForArgs(args, &buckets); for (BucketList::iterator i = buckets.begin(); i != buckets.end(); ++i) { @@ -136,27 +137,25 @@ std::string QuotaLimitHeuristic::GetError() const { return extensions::ErrorUtils::FormatErrorMessage(kOverQuotaError, name_); } -ExtensionsQuotaService::SustainedLimit::SustainedLimit( - const base::TimeDelta& sustain, - const Config& config, - BucketMapper* map, - const std::string& name) +QuotaService::SustainedLimit::SustainedLimit(const base::TimeDelta& sustain, + const Config& config, + BucketMapper* map, + const std::string& name) : QuotaLimitHeuristic(config, map, name), repeat_exhaustion_allowance_(sustain.InSeconds() / config.refill_interval.InSeconds()), - num_available_repeat_exhaustions_(repeat_exhaustion_allowance_) { -} + num_available_repeat_exhaustions_(repeat_exhaustion_allowance_) {} -bool ExtensionsQuotaService::TimedLimit::Apply(Bucket* bucket, - const base::TimeTicks& event_time) { +bool QuotaService::TimedLimit::Apply(Bucket* bucket, + const base::TimeTicks& event_time) { if (event_time > bucket->expiration()) bucket->Reset(config(), event_time); return bucket->DeductToken(); } -bool ExtensionsQuotaService::SustainedLimit::Apply(Bucket* bucket, - const base::TimeTicks& event_time) { +bool QuotaService::SustainedLimit::Apply(Bucket* bucket, + const base::TimeTicks& event_time) { if (event_time > bucket->expiration()) { // We reset state for this item and start over again if this request breaks // the bad cycle that was previously being tracked. This occurs if the @@ -166,8 +165,8 @@ bool ExtensionsQuotaService::SustainedLimit::Apply(Bucket* bucket, // than 1 full refill interval away from the last event (so even if we used // up all the tokens in the last bucket, nothing happened in the entire // next refill interval, so it doesn't matter). - if (bucket->has_tokens() || event_time > bucket->expiration() + - config().refill_interval) { + if (bucket->has_tokens() || + event_time > bucket->expiration() + config().refill_interval) { bucket->Reset(config(), event_time); num_available_repeat_exhaustions_ = repeat_exhaustion_allowance_; } else if (--num_available_repeat_exhaustions_ > 0) { @@ -189,3 +188,5 @@ bool ExtensionsQuotaService::SustainedLimit::Apply(Bucket* bucket, bucket->DeductToken(); return true; } + +} // namespace extensions diff --git a/chrome/browser/extensions/extensions_quota_service.h b/extensions/browser/quota_service.h index 5644397..8dacb95 100644 --- a/chrome/browser/extensions/extensions_quota_service.h +++ b/extensions/browser/quota_service.h @@ -1,8 +1,8 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// The ExtensionsQuotaService uses heuristics to limit abusive requests +// The QuotaService uses heuristics to limit abusive requests // made by extensions. In this model 'items' (e.g individual bookmarks) are // represented by a 'Bucket' that holds state for that item for one single // interval of time. The interval of time is defined as 'how long we need to @@ -11,8 +11,8 @@ // arguments to a unique Bucket (the BucketMapper), and another to determine // if a new request involving such an item at a given time is a violation. -#ifndef CHROME_BROWSER_EXTENSIONS_EXTENSIONS_QUOTA_SERVICE_H_ -#define CHROME_BROWSER_EXTENSIONS_EXTENSIONS_QUOTA_SERVICE_H_ +#ifndef EXTENSIONS_BROWSER_QUOTA_SERVICE_H_ +#define EXTENSIONS_BROWSER_QUOTA_SERVICE_H_ #include <list> #include <map> @@ -27,28 +27,28 @@ #include "base/values.h" class ExtensionFunction; -class QuotaLimitHeuristic; -typedef std::list<QuotaLimitHeuristic*> QuotaLimitHeuristics; namespace extensions { +class QuotaLimitHeuristic; class TestResetQuotaFunction; -} -// The ExtensionsQuotaService takes care that calls to certain extension +typedef std::list<QuotaLimitHeuristic*> QuotaLimitHeuristics; + +// The QuotaService takes care that calls to certain extension // functions do not exceed predefined quotas. // -// The ExtensionsQuotaService needs to live entirely on one thread, i.e. +// The QuotaService needs to live entirely on one thread, i.e. // be created, called and destroyed on the same thread, due to its use // of a RepeatingTimer. -class ExtensionsQuotaService : public base::NonThreadSafe { +class QuotaService : public base::NonThreadSafe { public: // Some concrete heuristics (declared below) that ExtensionFunctions can // use to help the service make decisions about quota violations. class TimedLimit; class SustainedLimit; - ExtensionsQuotaService(); - virtual ~ExtensionsQuotaService(); + QuotaService(); + virtual ~QuotaService(); // Decide whether the invocation of |function| with argument |args| by the // extension specified by |extension_id| results in a quota limit violation. @@ -74,7 +74,7 @@ class ExtensionsQuotaService : public base::NonThreadSafe { // converge to the correct set. void Purge(); void PurgeFunctionHeuristicsMap(FunctionHeuristicsMap* map); - base::RepeatingTimer<ExtensionsQuotaService> purge_timer_; + base::RepeatingTimer<QuotaService> purge_timer_; // Our quota tracking state for extensions that have invoked quota limited // functions. Each extension is treated separately, so extension ids are the @@ -89,7 +89,7 @@ class ExtensionsQuotaService : public base::NonThreadSafe { typedef std::map<std::string, std::string> ViolationErrorMap; ViolationErrorMap violation_errors_; - DISALLOW_COPY_AND_ASSIGN(ExtensionsQuotaService); + DISALLOW_COPY_AND_ASSIGN(QuotaService); }; // A QuotaLimitHeuristic is two things: 1, A heuristic to map extension @@ -134,6 +134,7 @@ class QuotaLimitHeuristic { // The time at which the token count and next expiration should be reset, // via a call to Reset. const base::TimeTicks& expiration() { return expiration_; } + private: base::TimeTicks expiration_; int64 num_tokens_; @@ -209,7 +210,7 @@ class QuotaLimitHeuristic { // A simple per-item heuristic to limit the number of events that can occur in // a given period of time; e.g "no more than 100 events in an hour". -class ExtensionsQuotaService::TimedLimit : public QuotaLimitHeuristic { +class QuotaService::TimedLimit : public QuotaLimitHeuristic { public: TimedLimit(const Config& config, BucketMapper* map, const std::string& name) : QuotaLimitHeuristic(config, map, name) {} @@ -220,7 +221,7 @@ class ExtensionsQuotaService::TimedLimit : public QuotaLimitHeuristic { // A per-item heuristic to limit the number of events that can occur in a // period of time over a sustained longer interval. E.g "no more than two // events per minute, sustained over 10 minutes". -class ExtensionsQuotaService::SustainedLimit : public QuotaLimitHeuristic { +class QuotaService::SustainedLimit : public QuotaLimitHeuristic { public: SustainedLimit(const base::TimeDelta& sustain, const Config& config, @@ -228,6 +229,7 @@ class ExtensionsQuotaService::SustainedLimit : public QuotaLimitHeuristic { const std::string& name); virtual bool Apply(Bucket* bucket, const base::TimeTicks& event_time) OVERRIDE; + private: // Specifies how long exhaustion of buckets is allowed to continue before // denying requests. @@ -235,4 +237,6 @@ class ExtensionsQuotaService::SustainedLimit : public QuotaLimitHeuristic { int64 num_available_repeat_exhaustions_; }; -#endif // CHROME_BROWSER_EXTENSIONS_EXTENSIONS_QUOTA_SERVICE_H_ +} // namespace extensions + +#endif // EXTENSIONS_BROWSER_QUOTA_SERVICE_H_ diff --git a/chrome/browser/extensions/extensions_quota_service_unittest.cc b/extensions/browser/quota_service_unittest.cc index a0438ff..ee3316a 100644 --- a/chrome/browser/extensions/extensions_quota_service_unittest.cc +++ b/extensions/browser/quota_service_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -7,26 +7,28 @@ #include "base/stl_util.h" #include "base/strings/string_util.h" #include "chrome/browser/extensions/extension_function.h" -#include "chrome/browser/extensions/extensions_quota_service.h" #include "content/public/test/test_browser_thread.h" +#include "extensions/browser/quota_service.h" #include "testing/gtest/include/gtest/gtest.h" using base::TimeDelta; using base::TimeTicks; using content::BrowserThread; +namespace extensions { + typedef QuotaLimitHeuristic::Bucket Bucket; typedef QuotaLimitHeuristic::Config Config; typedef QuotaLimitHeuristic::BucketList BucketList; -typedef ExtensionsQuotaService::TimedLimit TimedLimit; -typedef ExtensionsQuotaService::SustainedLimit SustainedLimit; +typedef QuotaService::TimedLimit TimedLimit; +typedef QuotaService::SustainedLimit SustainedLimit; namespace { const char kGenericName[] = "name"; -const Config kFrozenConfig = { 0, TimeDelta::FromDays(0) }; -const Config k2PerMinute = { 2, TimeDelta::FromMinutes(1) }; -const Config k20PerHour = { 20, TimeDelta::FromHours(1) }; +const Config kFrozenConfig = {0, TimeDelta::FromDays(0)}; +const Config k2PerMinute = {2, TimeDelta::FromMinutes(1)}; +const Config k20PerHour = {20, TimeDelta::FromHours(1)}; const TimeTicks kStartTime = TimeTicks(); const TimeTicks k1MinuteAfterStart = kStartTime + TimeDelta::FromMinutes(1); @@ -44,6 +46,7 @@ class Mapper : public QuotaLimitHeuristic::BucketMapper { buckets->push_back(buckets_[id]); } } + private: typedef std::map<int, Bucket*> BucketMap; BucketMap buckets_; @@ -53,8 +56,7 @@ class Mapper : public QuotaLimitHeuristic::BucketMapper { class MockMapper : public QuotaLimitHeuristic::BucketMapper { public: virtual void GetBucketsForArgs(const base::ListValue* args, - BucketList* buckets) OVERRIDE { - } + BucketList* buckets) OVERRIDE {} }; class MockFunction : public ExtensionFunction { @@ -67,7 +69,7 @@ class MockFunction : public ExtensionFunction { virtual void Run() OVERRIDE {} virtual void Destruct() const OVERRIDE { delete this; } virtual bool RunImpl() OVERRIDE { return true; } - virtual void SendResponse(bool) OVERRIDE { } + virtual void SendResponse(bool) OVERRIDE {} protected: virtual ~MockFunction() {} @@ -77,8 +79,8 @@ class TimedLimitMockFunction : public MockFunction { public: explicit TimedLimitMockFunction(const std::string& name) : MockFunction(name) {} - virtual void GetQuotaLimitHeuristics( - QuotaLimitHeuristics* heuristics) const OVERRIDE { + virtual void GetQuotaLimitHeuristics(QuotaLimitHeuristics* heuristics) const + OVERRIDE { heuristics->push_back( new TimedLimit(k2PerMinute, new Mapper(), kGenericName)); } @@ -91,8 +93,8 @@ class ChainedLimitsMockFunction : public MockFunction { public: explicit ChainedLimitsMockFunction(const std::string& name) : MockFunction(name) {} - virtual void GetQuotaLimitHeuristics( - QuotaLimitHeuristics* heuristics) const OVERRIDE { + virtual void GetQuotaLimitHeuristics(QuotaLimitHeuristics* heuristics) const + OVERRIDE { // No more than 2 per minute sustained over 5 minutes. heuristics->push_back(new SustainedLimit( TimeDelta::FromMinutes(5), k2PerMinute, new Mapper(), kGenericName)); @@ -108,8 +110,8 @@ class ChainedLimitsMockFunction : public MockFunction { class FrozenMockFunction : public MockFunction { public: explicit FrozenMockFunction(const std::string& name) : MockFunction(name) {} - virtual void GetQuotaLimitHeuristics( - QuotaLimitHeuristics* heuristics) const OVERRIDE { + virtual void GetQuotaLimitHeuristics(QuotaLimitHeuristics* heuristics) const + OVERRIDE { heuristics->push_back( new TimedLimit(kFrozenConfig, new Mapper(), kGenericName)); } @@ -119,27 +121,25 @@ class FrozenMockFunction : public MockFunction { }; } // namespace -class ExtensionsQuotaServiceTest : public testing::Test { +class QuotaServiceTest : public testing::Test { public: - ExtensionsQuotaServiceTest() + QuotaServiceTest() : extension_a_("a"), extension_b_("b"), extension_c_("c"), loop_(), - ui_thread_(BrowserThread::UI, &loop_) { - } - virtual void SetUp() { - service_.reset(new ExtensionsQuotaService()); - } + ui_thread_(BrowserThread::UI, &loop_) {} + virtual void SetUp() { service_.reset(new QuotaService()); } virtual void TearDown() { loop_.RunUntilIdle(); service_.reset(); } + protected: std::string extension_a_; std::string extension_b_; std::string extension_c_; - scoped_ptr<ExtensionsQuotaService> service_; + scoped_ptr<QuotaService> service_; base::MessageLoop loop_; content::TestBrowserThread ui_thread_; }; @@ -180,7 +180,7 @@ TEST_F(QuotaLimitHeuristicTest, Timed) { EXPECT_TRUE(b.has_tokens()); EXPECT_TRUE(lim.Apply(&b, kStartTime + TimeDelta::FromSeconds(30))); EXPECT_FALSE(b.has_tokens()); - EXPECT_FALSE(lim.Apply(&b, k1MinuteAfterStart)); + EXPECT_FALSE(lim.Apply(&b, k1MinuteAfterStart)); b.Reset(k2PerMinute, kStartTime); EXPECT_TRUE(lim.Apply(&b, k1MinuteAfterStart - TimeDelta::FromSeconds(1))); @@ -215,20 +215,20 @@ TEST_F(QuotaLimitHeuristicTest, Sustained) { EXPECT_TRUE(lim.Apply(&bucket, kStartTime + TimeDelta::FromMinutes(6))); } -TEST_F(ExtensionsQuotaServiceTest, NoHeuristic) { +TEST_F(QuotaServiceTest, NoHeuristic) { scoped_refptr<MockFunction> f(new MockFunction("foo")); base::ListValue args; EXPECT_EQ("", service_->Assess(extension_a_, f.get(), &args, kStartTime)); } -TEST_F(ExtensionsQuotaServiceTest, FrozenHeuristic) { +TEST_F(QuotaServiceTest, FrozenHeuristic) { scoped_refptr<MockFunction> f(new FrozenMockFunction("foo")); base::ListValue args; args.Append(new base::FundamentalValue(1)); EXPECT_NE("", service_->Assess(extension_a_, f.get(), &args, kStartTime)); } -TEST_F(ExtensionsQuotaServiceTest, SingleHeuristic) { +TEST_F(QuotaServiceTest, SingleHeuristic) { scoped_refptr<MockFunction> f(new TimedLimitMockFunction("foo")); base::ListValue args; args.Append(new base::FundamentalValue(1)); @@ -299,7 +299,7 @@ TEST_F(ExtensionsQuotaServiceTest, SingleHeuristic) { kStartTime + TimeDelta::FromSeconds(30))); } -TEST_F(ExtensionsQuotaServiceTest, ChainedHeuristics) { +TEST_F(QuotaServiceTest, ChainedHeuristics) { scoped_refptr<MockFunction> f(new ChainedLimitsMockFunction("foo")); base::ListValue args; args.Append(new base::FundamentalValue(1)); @@ -352,7 +352,7 @@ TEST_F(ExtensionsQuotaServiceTest, ChainedHeuristics) { kStartTime + TimeDelta::FromMinutes(6))); } -TEST_F(ExtensionsQuotaServiceTest, MultipleFunctionsDontInterfere) { +TEST_F(QuotaServiceTest, MultipleFunctionsDontInterfere) { scoped_refptr<MockFunction> f(new TimedLimitMockFunction("foo")); scoped_refptr<MockFunction> g(new TimedLimitMockFunction("bar")); @@ -385,7 +385,7 @@ TEST_F(ExtensionsQuotaServiceTest, MultipleFunctionsDontInterfere) { kStartTime + TimeDelta::FromSeconds(15))); } -TEST_F(ExtensionsQuotaServiceTest, ViolatorsWillBeViolators) { +TEST_F(QuotaServiceTest, ViolatorsWillBeViolators) { scoped_refptr<MockFunction> f(new TimedLimitMockFunction("foo")); scoped_refptr<MockFunction> g(new TimedLimitMockFunction("bar")); base::ListValue arg; @@ -413,3 +413,5 @@ TEST_F(ExtensionsQuotaServiceTest, ViolatorsWillBeViolators) { service_->Assess( extension_a_, g.get(), &arg, kStartTime + TimeDelta::FromDays(1))); } + +} // namespace extensions diff --git a/extensions/extensions.gyp b/extensions/extensions.gyp index e68bc44..1d438cb 100644 --- a/extensions/extensions.gyp +++ b/extensions/extensions.gyp @@ -147,6 +147,8 @@ 'browser/extension_error.h', 'browser/extensions_browser_client.cc', 'browser/extensions_browser_client.h', + 'browser/info_map.cc', + 'browser/info_map.h', 'browser/file_highlighter.cc', 'browser/file_highlighter.h', 'browser/file_reader.cc', @@ -155,6 +157,8 @@ 'browser/lazy_background_task_queue.h', 'browser/pref_names.cc', 'browser/pref_names.h', + 'browser/quota_service.cc', + 'browser/quota_service.h', 'browser/view_type_utils.cc', 'browser/view_type_utils.h', ], |