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
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 f74cfa4a..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 3eca2254..4f1ee2f4 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::WebContents;
using extensions::APIPermission;
using extensions::Extension;
+using extensions::InfoMap;
using extensions::Manifest;
using message_center::NotifierId;
@@ -1267,8 +1268,9 @@
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 @@
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 @@
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 @@
// 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 @@
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 @@
*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 25a5d7f5..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 @@
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..6254a411 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 @@
// 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..c752ebba 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 @@
// 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 @@
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 07fa95c8..5deef02a 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 @@
namespace extensions {
class Extension;
+class InfoMap;
struct WebRequestData;
}
@@ -83,7 +83,7 @@
// 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 @@
// 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 @@
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 @@
"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::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..336c4845 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 @@
// 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 @@
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 @@
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 @@
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 @@
// |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 @@
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..1d6b3611 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 @@
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 @@
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 @@
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::ExtensionWarning;
using extensions::ExtensionWarningService;
using extensions::ExtensionWarningSet;
+using extensions::InfoMap;
using extensions::Feature;
using extensions::web_navigation_api_helpers::GetFrameId;
@@ -144,7 +145,7 @@
// 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 @@
// 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 @@
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::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 @@
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 @@
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 @@
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 @@
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::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 @@
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::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 @@
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 @@
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 @@
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 @@
// 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 @@
}
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 @@
}
namespace extensions {
+class InfoMap;
class WebRequestRulesRegistry;
}
@@ -145,7 +145,7 @@
// 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 @@
// 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 @@
// 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 @@
// 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 @@
// 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 @@
// 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 @@
// 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 @@
// 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 @@
// 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::TimeDelta;
using base::Value;
using chrome::VersionInfo;
-using extensions::Feature;
using helpers::CalculateOnAuthRequiredDelta;
using helpers::CalculateOnBeforeRequestDelta;
using helpers::CalculateOnBeforeSendHeadersDelta;
@@ -209,7 +208,7 @@
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 @@
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 @@
// 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 @@
// 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 6ff0f431..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 @@
};
// 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 a0eb5e7d..1157807c 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 @@
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 @@
"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 ExtensionFunctionDispatcher;
class UIThreadExtensionFunction;
class IOThreadExtensionFunction;
-class QuotaLimitHeuristic;
namespace base {
class ListValue;
@@ -40,6 +39,10 @@
class WebContents;
}
+namespace extensions {
+class QuotaLimitHeuristic;
+}
+
#ifdef NDEBUG
#define EXTENSION_FUNCTION_VALIDATE(test) do { \
if (!(test)) { \
@@ -127,9 +130,9 @@
// 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 @@
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 @@
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 9fc3be3a..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 @@
// 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 @@
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 @@
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 @@
namespace extensions {
class Extension;
class ExtensionAPI;
+class InfoMap;
class ProcessMap;
class WindowController;
}
@@ -85,7 +85,7 @@
// 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_info_map.cc b/chrome/browser/extensions/extension_info_map.cc
deleted file mode 100644
index 4d4fb22..0000000
--- a/chrome/browser/extensions/extension_info_map.cc
+++ /dev/null
@@ -1,185 +0,0 @@
-// Copyright (c) 2012 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 "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 {
-
-void CheckOnValidThread() {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
-}
-
-} // namespace
-
-struct ExtensionInfoMap::ExtraData {
- // When the extension was installed.
- base::Time install_time;
-
- // True if the user has allowed this extension to run in incognito mode.
- bool incognito_enabled;
-
- ExtraData();
- ~ExtraData();
-};
-
-ExtensionInfoMap::ExtraData::ExtraData() : incognito_enabled(false) {}
-
-ExtensionInfoMap::ExtraData::~ExtraData() {}
-
-ExtensionInfoMap::ExtensionInfoMap() : signin_process_id_(-1) {}
-
-const extensions::ProcessMap& ExtensionInfoMap::process_map() const {
- return process_map_;
-}
-
-void ExtensionInfoMap::AddExtension(const Extension* extension,
- base::Time install_time,
- bool incognito_enabled) {
- CheckOnValidThread();
- extensions_.Insert(extension);
- disabled_extensions_.Remove(extension->id());
-
- extra_data_[extension->id()].install_time = install_time;
- extra_data_[extension->id()].incognito_enabled = incognito_enabled;
-}
-
-void ExtensionInfoMap::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
- bool was_uninstalled = (reason != UnloadedExtensionInfo::REASON_DISABLE &&
- reason != UnloadedExtensionInfo::REASON_TERMINATE);
- if (extension) {
- if (!was_uninstalled)
- disabled_extensions_.Insert(extension);
- extensions_.Remove(extension_id);
- } else if (was_uninstalled) {
- // If the extension was uninstalled, make sure it's removed from the map of
- // disabled extensions.
- disabled_extensions_.Remove(extension_id);
- } else {
- // NOTE: This can currently happen if we receive multiple unload
- // notifications, e.g. setting incognito-enabled state for a
- // disabled extension (e.g., via sync). See
- // http://code.google.com/p/chromium/issues/detail?id=50582 .
- NOTREACHED() << extension_id;
- }
-}
-
-base::Time ExtensionInfoMap::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 {
- // Keep in sync with duplicate in extension_process_manager.cc.
- ExtraDataMap::const_iterator iter = extra_data_.find(extension_id);
- if (iter != extra_data_.end())
- return iter->second.incognito_enabled;
- return false;
-}
-
-bool ExtensionInfoMap::CanCrossIncognito(const Extension* extension) const {
- // This is duplicated from ExtensionService :(.
- return IsIncognitoEnabled(extension->id()) &&
- !extensions::IncognitoInfo::IsSplitMode(extension);
-}
-
-void ExtensionInfoMap::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) {
- 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) {
- process_map_.RemoveAllFromProcess(process_id);
-}
-
-void ExtensionInfoMap::GetExtensionsWithAPIPermissionForSecurityOrigin(
- const GURL& origin,
- int process_id,
- extensions::APIPermission::ID permission,
- ExtensionSet* extensions) const {
- DCHECK(extensions);
-
- if (origin.SchemeIs(extensions::kExtensionScheme)) {
- const std::string& id = origin.host();
- const Extension* extension = extensions_.GetByID(id);
- if (extension && extension->HasAPIPermission(permission) &&
- process_map_.Contains(id, process_id)) {
- extensions->Insert(extension);
- }
- return;
- }
-
- ExtensionSet::const_iterator i = extensions_.begin();
- for (; i != extensions_.end(); ++i) {
- if ((*i)->web_extent().MatchesSecurityOrigin(origin) &&
- process_map_.Contains((*i)->id(), process_id) &&
- (*i)->HasAPIPermission(permission)) {
- extensions->Insert(*i);
- }
- }
-}
-
-bool ExtensionInfoMap::SecurityOriginHasAPIPermission(
- const GURL& origin, int process_id,
- extensions::APIPermission::ID permission) const {
- ExtensionSet extensions;
- GetExtensionsWithAPIPermissionForSecurityOrigin(
- origin, process_id, permission, &extensions);
- return !extensions.is_empty();
-}
-
-ExtensionsQuotaService* ExtensionInfoMap::GetQuotaService() {
- CheckOnValidThread();
- if (!quota_service_)
- quota_service_.reset(new ExtensionsQuotaService());
- return quota_service_.get();
-}
-
-void ExtensionInfoMap::SetSigninProcess(int process_id) {
- signin_process_id_ = process_id;
-}
-
-bool ExtensionInfoMap::IsSigninProcess(int process_id) const {
- return process_id == signin_process_id_;
-}
-
-ExtensionInfoMap::~ExtensionInfoMap() {
- if (quota_service_) {
- BrowserThread::DeleteSoon(BrowserThread::IO, FROM_HERE,
- quota_service_.release());
- }
-}
diff --git a/chrome/browser/extensions/extension_info_map.h b/chrome/browser/extensions/extension_info_map.h
deleted file mode 100644
index 53c04f5..0000000
--- a/chrome/browser/extensions/extension_info_map.h
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright (c) 2012 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_
-
-#include <string>
-
-#include "base/basictypes.h"
-#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"
-
-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> {
- public:
- ExtensionInfoMap();
-
- const ExtensionSet& extensions() const { return extensions_; }
- const ExtensionSet& disabled_extensions() const {
- return disabled_extensions_;
- }
-
- const extensions::ProcessMap& process_map() const;
-
- // Callback for when new extensions are loaded.
- void AddExtension(const extensions::Extension* extension,
- base::Time install_time,
- bool incognito_enabled);
-
- // Callback for when an extension is unloaded.
- void RemoveExtension(const std::string& extension_id,
- const extensions::UnloadedExtensionInfo::Reason reason);
-
- // Returns the time the extension was installed, or base::Time() if not found.
- base::Time GetInstallTime(const std::string& extension_id) const;
-
- // Returns true if the user has allowed this extension to run in incognito
- // mode.
- bool IsIncognitoEnabled(const std::string& extension_id) const;
-
- // Returns true if the given extension can see events and data from another
- // sub-profile (incognito to original profile, or vice versa).
- bool CanCrossIncognito(const extensions::Extension* extension) const;
-
- // Adds an entry to process_map_.
- void RegisterExtensionProcess(const std::string& extension_id,
- int process_id,
- int site_instance_id);
-
- // Removes an entry from process_map_.
- void UnregisterExtensionProcess(const std::string& extension_id,
- int process_id,
- int site_instance_id);
- void UnregisterAllExtensionsInProcess(int process_id);
-
- // Returns the subset of extensions which has the same |origin| in
- // |process_id| with the specified |permission|.
- void GetExtensionsWithAPIPermissionForSecurityOrigin(
- const GURL& origin,
- int process_id,
- extensions::APIPermission::ID permission,
- ExtensionSet* extensions) const;
-
- // 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;
-
- ExtensionsQuotaService* GetQuotaService();
-
- // Keep track of the signin process, so we can restrict extension access to
- // it.
- void SetSigninProcess(int process_id);
- bool IsSigninProcess(int process_id) const;
-
- private:
- friend class base::RefCountedThreadSafe<ExtensionInfoMap>;
-
- // Extra dynamic data related to an extension.
- struct ExtraData;
- // Map of extension_id to ExtraData.
- typedef std::map<std::string, ExtraData> ExtraDataMap;
-
- ~ExtensionInfoMap();
-
- ExtensionSet extensions_;
- ExtensionSet disabled_extensions_;
-
- // Extra data associated with enabled extensions.
- 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_;
-
- // Assignment of extensions to processes.
- extensions::ProcessMap process_map_;
-
- int signin_process_id_;
-};
-
-#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_INFO_MAP_H_
diff --git a/chrome/browser/extensions/extension_info_map_unittest.cc b/chrome/browser/extensions/extension_info_map_unittest.cc
deleted file mode 100644
index dac4e0aa..0000000
--- a/chrome/browser/extensions/extension_info_map_unittest.cc
+++ /dev/null
@@ -1,170 +0,0 @@
-// Copyright (c) 2012 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/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 {
-
-class ExtensionInfoMapTest : public testing::Test {
- public:
- ExtensionInfoMapTest()
- : ui_thread_(BrowserThread::UI, &message_loop_),
- io_thread_(BrowserThread::IO, &message_loop_) {
- }
-
- private:
- base::MessageLoop message_loop_;
- content::TestBrowserThread ui_thread_;
- content::TestBrowserThread io_thread_;
-};
-
-// Returns a barebones test Extension object with the given name.
-static scoped_refptr<Extension> CreateExtension(const std::string& name) {
-#if defined(OS_WIN)
- base::FilePath path(FILE_PATH_LITERAL("c:\\foo"));
-#elif defined(OS_POSIX)
- base::FilePath path(FILE_PATH_LITERAL("/foo"));
-#endif
-
- DictionaryValue manifest;
- manifest.SetString(keys::kVersion, "1.0.0.0");
- 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);
- EXPECT_TRUE(extension.get()) << error;
-
- return extension;
-}
-
-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);
-
- JSONFileValueSerializer serializer(path);
- scoped_ptr<Value> result(serializer.Deserialize(NULL, NULL));
- if (!result)
- return NULL;
-
- std::string 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());
-
- // New extensions should have a single reference holding onto them.
- scoped_refptr<Extension> extension1(CreateExtension("extension1"));
- scoped_refptr<Extension> extension2(CreateExtension("extension2"));
- scoped_refptr<Extension> extension3(CreateExtension("extension3"));
- EXPECT_TRUE(extension1->HasOneRef());
- EXPECT_TRUE(extension2->HasOneRef());
- EXPECT_TRUE(extension3->HasOneRef());
-
- // Add a ref to each extension and give it to the info map.
- info_map->AddExtension(extension1.get(), base::Time(), false);
- info_map->AddExtension(extension2.get(), base::Time(), false);
- info_map->AddExtension(extension3.get(), base::Time(), false);
-
- // Release extension1, and the info map should have the only ref.
- const Extension* weak_extension1 = extension1.get();
- extension1 = NULL;
- EXPECT_TRUE(weak_extension1->HasOneRef());
-
- // Remove extension2, and the extension2 object should have the only ref.
- info_map->RemoveExtension(
- extension2->id(), extensions::UnloadedExtensionInfo::REASON_UNINSTALL);
- EXPECT_TRUE(extension2->HasOneRef());
-
- // Delete the info map, and the extension3 object should have the only ref.
- info_map = NULL;
- 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());
-
- scoped_refptr<Extension> extension1(CreateExtension("extension1"));
- scoped_refptr<Extension> extension2(CreateExtension("extension2"));
-
- info_map->AddExtension(extension1.get(), base::Time(), false);
- info_map->AddExtension(extension2.get(), base::Time(), false);
-
- EXPECT_EQ(2u, info_map->extensions().size());
- EXPECT_EQ(extension1.get(), info_map->extensions().GetByID(extension1->id()));
- EXPECT_EQ(extension2.get(), info_map->extensions().GetByID(extension2->id()));
-}
-
-// Tests CheckURLAccessToExtensionPermission given both extension and app URLs.
-TEST_F(ExtensionInfoMapTest, CheckPermissions) {
- scoped_refptr<ExtensionInfoMap> info_map(new ExtensionInfoMap());
-
- 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());
- ASSERT_TRUE(app->web_extent().MatchesURL(app_url));
-
- info_map->AddExtension(app.get(), base::Time(), false);
- info_map->AddExtension(extension.get(), base::Time(), false);
-
- // The app should have the notifications permission, either from a
- // 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));
- match = info_map->extensions().GetExtensionOrAppByURL(app_url);
- 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));
-
- // Random URL should not have any permissions.
- GURL evil_url("http://evil.com/a.html");
- match = info_map->extensions().GetExtensionOrAppByURL(evil_url);
- EXPECT_FALSE(match);
-}
-
-} // namespace
diff --git a/chrome/browser/extensions/extension_protocols.cc b/chrome/browser/extensions/extension_protocols.cc
index c638672e..13824e4d 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 @@
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 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 @@
: 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 @@
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 @@
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..1cc8f1c3 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 @@
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 @@
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 5dbc562b..51954a7e 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -2547,8 +2547,9 @@
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 @@
// 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 @@
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 b7099d28..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 @@
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 @@
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 @@
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 @@
}
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 ExtensionSystemSharedFactory;
class ExtensionWarningBadgeService;
class ExtensionWarningService;
+class InfoMap;
class LazyBackgroundTaskQueue;
class ManagementPolicy;
class NavigationObserver;
@@ -94,7 +94,7 @@
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 @@
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 @@
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 @@
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/extensions_quota_service.cc b/chrome/browser/extensions/extensions_quota_service.cc
deleted file mode 100644
index 830c93a..0000000
--- a/chrome/browser/extensions/extensions_quota_service.cc
+++ /dev/null
@@ -1,191 +0,0 @@
-// Copyright (c) 2012 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 "base/message_loop/message_loop.h"
-#include "base/stl_util.h"
-#include "chrome/browser/extensions/extension_function.h"
-#include "extensions/common/error_utils.h"
-
-namespace {
-
-// If the browser stays open long enough, we reset state once a day.
-// Whatever this value is, it should be an order of magnitude longer than
-// the longest interval in any of the QuotaLimitHeuristics in use.
-const int kPurgeIntervalInDays = 1;
-
-const char kOverQuotaError[] = "This request exceeds the * quota.";
-
-} // namespace
-
-ExtensionsQuotaService::ExtensionsQuotaService() {
- if (base::MessageLoop::current() != NULL) { // Null in unit tests.
- purge_timer_.Start(FROM_HERE,
- base::TimeDelta::FromDays(kPurgeIntervalInDays),
- this, &ExtensionsQuotaService::Purge);
- }
-}
-
-ExtensionsQuotaService::~ExtensionsQuotaService() {
- 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) {
- DCHECK(CalledOnValidThread());
-
- if (function->ShouldSkipQuotaLimiting())
- return std::string();
-
- // Lookup function list for extension.
- FunctionHeuristicsMap& functions = function_heuristics_[extension_id];
-
- // Lookup heuristics for function, create if necessary.
- QuotaLimitHeuristics& heuristics = functions[function->name()];
- if (heuristics.empty())
- function->GetQuotaLimitHeuristics(&heuristics);
-
- if (heuristics.empty())
- return std::string(); // No heuristic implies no limit.
-
- ViolationErrorMap::iterator violation_error =
- violation_errors_.find(extension_id);
- if (violation_error != violation_errors_.end())
- return violation_error->second; // Repeat offender.
-
- QuotaLimitHeuristic* failed_heuristic = NULL;
- for (QuotaLimitHeuristics::iterator heuristic = heuristics.begin();
- heuristic != heuristics.end(); ++heuristic) {
- // Apply heuristic to each item (bucket).
- if (!(*heuristic)->ApplyToArgs(args, event_time)) {
- failed_heuristic = *heuristic;
- break;
- }
- }
-
- if (!failed_heuristic)
- return std::string();
-
- std::string error = failed_heuristic->GetError();
- DCHECK_GT(error.length(), 0u);
-
- PurgeFunctionHeuristicsMap(&functions);
- function_heuristics_.erase(extension_id);
- violation_errors_[extension_id] = error;
- return error;
-}
-
-void ExtensionsQuotaService::PurgeFunctionHeuristicsMap(
- FunctionHeuristicsMap* map) {
- FunctionHeuristicsMap::iterator heuristics = map->begin();
- while (heuristics != map->end()) {
- STLDeleteElements(&heuristics->second);
- map->erase(heuristics++);
- }
-}
-
-void ExtensionsQuotaService::Purge() {
- DCHECK(CalledOnValidThread());
- std::map<std::string, FunctionHeuristicsMap>::iterator it =
- function_heuristics_.begin();
- for (; it != function_heuristics_.end(); function_heuristics_.erase(it++))
- PurgeFunctionHeuristicsMap(&it->second);
-}
-
-void QuotaLimitHeuristic::Bucket::Reset(const Config& config,
- const base::TimeTicks& start) {
- num_tokens_ = config.refill_token_count;
- expiration_ = start + config.refill_interval;
-}
-
-void QuotaLimitHeuristic::SingletonBucketMapper::GetBucketsForArgs(
- const base::ListValue* args,
- BucketList* buckets) {
- buckets->push_back(&bucket_);
-}
-
-QuotaLimitHeuristic::QuotaLimitHeuristic(const Config& config,
- BucketMapper* map,
- const std::string& name)
- : config_(config), bucket_mapper_(map), name_(name) {
-}
-
-QuotaLimitHeuristic::~QuotaLimitHeuristic() {}
-
-bool QuotaLimitHeuristic::ApplyToArgs(const base::ListValue* args,
- const base::TimeTicks& event_time) {
- BucketList buckets;
- bucket_mapper_->GetBucketsForArgs(args, &buckets);
- for (BucketList::iterator i = buckets.begin(); i != buckets.end(); ++i) {
- if ((*i)->expiration().is_null()) // A brand new bucket.
- (*i)->Reset(config_, event_time);
- if (!Apply(*i, event_time))
- return false; // It only takes one to spoil it for everyone.
- }
- return true;
-}
-
-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)
- : QuotaLimitHeuristic(config, map, name),
- repeat_exhaustion_allowance_(sustain.InSeconds() /
- config.refill_interval.InSeconds()),
- num_available_repeat_exhaustions_(repeat_exhaustion_allowance_) {
-}
-
-bool ExtensionsQuotaService::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) {
- 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
- // state in the bucket expired recently (it has been long enough since the
- // event that we don't care about the last event), but the bucket still has
- // tokens (so pressure was not sustained over that time), OR we are more
- // 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) {
- bucket->Reset(config(), event_time);
- num_available_repeat_exhaustions_ = repeat_exhaustion_allowance_;
- } else if (--num_available_repeat_exhaustions_ > 0) {
- // The last interval was saturated with requests, and this is the first
- // event in the next interval. If this happens
- // repeat_exhaustion_allowance_ times, it's a violation. Reset the bucket
- // state to start timing from the end of the last interval (and we'll
- // deduct the token below) so we can detect this each time it happens.
- bucket->Reset(config(), bucket->expiration());
- } else {
- // No allowances left; this request is a violation.
- return false;
- }
- }
-
- // We can go negative since we check has_tokens when we get to *next* bucket,
- // and for the small interval all that matters is whether we used up all the
- // tokens (which is true if num_tokens_ <= 0).
- bucket->DeductToken();
- return true;
-}
diff --git a/chrome/browser/extensions/extensions_quota_service.h b/chrome/browser/extensions/extensions_quota_service.h
deleted file mode 100644
index 5644397..0000000
--- a/chrome/browser/extensions/extensions_quota_service.h
+++ /dev/null
@@ -1,238 +0,0 @@
-// Copyright (c) 2012 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
-// 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
-// watch an item (for a particular heuristic) before making a decision about
-// quota violations'. A heuristic is two functions: one mapping input
-// 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_
-
-#include <list>
-#include <map>
-#include <string>
-
-#include "base/compiler_specific.h"
-#include "base/containers/hash_tables.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/threading/non_thread_safe.h"
-#include "base/time/time.h"
-#include "base/timer/timer.h"
-#include "base/values.h"
-
-class ExtensionFunction;
-class QuotaLimitHeuristic;
-typedef std::list<QuotaLimitHeuristic*> QuotaLimitHeuristics;
-
-namespace extensions {
-class TestResetQuotaFunction;
-}
-
-// The ExtensionsQuotaService takes care that calls to certain extension
-// functions do not exceed predefined quotas.
-//
-// The ExtensionsQuotaService 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 {
- 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();
-
- // Decide whether the invocation of |function| with argument |args| by the
- // extension specified by |extension_id| results in a quota limit violation.
- // Returns an error message representing the failure if quota was exceeded,
- // or empty-string if the request is fine and can proceed.
- std::string Assess(const std::string& extension_id,
- ExtensionFunction* function,
- const base::ListValue* args,
- const base::TimeTicks& event_time);
-
- private:
- friend class extensions::TestResetQuotaFunction;
- typedef std::string ExtensionId;
- typedef std::string FunctionName;
- // All QuotaLimitHeuristic instances in this map are owned by us.
- typedef std::map<FunctionName, QuotaLimitHeuristics> FunctionHeuristicsMap;
-
- // Purge resets all accumulated data (except |violation_errors_|) as if the
- // service was just created. Called periodically so we don't consume an
- // unbounded amount of memory while tracking quota. Yes, this could mean an
- // extension gets away with murder if it is timed right, but the extensions
- // we are trying to limit are ones that consistently violate, so we'll
- // converge to the correct set.
- void Purge();
- void PurgeFunctionHeuristicsMap(FunctionHeuristicsMap* map);
- base::RepeatingTimer<ExtensionsQuotaService> purge_timer_;
-
- // Our quota tracking state for extensions that have invoked quota limited
- // functions. Each extension is treated separately, so extension ids are the
- // key for the mapping. As an extension invokes functions, the map keeps
- // track of which functions it has invoked and the heuristics for each one.
- // Each heuristic will be evaluated and ANDed together to get a final answer.
- std::map<ExtensionId, FunctionHeuristicsMap> function_heuristics_;
-
- // For now, as soon as an extension violates quota, we don't allow it to
- // make any more requests to quota limited functions. This provides a quick
- // lookup for these extensions that is only stored in memory.
- typedef std::map<std::string, std::string> ViolationErrorMap;
- ViolationErrorMap violation_errors_;
-
- DISALLOW_COPY_AND_ASSIGN(ExtensionsQuotaService);
-};
-
-// A QuotaLimitHeuristic is two things: 1, A heuristic to map extension
-// function arguments to corresponding Buckets for each input arg, and 2) a
-// heuristic for determining if a new event involving a particular item
-// (represented by its Bucket) constitutes a quota violation.
-class QuotaLimitHeuristic {
- public:
- // Parameters to configure the amount of tokens allotted to individual
- // Bucket objects (see Below) and how often they are replenished.
- struct Config {
- // The maximum number of tokens a bucket can contain, and is refilled to
- // every epoch.
- int64 refill_token_count;
-
- // Specifies how frequently the bucket is logically refilled with tokens.
- base::TimeDelta refill_interval;
- };
-
- // A Bucket is how the heuristic portrays an individual item (since quota
- // limits are per item) and all associated state for an item that needs to
- // carry through multiple calls to Apply. It "holds" tokens, which are
- // debited and credited in response to new events involving the item being
- // being represented. For convenience, instead of actually periodically
- // refilling buckets they are just 'Reset' on-demand (e.g. when new events
- // come in). So, a bucket has an expiration to denote it has becomes stale.
- class Bucket {
- public:
- Bucket() : num_tokens_(0) {}
- // Removes a token from this bucket, and returns true if the bucket had
- // any tokens in the first place.
- bool DeductToken() { return num_tokens_-- > 0; }
-
- // Returns true if this bucket has tokens to deduct.
- bool has_tokens() const { return num_tokens_ > 0; }
-
- // Reset this bucket to specification (from internal configuration), to be
- // valid from |start| until the first refill interval elapses and it needs
- // to be reset again.
- void Reset(const Config& config, const base::TimeTicks& start);
-
- // 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_;
- DISALLOW_COPY_AND_ASSIGN(Bucket);
- };
- typedef std::list<Bucket*> BucketList;
-
- // A helper interface to retrieve the bucket corresponding to |args| from
- // the set of buckets (which is typically stored in the BucketMapper itself)
- // for this QuotaLimitHeuristic.
- class BucketMapper {
- public:
- virtual ~BucketMapper() {}
- // In most cases, this should simply extract item IDs from the arguments
- // (e.g for bookmark operations involving an existing item). If a problem
- // occurs while parsing |args|, the function aborts - buckets may be non-
- // empty). The expectation is that invalid args and associated errors are
- // handled by the ExtensionFunction itself so we don't concern ourselves.
- virtual void GetBucketsForArgs(const base::ListValue* args,
- BucketList* buckets) = 0;
- };
-
- // Maps all calls to the same bucket, regardless of |args|, for this
- // QuotaLimitHeuristic.
- class SingletonBucketMapper : public BucketMapper {
- public:
- SingletonBucketMapper() {}
- virtual ~SingletonBucketMapper() {}
- virtual void GetBucketsForArgs(const base::ListValue* args,
- BucketList* buckets) OVERRIDE;
-
- private:
- Bucket bucket_;
- DISALLOW_COPY_AND_ASSIGN(SingletonBucketMapper);
- };
-
- // Ownership of |map| is given to the new QuotaLimitHeuristic.
- QuotaLimitHeuristic(const Config& config,
- BucketMapper* map,
- const std::string& name);
- virtual ~QuotaLimitHeuristic();
-
- // Determines if sufficient quota exists (according to the Apply
- // implementation of a derived class) to perform an operation with |args|,
- // based on the history of similar operations with similar arguments (which
- // is retrieved using the BucketMapper).
- bool ApplyToArgs(const base::ListValue* args,
- const base::TimeTicks& event_time);
-
- // Returns an error formatted according to this heuristic.
- std::string GetError() const;
-
- protected:
- const Config& config() { return config_; }
-
- // Determine if the new event occurring at |event_time| involving |bucket|
- // constitutes a quota violation according to this heuristic.
- virtual bool Apply(Bucket* bucket, const base::TimeTicks& event_time) = 0;
-
- private:
- friend class QuotaLimitHeuristicTest;
-
- const Config config_;
-
- // The mapper used in Map. Cannot be NULL.
- scoped_ptr<BucketMapper> bucket_mapper_;
-
- // The name of the heuristic for formatting error messages.
- std::string name_;
-
- DISALLOW_COPY_AND_ASSIGN(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 {
- public:
- TimedLimit(const Config& config, BucketMapper* map, const std::string& name)
- : QuotaLimitHeuristic(config, map, name) {}
- virtual bool Apply(Bucket* bucket,
- const base::TimeTicks& event_time) OVERRIDE;
-};
-
-// 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 {
- public:
- SustainedLimit(const base::TimeDelta& sustain,
- const Config& config,
- BucketMapper* map,
- 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.
- const int64 repeat_exhaustion_allowance_;
- int64 num_available_repeat_exhaustions_;
-};
-
-#endif // CHROME_BROWSER_EXTENSIONS_EXTENSIONS_QUOTA_SERVICE_H_
diff --git a/chrome/browser/extensions/extensions_quota_service_unittest.cc b/chrome/browser/extensions/extensions_quota_service_unittest.cc
deleted file mode 100644
index a0438ff3..0000000
--- a/chrome/browser/extensions/extensions_quota_service_unittest.cc
+++ /dev/null
@@ -1,415 +0,0 @@
-// Copyright (c) 2012 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/message_loop/message_loop.h"
-#include "base/process/process.h"
-#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 "testing/gtest/include/gtest/gtest.h"
-
-using base::TimeDelta;
-using base::TimeTicks;
-using content::BrowserThread;
-
-typedef QuotaLimitHeuristic::Bucket Bucket;
-typedef QuotaLimitHeuristic::Config Config;
-typedef QuotaLimitHeuristic::BucketList BucketList;
-typedef ExtensionsQuotaService::TimedLimit TimedLimit;
-typedef ExtensionsQuotaService::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 TimeTicks kStartTime = TimeTicks();
-const TimeTicks k1MinuteAfterStart = kStartTime + TimeDelta::FromMinutes(1);
-
-class Mapper : public QuotaLimitHeuristic::BucketMapper {
- public:
- Mapper() {}
- virtual ~Mapper() { STLDeleteValues(&buckets_); }
- virtual void GetBucketsForArgs(const base::ListValue* args,
- BucketList* buckets) OVERRIDE {
- for (size_t i = 0; i < args->GetSize(); i++) {
- int id;
- ASSERT_TRUE(args->GetInteger(i, &id));
- if (buckets_.find(id) == buckets_.end())
- buckets_[id] = new Bucket();
- buckets->push_back(buckets_[id]);
- }
- }
- private:
- typedef std::map<int, Bucket*> BucketMap;
- BucketMap buckets_;
- DISALLOW_COPY_AND_ASSIGN(Mapper);
-};
-
-class MockMapper : public QuotaLimitHeuristic::BucketMapper {
- public:
- virtual void GetBucketsForArgs(const base::ListValue* args,
- BucketList* buckets) OVERRIDE {
- }
-};
-
-class MockFunction : public ExtensionFunction {
- public:
- explicit MockFunction(const std::string& name) { set_name(name); }
-
- virtual void SetArgs(const base::ListValue* args) OVERRIDE {}
- virtual const std::string GetError() OVERRIDE { return std::string(); }
- virtual void SetError(const std::string& error) OVERRIDE {}
- virtual void Run() OVERRIDE {}
- virtual void Destruct() const OVERRIDE { delete this; }
- virtual bool RunImpl() OVERRIDE { return true; }
- virtual void SendResponse(bool) OVERRIDE { }
-
- protected:
- virtual ~MockFunction() {}
-};
-
-class TimedLimitMockFunction : public MockFunction {
- public:
- explicit TimedLimitMockFunction(const std::string& name)
- : MockFunction(name) {}
- virtual void GetQuotaLimitHeuristics(
- QuotaLimitHeuristics* heuristics) const OVERRIDE {
- heuristics->push_back(
- new TimedLimit(k2PerMinute, new Mapper(), kGenericName));
- }
-
- private:
- virtual ~TimedLimitMockFunction() {}
-};
-
-class ChainedLimitsMockFunction : public MockFunction {
- public:
- explicit ChainedLimitsMockFunction(const std::string& name)
- : MockFunction(name) {}
- 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));
- // No more than 20 per hour.
- heuristics->push_back(
- new TimedLimit(k20PerHour, new Mapper(), kGenericName));
- }
-
- private:
- virtual ~ChainedLimitsMockFunction() {}
-};
-
-class FrozenMockFunction : public MockFunction {
- public:
- explicit FrozenMockFunction(const std::string& name) : MockFunction(name) {}
- virtual void GetQuotaLimitHeuristics(
- QuotaLimitHeuristics* heuristics) const OVERRIDE {
- heuristics->push_back(
- new TimedLimit(kFrozenConfig, new Mapper(), kGenericName));
- }
-
- private:
- virtual ~FrozenMockFunction() {}
-};
-} // namespace
-
-class ExtensionsQuotaServiceTest : public testing::Test {
- public:
- ExtensionsQuotaServiceTest()
- : extension_a_("a"),
- extension_b_("b"),
- extension_c_("c"),
- loop_(),
- ui_thread_(BrowserThread::UI, &loop_) {
- }
- virtual void SetUp() {
- service_.reset(new ExtensionsQuotaService());
- }
- virtual void TearDown() {
- loop_.RunUntilIdle();
- service_.reset();
- }
- protected:
- std::string extension_a_;
- std::string extension_b_;
- std::string extension_c_;
- scoped_ptr<ExtensionsQuotaService> service_;
- base::MessageLoop loop_;
- content::TestBrowserThread ui_thread_;
-};
-
-class QuotaLimitHeuristicTest : public testing::Test {
- public:
- static void DoMoreThan2PerMinuteFor5Minutes(const TimeTicks& start_time,
- QuotaLimitHeuristic* lim,
- Bucket* b,
- int an_unexhausted_minute) {
- for (int i = 0; i < 5; i++) {
- // Perform one operation in each minute.
- int m = i * 60;
- EXPECT_TRUE(lim->Apply(b, start_time + TimeDelta::FromSeconds(10 + m)));
- EXPECT_TRUE(b->has_tokens());
-
- if (i == an_unexhausted_minute)
- continue; // Don't exhaust all tokens this minute.
-
- EXPECT_TRUE(lim->Apply(b, start_time + TimeDelta::FromSeconds(15 + m)));
- EXPECT_FALSE(b->has_tokens());
-
- // These are OK because we haven't exhausted all buckets.
- EXPECT_TRUE(lim->Apply(b, start_time + TimeDelta::FromSeconds(20 + m)));
- EXPECT_FALSE(b->has_tokens());
- EXPECT_TRUE(lim->Apply(b, start_time + TimeDelta::FromSeconds(50 + m)));
- EXPECT_FALSE(b->has_tokens());
- }
- }
-};
-
-TEST_F(QuotaLimitHeuristicTest, Timed) {
- TimedLimit lim(k2PerMinute, new MockMapper(), kGenericName);
- Bucket b;
-
- b.Reset(k2PerMinute, kStartTime);
- EXPECT_TRUE(lim.Apply(&b, kStartTime));
- 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));
-
- b.Reset(k2PerMinute, kStartTime);
- EXPECT_TRUE(lim.Apply(&b, k1MinuteAfterStart - TimeDelta::FromSeconds(1)));
- EXPECT_TRUE(lim.Apply(&b, k1MinuteAfterStart));
- EXPECT_TRUE(lim.Apply(&b, k1MinuteAfterStart + TimeDelta::FromSeconds(1)));
- EXPECT_TRUE(lim.Apply(&b, k1MinuteAfterStart + TimeDelta::FromSeconds(2)));
- EXPECT_FALSE(lim.Apply(&b, k1MinuteAfterStart + TimeDelta::FromSeconds(3)));
-}
-
-TEST_F(QuotaLimitHeuristicTest, Sustained) {
- SustainedLimit lim(
- TimeDelta::FromMinutes(5), k2PerMinute, new MockMapper(), kGenericName);
- Bucket bucket;
-
- bucket.Reset(k2PerMinute, kStartTime);
- DoMoreThan2PerMinuteFor5Minutes(kStartTime, &lim, &bucket, -1);
- // This straw breaks the camel's back.
- EXPECT_FALSE(lim.Apply(&bucket, kStartTime + TimeDelta::FromMinutes(6)));
-
- // The heuristic resets itself on a safe request.
- EXPECT_TRUE(lim.Apply(&bucket, kStartTime + TimeDelta::FromDays(1)));
-
- // Do the same as above except don't exhaust final bucket.
- bucket.Reset(k2PerMinute, kStartTime);
- DoMoreThan2PerMinuteFor5Minutes(kStartTime, &lim, &bucket, -1);
- EXPECT_TRUE(lim.Apply(&bucket, kStartTime + TimeDelta::FromMinutes(7)));
-
- // Do the same as above except don't exhaust the 3rd (w.l.o.g) bucket.
- bucket.Reset(k2PerMinute, kStartTime);
- DoMoreThan2PerMinuteFor5Minutes(kStartTime, &lim, &bucket, 3);
- // If the 3rd bucket were exhausted, this would fail (see first test).
- EXPECT_TRUE(lim.Apply(&bucket, kStartTime + TimeDelta::FromMinutes(6)));
-}
-
-TEST_F(ExtensionsQuotaServiceTest, 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) {
- 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) {
- scoped_refptr<MockFunction> f(new TimedLimitMockFunction("foo"));
- base::ListValue args;
- args.Append(new base::FundamentalValue(1));
- EXPECT_EQ("", service_->Assess(extension_a_, f.get(), &args, kStartTime));
- EXPECT_EQ("",
- service_->Assess(extension_a_,
- f.get(),
- &args,
- kStartTime + TimeDelta::FromSeconds(10)));
- EXPECT_NE("",
- service_->Assess(extension_a_,
- f.get(),
- &args,
- kStartTime + TimeDelta::FromSeconds(15)));
-
- base::ListValue args2;
- args2.Append(new base::FundamentalValue(1));
- args2.Append(new base::FundamentalValue(2));
- EXPECT_EQ("", service_->Assess(extension_b_, f.get(), &args2, kStartTime));
- EXPECT_EQ("",
- service_->Assess(extension_b_,
- f.get(),
- &args2,
- kStartTime + TimeDelta::FromSeconds(10)));
-
- TimeDelta peace = TimeDelta::FromMinutes(30);
- EXPECT_EQ("",
- service_->Assess(extension_b_, f.get(), &args, kStartTime + peace));
- EXPECT_EQ("",
- service_->Assess(extension_b_,
- f.get(),
- &args,
- kStartTime + peace + TimeDelta::FromSeconds(10)));
- EXPECT_NE("",
- service_->Assess(extension_b_,
- f.get(),
- &args2,
- kStartTime + peace + TimeDelta::FromSeconds(15)));
-
- // Test that items are independent.
- base::ListValue args3;
- args3.Append(new base::FundamentalValue(3));
- EXPECT_EQ("", service_->Assess(extension_c_, f.get(), &args, kStartTime));
- EXPECT_EQ("",
- service_->Assess(extension_c_,
- f.get(),
- &args3,
- kStartTime + TimeDelta::FromSeconds(10)));
- EXPECT_EQ("",
- service_->Assess(extension_c_,
- f.get(),
- &args,
- kStartTime + TimeDelta::FromSeconds(15)));
- EXPECT_EQ("",
- service_->Assess(extension_c_,
- f.get(),
- &args3,
- kStartTime + TimeDelta::FromSeconds(20)));
- EXPECT_NE("",
- service_->Assess(extension_c_,
- f.get(),
- &args,
- kStartTime + TimeDelta::FromSeconds(25)));
- EXPECT_NE("",
- service_->Assess(extension_c_,
- f.get(),
- &args3,
- kStartTime + TimeDelta::FromSeconds(30)));
-}
-
-TEST_F(ExtensionsQuotaServiceTest, ChainedHeuristics) {
- scoped_refptr<MockFunction> f(new ChainedLimitsMockFunction("foo"));
- base::ListValue args;
- args.Append(new base::FundamentalValue(1));
-
- // First, test that the low limit can be avoided but the higher one is hit.
- // One event per minute for 20 minutes comes in under the sustained limit,
- // but is equal to the timed limit.
- for (int i = 0; i < 20; i++) {
- EXPECT_EQ(
- "",
- service_->Assess(extension_a_,
- f.get(),
- &args,
- kStartTime + TimeDelta::FromSeconds(10 + i * 60)));
- }
-
- // This will bring us to 21 events in an hour, which is a violation.
- EXPECT_NE("",
- service_->Assess(extension_a_,
- f.get(),
- &args,
- kStartTime + TimeDelta::FromMinutes(30)));
-
- // Now, check that we can still hit the lower limit.
- for (int i = 0; i < 5; i++) {
- EXPECT_EQ(
- "",
- service_->Assess(extension_b_,
- f.get(),
- &args,
- kStartTime + TimeDelta::FromSeconds(10 + i * 60)));
- EXPECT_EQ(
- "",
- service_->Assess(extension_b_,
- f.get(),
- &args,
- kStartTime + TimeDelta::FromSeconds(15 + i * 60)));
- EXPECT_EQ(
- "",
- service_->Assess(extension_b_,
- f.get(),
- &args,
- kStartTime + TimeDelta::FromSeconds(20 + i * 60)));
- }
-
- EXPECT_NE("",
- service_->Assess(extension_b_,
- f.get(),
- &args,
- kStartTime + TimeDelta::FromMinutes(6)));
-}
-
-TEST_F(ExtensionsQuotaServiceTest, MultipleFunctionsDontInterfere) {
- scoped_refptr<MockFunction> f(new TimedLimitMockFunction("foo"));
- scoped_refptr<MockFunction> g(new TimedLimitMockFunction("bar"));
-
- base::ListValue args_f;
- base::ListValue args_g;
- args_f.Append(new base::FundamentalValue(1));
- args_g.Append(new base::FundamentalValue(2));
-
- EXPECT_EQ("", service_->Assess(extension_a_, f.get(), &args_f, kStartTime));
- EXPECT_EQ("", service_->Assess(extension_a_, g.get(), &args_g, kStartTime));
- EXPECT_EQ("",
- service_->Assess(extension_a_,
- f.get(),
- &args_f,
- kStartTime + TimeDelta::FromSeconds(10)));
- EXPECT_EQ("",
- service_->Assess(extension_a_,
- g.get(),
- &args_g,
- kStartTime + TimeDelta::FromSeconds(10)));
- EXPECT_NE("",
- service_->Assess(extension_a_,
- f.get(),
- &args_f,
- kStartTime + TimeDelta::FromSeconds(15)));
- EXPECT_NE("",
- service_->Assess(extension_a_,
- g.get(),
- &args_g,
- kStartTime + TimeDelta::FromSeconds(15)));
-}
-
-TEST_F(ExtensionsQuotaServiceTest, ViolatorsWillBeViolators) {
- scoped_refptr<MockFunction> f(new TimedLimitMockFunction("foo"));
- scoped_refptr<MockFunction> g(new TimedLimitMockFunction("bar"));
- base::ListValue arg;
- arg.Append(new base::FundamentalValue(1));
- EXPECT_EQ("", service_->Assess(extension_a_, f.get(), &arg, kStartTime));
- EXPECT_EQ("",
- service_->Assess(extension_a_,
- f.get(),
- &arg,
- kStartTime + TimeDelta::FromSeconds(10)));
- EXPECT_NE("",
- service_->Assess(extension_a_,
- f.get(),
- &arg,
- kStartTime + TimeDelta::FromSeconds(15)));
-
- // We don't allow this extension to use quota limited functions even if they
- // wait a while.
- EXPECT_NE(
- "",
- service_->Assess(
- extension_a_, f.get(), &arg, kStartTime + TimeDelta::FromDays(1)));
- EXPECT_NE(
- "",
- service_->Assess(
- extension_a_, g.get(), &arg, kStartTime + TimeDelta::FromDays(1)));
-}
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 @@
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 @@
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 cab117bc..6ae064c7 100644
--- a/chrome/browser/extensions/test_extension_system.h
+++ b/chrome/browser/extensions/test_extension_system.h
@@ -64,7 +64,7 @@
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 @@
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..76f01fd6 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..b93b7590 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 @@
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 6db00bc3..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..959d2ab8 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() {}
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 @@
namespace extensions {
class EventRouterForwarder;
+class InfoMap;
}
namespace net {
@@ -58,7 +58,7 @@
// 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 @@
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 5c21338a..6fbaa2a6 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 @@
// 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 @@
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 @@
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 fcdf2a9f..92813c6 100644
--- a/chrome/browser/profiles/profile_io_data.h
+++ b/chrome/browser/profiles/profile_io_data.h
@@ -30,7 +30,6 @@
class ChromeNetworkDelegate;
class CookieSettings;
class DesktopNotificationService;
-class ExtensionInfoMap;
class HostContentSettingsMap;
class ManagedModeURLFilter;
class Profile;
@@ -43,6 +42,10 @@
class ResourcePrefetchPredictorObserver;
}
+namespace extensions {
+class InfoMap;
+}
+
namespace net {
class CertVerifier;
class CookieStore;
@@ -113,7 +116,7 @@
// 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 @@
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 @@
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 d683fbb1..b1f32982 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_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 @@
// 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 @@
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