summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrdevlin.cronin@chromium.org <rdevlin.cronin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-06 21:47:26 +0000
committerrdevlin.cronin@chromium.org <rdevlin.cronin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-06-06 21:47:26 +0000
commit076ebedaa781461c668ea435ef3af3ca707775d5 (patch)
tree5189adac73248df281db674fff5ce4c08dda0ce8
parent4bd4064aede02bd5ae1c0a4b7a01af4830abb47a (diff)
downloadchromium_src-076ebedaa781461c668ea435ef3af3ca707775d5.zip
chromium_src-076ebedaa781461c668ea435ef3af3ca707775d5.tar.gz
chromium_src-076ebedaa781461c668ea435ef3af3ca707775d5.tar.bz2
Remove deprecated permissions functions from Extension
The methods GetActivePermission() and HasAPIPermission() have been deprecated for more than a year. Finally remove them. Also clean up some includes in extension.h, and fix transitive includes. BUG=379356 TBR=atwilson@chromium.org (c/b/background) TBR=yurys@chromium.org (c/b/devtools) TBR=bauerb@chromium.org (c/b/managed_mode) TBR=dalecurtis@chromium.org (c/b/media) TBR=dewittj@chromium.org (c/b/notifications) TBR=msw@chromium.org (c/b/ui) All TBRs are for strictly mechanical changes - no functional difference. Review URL: https://codereview.chromium.org/314113010 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@275531 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--apps/app_window.cc4
-rw-r--r--apps/saved_files_service.cc3
-rw-r--r--chrome/browser/background/background_application_list_model.cc8
-rw-r--r--chrome/browser/background/background_application_list_model_unittest.cc25
-rw-r--r--chrome/browser/chrome_content_browser_client.cc3
-rw-r--r--chrome/browser/devtools/devtools_ui_bindings.cc9
-rw-r--r--chrome/browser/extensions/active_tab_permission_granter.cc6
-rw-r--r--chrome/browser/extensions/api/alarms/alarm_manager.h1
-rw-r--r--chrome/browser/extensions/api/app_current_window_internal/app_current_window_internal_api.cc3
-rw-r--r--chrome/browser/extensions/api/app_window/app_window_api.cc16
-rw-r--r--chrome/browser/extensions/api/autotest_private/autotest_private_api.cc11
-rw-r--r--chrome/browser/extensions/api/declarative/declarative_api.cc4
-rw-r--r--chrome/browser/extensions/api/declarative/rules_cache_delegate.cc7
-rw-r--r--chrome/browser/extensions/api/declarative/rules_registry_with_cache_unittest.cc5
-rw-r--r--chrome/browser/extensions/api/developer_private/developer_private_api.cc4
-rw-r--r--chrome/browser/extensions/api/downloads/downloads_api.cc7
-rw-r--r--chrome/browser/extensions/api/file_handlers/app_file_handler_util.cc4
-rw-r--r--chrome/browser/extensions/api/file_system/file_system_api.cc7
-rw-r--r--chrome/browser/extensions/api/location/location_manager.cc4
-rw-r--r--chrome/browser/extensions/api/management/management_api.cc4
-rw-r--r--chrome/browser/extensions/api/messaging/message_service.cc6
-rw-r--r--chrome/browser/extensions/api/permissions/permissions_api.cc8
-rw-r--r--chrome/browser/extensions/api/preference/preference_api.cc3
-rw-r--r--chrome/browser/extensions/api/preference/preference_helpers.cc3
-rw-r--r--chrome/browser/extensions/api/push_messaging/push_messaging_api.cc10
-rw-r--r--chrome/browser/extensions/api/web_request/web_request_api.cc11
-rw-r--r--chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.cc3
-rw-r--r--chrome/browser/extensions/convert_web_app_browsertest.cc7
-rw-r--r--chrome/browser/extensions/convert_web_app_unittest.cc7
-rw-r--r--chrome/browser/extensions/extension_disabled_ui.cc4
-rw-r--r--chrome/browser/extensions/extension_gcm_app_handler_unittest.cc4
-rw-r--r--chrome/browser/extensions/extension_install_prompt.cc10
-rw-r--r--chrome/browser/extensions/extension_service.cc6
-rw-r--r--chrome/browser/extensions/extension_service_unittest.cc14
-rw-r--r--chrome/browser/extensions/extension_special_storage_policy.cc25
-rw-r--r--chrome/browser/extensions/extension_storage_monitor.cc4
-rw-r--r--chrome/browser/extensions/extension_tab_util.cc5
-rw-r--r--chrome/browser/extensions/permissions_updater.cc7
-rw-r--r--chrome/browser/extensions/permissions_updater_unittest.cc9
-rw-r--r--chrome/browser/extensions/suggest_permission_util.cc3
-rw-r--r--chrome/browser/managed_mode/managed_user_service.h1
-rw-r--r--chrome/browser/media/media_capture_devices_dispatcher.cc13
-rw-r--r--chrome/browser/notifications/message_center_settings_controller.cc4
-rw-r--r--chrome/browser/ui/app_list/drive/drive_app_converter_browsertest.cc3
-rw-r--r--chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_tab.cc4
-rw-r--r--chrome/browser/ui/webui/extensions/extension_settings_handler.cc3
-rw-r--r--chrome/browser/ui/webui/options/content_settings_handler.cc4
-rw-r--r--chrome/common/extensions/manifest_tests/extension_manifests_old_unittest.cc3
-rw-r--r--chrome/common/extensions/permissions/permission_set_unittest.cc51
-rw-r--r--chrome/common/extensions/permissions/settings_override_permission_unittest.cc10
-rw-r--r--chrome/common/extensions/sync_helper.cc3
-rw-r--r--chrome/renderer/chrome_content_renderer_client.cc2
-rw-r--r--chrome/renderer/content_settings_observer.cc5
-rw-r--r--chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc9
-rw-r--r--extensions/browser/api/storage/local_value_store_cache.cc4
-rw-r--r--extensions/browser/api/storage/settings_test_util.cc2
-rw-r--r--extensions/browser/event_router.cc6
-rw-r--r--extensions/browser/info_map.cc6
-rw-r--r--extensions/browser/info_map.h1
-rw-r--r--extensions/browser/info_map_unittest.cc20
-rw-r--r--extensions/common/extension.cc15
-rw-r--r--extensions/common/extension.h10
-rw-r--r--extensions/common/extension_messages.cc15
-rw-r--r--extensions/common/extension_set.h2
-rw-r--r--extensions/common/manifest_handlers/externally_connectable_unittest.cc16
-rw-r--r--extensions/common/manifest_handlers/shared_module_info.cc3
-rw-r--r--extensions/common/permissions/permissions_data_unittest.cc11
-rw-r--r--extensions/renderer/dispatcher.cc2
68 files changed, 315 insertions, 197 deletions
diff --git a/apps/app_window.cc b/apps/app_window.cc
index be59b80..dbc28f7 100644
--- a/apps/app_window.cc
+++ b/apps/app_window.cc
@@ -41,6 +41,7 @@
#include "extensions/common/extension.h"
#include "extensions/common/extension_messages.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "grit/theme_resources.h"
#include "third_party/skia/include/core/SkRegion.h"
#include "ui/base/resource/resource_bundle.h"
@@ -432,7 +433,8 @@ bool AppWindow::PreHandleKeyboardEvent(
if (event.windowsKeyCode == ui::VKEY_ESCAPE &&
(fullscreen_types_ != FULLSCREEN_TYPE_NONE) &&
((fullscreen_types_ & FULLSCREEN_TYPE_FORCED) == 0) &&
- !extension->HasAPIPermission(APIPermission::kOverrideEscFullscreen)) {
+ !extension->permissions_data()->HasAPIPermission(
+ APIPermission::kOverrideEscFullscreen)) {
Restore();
return true;
}
diff --git a/apps/saved_files_service.cc b/apps/saved_files_service.cc
index f1e12c7..f8053c0 100644
--- a/apps/saved_files_service.cc
+++ b/apps/saved_files_service.cc
@@ -19,6 +19,7 @@
#include "extensions/browser/extension_util.h"
#include "extensions/common/permissions/api_permission.h"
#include "extensions/common/permissions/permission_set.h"
+#include "extensions/common/permissions/permissions_data.h"
namespace apps {
@@ -262,7 +263,7 @@ const SavedFileEntry* SavedFilesService::GetFileEntry(
void SavedFilesService::ClearQueueIfNoRetainPermission(
const Extension* extension) {
if (extensions::util::IsEphemeralApp(extension->id(), profile_) ||
- !extension->GetActivePermissions()->HasAPIPermission(
+ !extension->permissions_data()->active_permissions()->HasAPIPermission(
APIPermission::kFileSystemRetainEntries)) {
ClearQueue(extension);
}
diff --git a/chrome/browser/background/background_application_list_model.cc b/chrome/browser/background/background_application_list_model.cc
index 9969a8f..1c65a31 100644
--- a/chrome/browser/background/background_application_list_model.cc
+++ b/chrome/browser/background/background_application_list_model.cc
@@ -33,6 +33,7 @@
#include "extensions/common/manifest_handlers/background_info.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
#include "extensions/common/permissions/permission_set.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "ui/base/l10n/l10n_util_collator.h"
#include "ui/gfx/image/image.h"
#include "ui/gfx/image/image_skia.h"
@@ -277,8 +278,10 @@ int BackgroundApplicationListModel::GetPosition(
bool BackgroundApplicationListModel::RequiresBackgroundModeForPushMessaging(
const Extension& extension) {
// No PushMessaging permission - does not require the background mode.
- if (!extension.HasAPIPermission(APIPermission::kPushMessaging))
+ if (!extension.permissions_data()->HasAPIPermission(
+ APIPermission::kPushMessaging)) {
return false;
+ }
// If in the whitelist, then does not require background mode even if
// uses push messaging.
@@ -306,7 +309,8 @@ bool BackgroundApplicationListModel::IsBackgroundApp(
// Not a background app if we don't have the background permission or
// the push messaging permission
- if (!extension.HasAPIPermission(APIPermission::kBackground) &&
+ if (!extension.permissions_data()->HasAPIPermission(
+ APIPermission::kBackground) &&
!RequiresBackgroundModeForPushMessaging(extension))
return false;
diff --git a/chrome/browser/background/background_application_list_model_unittest.cc b/chrome/browser/background/background_application_list_model_unittest.cc
index 34b0ae4..3e5f413 100644
--- a/chrome/browser/background/background_application_list_model_unittest.cc
+++ b/chrome/browser/background/background_application_list_model_unittest.cc
@@ -25,6 +25,7 @@
#include "extensions/common/manifest_constants.h"
#include "extensions/common/permissions/api_permission.h"
#include "extensions/common/permissions/permission_set.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "testing/gtest/include/gtest/gtest.h"
// This value is used to seed the PRNG at the beginning of a sequence of
@@ -139,7 +140,7 @@ void AddBackgroundPermission(ExtensionService* service,
scoped_refptr<Extension> temporary =
CreateExtension(GenerateUniqueExtensionName(), true);
scoped_refptr<const extensions::PermissionSet> permissions =
- temporary->GetActivePermissions();
+ temporary->permissions_data()->active_permissions();
extensions::PermissionsUpdater(service->profile()).AddPermissions(
extension, permissions.get());
}
@@ -150,8 +151,8 @@ void RemoveBackgroundPermission(ExtensionService* service,
service->profile())) {
return;
}
- extensions::PermissionsUpdater(service->profile())
- .RemovePermissions(extension, extension->GetActivePermissions().get());
+ extensions::PermissionsUpdater(service->profile()).RemovePermissions(
+ extension, extension->permissions_data()->active_permissions().get());
}
} // namespace
@@ -319,9 +320,11 @@ TEST_F(BackgroundApplicationListModelTest, AddRemovePermissionsTest) {
ASSERT_EQ(0U, model->size());
scoped_refptr<Extension> ext = CreateExtension("extension", false);
- ASSERT_FALSE(ext->HasAPIPermission(APIPermission::kBackground));
+ ASSERT_FALSE(
+ ext->permissions_data()->HasAPIPermission(APIPermission::kBackground));
scoped_refptr<Extension> bgapp = CreateExtension("application", true);
- ASSERT_TRUE(bgapp->HasAPIPermission(APIPermission::kBackground));
+ ASSERT_TRUE(
+ bgapp->permissions_data()->HasAPIPermission(APIPermission::kBackground));
ASSERT_TRUE(service->extensions() != NULL);
ASSERT_EQ(0U, service->extensions()->size());
ASSERT_EQ(0U, model->size());
@@ -338,19 +341,23 @@ TEST_F(BackgroundApplicationListModelTest, AddRemovePermissionsTest) {
// Change permissions back and forth
AddBackgroundPermission(service, ext.get());
- ASSERT_TRUE(ext->HasAPIPermission(APIPermission::kBackground));
+ ASSERT_TRUE(
+ ext->permissions_data()->HasAPIPermission(APIPermission::kBackground));
ASSERT_EQ(2U, service->extensions()->size());
ASSERT_EQ(2U, model->size());
RemoveBackgroundPermission(service, bgapp.get());
- ASSERT_FALSE(bgapp->HasAPIPermission(APIPermission::kBackground));
+ ASSERT_FALSE(
+ bgapp->permissions_data()->HasAPIPermission(APIPermission::kBackground));
ASSERT_EQ(2U, service->extensions()->size());
ASSERT_EQ(1U, model->size());
RemoveBackgroundPermission(service, ext.get());
- ASSERT_FALSE(ext->HasAPIPermission(APIPermission::kBackground));
+ ASSERT_FALSE(
+ ext->permissions_data()->HasAPIPermission(APIPermission::kBackground));
ASSERT_EQ(2U, service->extensions()->size());
ASSERT_EQ(0U, model->size());
AddBackgroundPermission(service, bgapp.get());
- ASSERT_TRUE(bgapp->HasAPIPermission(APIPermission::kBackground));
+ ASSERT_TRUE(
+ bgapp->permissions_data()->HasAPIPermission(APIPermission::kBackground));
ASSERT_EQ(2U, service->extensions()->size());
ASSERT_EQ(1U, model->size());
}
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 8a0a08b..97d504a 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -1040,7 +1040,8 @@ bool ChromeContentBrowserClient::ShouldUseProcessPerSite(
// page, we want to give each instance its own process to improve
// responsiveness.
if (extension->GetType() == Manifest::TYPE_HOSTED_APP) {
- if (!extension->HasAPIPermission(APIPermission::kBackground) ||
+ if (!extension->permissions_data()->HasAPIPermission(
+ APIPermission::kBackground) ||
!extensions::BackgroundInfo::AllowJSAccess(extension)) {
return false;
}
diff --git a/chrome/browser/devtools/devtools_ui_bindings.cc b/chrome/browser/devtools/devtools_ui_bindings.cc
index 65dd557..ae45cdb 100644
--- a/chrome/browser/devtools/devtools_ui_bindings.cc
+++ b/chrome/browser/devtools/devtools_ui_bindings.cc
@@ -49,6 +49,7 @@
#include "content/public/common/url_constants.h"
#include "extensions/browser/extension_system.h"
#include "extensions/common/extension_set.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
@@ -757,10 +758,10 @@ void DevToolsUIBindings::AddDevToolsExtensionsToClient() {
extensions::ManifestURL::GetDevToolsPage(
extension->get()).spec()));
extension_info->Set("name", new base::StringValue((*extension)->name()));
- extension_info->Set(
- "exposeExperimentalAPIs",
- new base::FundamentalValue((*extension)->HasAPIPermission(
- extensions::APIPermission::kExperimental)));
+ extension_info->Set("exposeExperimentalAPIs",
+ new base::FundamentalValue(
+ (*extension)->permissions_data()->HasAPIPermission(
+ extensions::APIPermission::kExperimental)));
results.Append(extension_info);
}
CallClientFunction("WebInspector.addExtensions", &results, NULL, NULL);
diff --git a/chrome/browser/extensions/active_tab_permission_granter.cc b/chrome/browser/extensions/active_tab_permission_granter.cc
index 978bbfc..c2d0cd5e 100644
--- a/chrome/browser/extensions/active_tab_permission_granter.cc
+++ b/chrome/browser/extensions/active_tab_permission_granter.cc
@@ -55,7 +55,8 @@ void ActiveTabPermissionGranter::GrantIfRequested(const Extension* extension) {
-1, // No tab id.
GURL());
- if (extension->HasAPIPermission(APIPermission::kActiveTab) ||
+ if (extension->permissions_data()->HasAPIPermission(
+ APIPermission::kActiveTab) ||
requires_action_for_script_execution) {
URLPattern pattern(UserScript::ValidUserScriptSchemes());
// Pattern parsing could fail if this is an unsupported URL e.g. chrome://.
@@ -66,7 +67,8 @@ void ActiveTabPermissionGranter::GrantIfRequested(const Extension* extension) {
new_apis.insert(APIPermission::kTab);
}
- if (extension->HasAPIPermission(APIPermission::kTabCapture))
+ if (extension->permissions_data()->HasAPIPermission(
+ APIPermission::kTabCapture))
new_apis.insert(APIPermission::kTabCaptureForTab);
if (!new_apis.empty() || !new_hosts.is_empty()) {
diff --git a/chrome/browser/extensions/api/alarms/alarm_manager.h b/chrome/browser/extensions/api/alarms/alarm_manager.h
index c676398..9a44370 100644
--- a/chrome/browser/extensions/api/alarms/alarm_manager.h
+++ b/chrome/browser/extensions/api/alarms/alarm_manager.h
@@ -11,6 +11,7 @@
#include <vector>
#include "base/callback.h"
+#include "base/gtest_prod_util.h"
#include "base/memory/weak_ptr.h"
#include "base/scoped_observer.h"
#include "base/timer/timer.h"
diff --git a/chrome/browser/extensions/api/app_current_window_internal/app_current_window_internal_api.cc b/chrome/browser/extensions/api/app_current_window_internal/app_current_window_internal_api.cc
index 78ca0bc..022c8c0 100644
--- a/chrome/browser/extensions/api/app_current_window_internal/app_current_window_internal_api.cc
+++ b/chrome/browser/extensions/api/app_current_window_internal/app_current_window_internal_api.cc
@@ -14,6 +14,7 @@
#include "chrome/common/extensions/api/app_window.h"
#include "chrome/common/extensions/features/feature_channel.h"
#include "extensions/common/features/simple_feature.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "extensions/common/switches.h"
#include "third_party/skia/include/core/SkRegion.h"
@@ -385,7 +386,7 @@ bool AppCurrentWindowInternalSetShapeFunction::RunWithWindow(
bool AppCurrentWindowInternalSetAlwaysOnTopFunction::RunWithWindow(
AppWindow* window) {
- if (!GetExtension()->HasAPIPermission(
+ if (!GetExtension()->permissions_data()->HasAPIPermission(
extensions::APIPermission::kAlwaysOnTopWindows)) {
error_ = kAlwaysOnTopPermission;
return false;
diff --git a/chrome/browser/extensions/api/app_window/app_window_api.cc b/chrome/browser/extensions/api/app_window/app_window_api.cc
index 3f05a81..c6623e0 100644
--- a/chrome/browser/extensions/api/app_window/app_window_api.cc
+++ b/chrome/browser/extensions/api/app_window/app_window_api.cc
@@ -26,6 +26,7 @@
#include "content/public/common/url_constants.h"
#include "extensions/browser/extensions_browser_client.h"
#include "extensions/browser/image_util.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "extensions/common/switches.h"
#include "third_party/skia/include/core/SkColor.h"
#include "ui/base/ui_base_types.h"
@@ -225,7 +226,8 @@ bool AppWindowCreateFunction::RunAsync() {
return false;
if (options->transparent_background.get() &&
- (GetExtension()->HasAPIPermission(APIPermission::kExperimental) ||
+ (GetExtension()->permissions_data()->HasAPIPermission(
+ APIPermission::kExperimental) ||
CommandLine::ForCurrentProcess()->HasSwitch(
switches::kEnableExperimentalExtensionApis))) {
create_params.transparent_background = *options->transparent_background;
@@ -240,7 +242,8 @@ bool AppWindowCreateFunction::RunAsync() {
if (options->always_on_top.get()) {
create_params.always_on_top = *options->always_on_top.get();
- if (create_params.always_on_top && !GetExtension()->HasAPIPermission(
+ if (create_params.always_on_top &&
+ !GetExtension()->permissions_data()->HasAPIPermission(
APIPermission::kAlwaysOnTopWindows)) {
error_ = app_window_constants::kAlwaysOnTopPermission;
return false;
@@ -419,10 +422,11 @@ bool AppWindowCreateFunction::GetBoundsSpec(
AppWindow::Frame AppWindowCreateFunction::GetFrameFromString(
const std::string& frame_string) {
- if (frame_string == kHtmlFrameOption &&
- (GetExtension()->HasAPIPermission(APIPermission::kExperimental) ||
- CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kEnableExperimentalExtensionApis))) {
+ if (frame_string == kHtmlFrameOption &&
+ (GetExtension()->permissions_data()->HasAPIPermission(
+ APIPermission::kExperimental) ||
+ CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kEnableExperimentalExtensionApis))) {
inject_html_titlebar_ = true;
return AppWindow::FRAME_NONE;
}
diff --git a/chrome/browser/extensions/api/autotest_private/autotest_private_api.cc b/chrome/browser/extensions/api/autotest_private/autotest_private_api.cc
index d5a3fe6..92ff460 100644
--- a/chrome/browser/extensions/api/autotest_private/autotest_private_api.cc
+++ b/chrome/browser/extensions/api/autotest_private/autotest_private_api.cc
@@ -32,11 +32,10 @@ namespace extensions {
namespace {
base::ListValue* GetHostPermissions(const Extension* ext, bool effective_perm) {
- URLPatternSet pattern_set;
- if (effective_perm)
- pattern_set = ext->permissions_data()->GetEffectiveHostPermissions();
- else
- pattern_set = ext->GetActivePermissions()->explicit_hosts();
+ const PermissionsData* permissions_data = ext->permissions_data();
+ const URLPatternSet& pattern_set =
+ effective_perm ? permissions_data->GetEffectiveHostPermissions()
+ : permissions_data->active_permissions()->explicit_hosts();
base::ListValue* permissions = new base::ListValue;
for (URLPatternSet::const_iterator perm = pattern_set.begin();
@@ -51,7 +50,7 @@ base::ListValue* GetHostPermissions(const Extension* ext, bool effective_perm) {
base::ListValue* GetAPIPermissions(const Extension* ext) {
base::ListValue* permissions = new base::ListValue;
std::set<std::string> perm_list =
- ext->GetActivePermissions()->GetAPIsAsStrings();
+ ext->permissions_data()->active_permissions()->GetAPIsAsStrings();
for (std::set<std::string>::const_iterator perm = perm_list.begin();
perm != perm_list.end(); ++perm) {
permissions->Append(new base::StringValue(perm->c_str()));
diff --git a/chrome/browser/extensions/api/declarative/declarative_api.cc b/chrome/browser/extensions/api/declarative/declarative_api.cc
index dbb22a6..f53ead1 100644
--- a/chrome/browser/extensions/api/declarative/declarative_api.cc
+++ b/chrome/browser/extensions/api/declarative/declarative_api.cc
@@ -17,6 +17,7 @@
#include "content/public/browser/render_view_host.h"
#include "extensions/browser/extension_system.h"
#include "extensions/common/extension_api.h"
+#include "extensions/common/permissions/permissions_data.h"
using extensions::api::events::Rule;
@@ -59,7 +60,8 @@ bool RulesFunction::HasPermission() {
std::string event_name;
EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &event_name));
if (IsWebViewEvent(event_name) &&
- extension_->HasAPIPermission(extensions::APIPermission::kWebView))
+ extension_->permissions_data()->HasAPIPermission(
+ extensions::APIPermission::kWebView))
return true;
Feature::Availability availability =
ExtensionAPI::GetSharedInstance()->IsAvailable(
diff --git a/chrome/browser/extensions/api/declarative/rules_cache_delegate.cc b/chrome/browser/extensions/api/declarative/rules_cache_delegate.cc
index 119b2b4..bfe59ac 100644
--- a/chrome/browser/extensions/api/declarative/rules_cache_delegate.cc
+++ b/chrome/browser/extensions/api/declarative/rules_cache_delegate.cc
@@ -16,6 +16,7 @@
#include "extensions/browser/extension_registry.h"
#include "extensions/browser/extension_system.h"
#include "extensions/browser/info_map.h"
+#include "extensions/common/permissions/permissions_data.h"
namespace {
@@ -138,8 +139,10 @@ void RulesCacheDelegate::ReadRulesForInstalledExtensions() {
i != extensions->end();
++i) {
bool needs_apis_storing_rules =
- (*i)->HasAPIPermission(APIPermission::kDeclarativeContent) ||
- (*i)->HasAPIPermission(APIPermission::kDeclarativeWebRequest);
+ (*i)->permissions_data()->HasAPIPermission(
+ APIPermission::kDeclarativeContent) ||
+ (*i)->permissions_data()->HasAPIPermission(
+ APIPermission::kDeclarativeWebRequest);
bool respects_off_the_record =
!(profile_->IsOffTheRecord()) ||
util::IsIncognitoEnabled((*i)->id(), profile_);
diff --git a/chrome/browser/extensions/api/declarative/rules_registry_with_cache_unittest.cc b/chrome/browser/extensions/api/declarative/rules_registry_with_cache_unittest.cc
index 4a6660a..dff53b7 100644
--- a/chrome/browser/extensions/api/declarative/rules_registry_with_cache_unittest.cc
+++ b/chrome/browser/extensions/api/declarative/rules_registry_with_cache_unittest.cc
@@ -23,6 +23,7 @@
#include "extensions/browser/value_store/testing_value_store.h"
#include "extensions/common/extension.h"
#include "extensions/common/manifest_constants.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "testing/gtest/include/gtest/gtest.h"
using extension_test_util::LoadManifestUnchecked;
@@ -348,8 +349,8 @@ TEST_F(RulesRegistryWithCacheTest, RulesPreservedAcrossRestart) {
ASSERT_TRUE(error.empty());
extension_service->AddExtension(extension.get());
EXPECT_TRUE(extension_service->extensions()->Contains(extension->id()));
- EXPECT_TRUE(
- extension->HasAPIPermission(APIPermission::kDeclarativeWebRequest));
+ EXPECT_TRUE(extension->permissions_data()->HasAPIPermission(
+ APIPermission::kDeclarativeWebRequest));
env_.GetExtensionSystem()->SetReady();
// 2. First run, adding a rule for the extension.
diff --git a/chrome/browser/extensions/api/developer_private/developer_private_api.cc b/chrome/browser/extensions/api/developer_private/developer_private_api.cc
index 5fc8747..f737704 100644
--- a/chrome/browser/extensions/api/developer_private/developer_private_api.cc
+++ b/chrome/browser/extensions/api/developer_private/developer_private_api.cc
@@ -65,6 +65,7 @@
#include "extensions/common/manifest_handlers/icons_handler.h"
#include "extensions/common/manifest_handlers/incognito_info.h"
#include "extensions/common/manifest_handlers/offline_enabled_info.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "extensions/common/switches.h"
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
@@ -747,7 +748,8 @@ bool DeveloperPrivateShowPermissionsDialogFunction::RunSync() {
// Released by InstallUIAbort or InstallUIProceed.
AddRef();
std::vector<base::FilePath> retained_file_paths;
- if (extension->HasAPIPermission(APIPermission::kFileSystem)) {
+ if (extension->permissions_data()->HasAPIPermission(
+ APIPermission::kFileSystem)) {
std::vector<apps::SavedFileEntry> retained_file_entries =
apps::SavedFilesService::Get(GetProfile())
->GetAllFileEntries(extension_id_);
diff --git a/chrome/browser/extensions/api/downloads/downloads_api.cc b/chrome/browser/extensions/api/downloads/downloads_api.cc
index 52f113e..c34147f 100644
--- a/chrome/browser/extensions/api/downloads/downloads_api.cc
+++ b/chrome/browser/extensions/api/downloads/downloads_api.cc
@@ -64,6 +64,7 @@
#include "extensions/browser/extension_function_dispatcher.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "net/base/filename_util.h"
#include "net/base/load_flags.h"
#include "net/http/http_util.h"
@@ -1386,7 +1387,8 @@ bool DownloadsOpenFunction::RunSync() {
Fault(download_item->GetState() != DownloadItem::COMPLETE,
errors::kNotComplete,
&error_) ||
- Fault(!GetExtension()->HasAPIPermission(APIPermission::kDownloadsOpen),
+ Fault(!GetExtension()->permissions_data()->HasAPIPermission(
+ APIPermission::kDownloadsOpen),
errors::kOpenPermission,
&error_))
return false;
@@ -1431,7 +1433,8 @@ bool DownloadsSetShelfEnabledFunction::RunSync() {
scoped_ptr<downloads::SetShelfEnabled::Params> params(
downloads::SetShelfEnabled::Params::Create(*args_));
EXTENSION_FUNCTION_VALIDATE(params.get());
- if (!GetExtension()->HasAPIPermission(APIPermission::kDownloadsShelf)) {
+ if (!GetExtension()->permissions_data()->HasAPIPermission(
+ APIPermission::kDownloadsShelf)) {
error_ = download_extension_errors::kShelfPermission;
return false;
}
diff --git a/chrome/browser/extensions/api/file_handlers/app_file_handler_util.cc b/chrome/browser/extensions/api/file_handlers/app_file_handler_util.cc
index 5a972af..277bc99 100644
--- a/chrome/browser/extensions/api/file_handlers/app_file_handler_util.cc
+++ b/chrome/browser/extensions/api/file_handlers/app_file_handler_util.cc
@@ -12,6 +12,7 @@
#include "content/public/browser/child_process_security_policy.h"
#include "content/public/browser/render_process_host.h"
#include "extensions/browser/extension_prefs.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "net/base/mime_util.h"
#include "webkit/browser/fileapi/isolated_context.h"
#include "webkit/common/fileapi/file_system_mount_option.h"
@@ -329,7 +330,8 @@ void PrepareFilesForWritableApp(
}
bool HasFileSystemWritePermission(const Extension* extension) {
- return extension->HasAPIPermission(APIPermission::kFileSystemWrite);
+ return extension->permissions_data()->HasAPIPermission(
+ APIPermission::kFileSystemWrite);
}
bool ValidateFileEntryAndGetPath(
diff --git a/chrome/browser/extensions/api/file_system/file_system_api.cc b/chrome/browser/extensions/api/file_system/file_system_api.cc
index 2cd8ddf..ddec04b 100644
--- a/chrome/browser/extensions/api/file_system/file_system_api.cc
+++ b/chrome/browser/extensions/api/file_system/file_system_api.cc
@@ -35,6 +35,7 @@
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_system.h"
#include "extensions/common/permissions/api_permission.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "grit/generated_resources.h"
#include "net/base/mime_util.h"
#include "ui/base/l10n/l10n_util.h"
@@ -386,7 +387,8 @@ bool FileSystemGetWritableEntryFunction::RunAsync() {
void FileSystemGetWritableEntryFunction::CheckPermissionAndSendResponse() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
if (is_directory_ &&
- !extension_->HasAPIPermission(APIPermission::kFileSystemDirectory)) {
+ !extension_->permissions_data()->HasAPIPermission(
+ APIPermission::kFileSystemDirectory)) {
error_ = kRequiresFileSystemDirectoryError;
SendResponse(false);
}
@@ -869,7 +871,8 @@ bool FileSystemChooseEntryFunction::RunAsync() {
picker_type = ui::SelectFileDialog::SELECT_SAVEAS_FILE;
} else if (options->type == file_system::CHOOSE_ENTRY_TYPE_OPENDIRECTORY) {
is_directory_ = true;
- if (!extension_->HasAPIPermission(APIPermission::kFileSystemDirectory)) {
+ if (!extension_->permissions_data()->HasAPIPermission(
+ APIPermission::kFileSystemDirectory)) {
error_ = kRequiresFileSystemDirectoryError;
return false;
}
diff --git a/chrome/browser/extensions/api/location/location_manager.cc b/chrome/browser/extensions/api/location/location_manager.cc
index b436e9e..8762a3f 100644
--- a/chrome/browser/extensions/api/location/location_manager.cc
+++ b/chrome/browser/extensions/api/location/location_manager.cc
@@ -22,6 +22,7 @@
#include "extensions/browser/extension_system.h"
#include "extensions/common/extension.h"
#include "extensions/common/permissions/permission_set.h"
+#include "extensions/common/permissions/permissions_data.h"
using content::BrowserThread;
@@ -358,7 +359,8 @@ void LocationManager::Observe(int type,
const Extension* extension =
content::Details<const Extension>(details).ptr();
- if (extension->HasAPIPermission(APIPermission::kLocation)) {
+ if (extension->permissions_data()->HasAPIPermission(
+ APIPermission::kLocation)) {
content::GeolocationProvider::GetInstance()->
UserDidOptIntoLocationServices();
}
diff --git a/chrome/browser/extensions/api/management/management_api.cc b/chrome/browser/extensions/api/management/management_api.cc
index 1e7d3f8..1f45eb3 100644
--- a/chrome/browser/extensions/api/management/management_api.cc
+++ b/chrome/browser/extensions/api/management/management_api.cc
@@ -193,7 +193,7 @@ scoped_ptr<management::ExtensionInfo> CreateExtensionInfo(
}
const std::set<std::string> perms =
- extension.GetActivePermissions()->GetAPIsAsStrings();
+ extension.permissions_data()->active_permissions()->GetAPIsAsStrings();
if (!perms.empty()) {
std::set<std::string>::const_iterator perms_iter;
for (perms_iter = perms.begin(); perms_iter != perms.end(); ++perms_iter)
@@ -203,7 +203,7 @@ scoped_ptr<management::ExtensionInfo> CreateExtensionInfo(
if (!extension.is_hosted_app()) {
// Skip host permissions for hosted apps.
const URLPatternSet host_perms =
- extension.GetActivePermissions()->explicit_hosts();
+ extension.permissions_data()->active_permissions()->explicit_hosts();
if (!host_perms.is_empty()) {
for (URLPatternSet::const_iterator iter = host_perms.begin();
iter != host_perms.end(); ++iter) {
diff --git a/chrome/browser/extensions/api/messaging/message_service.cc b/chrome/browser/extensions/api/messaging/message_service.cc
index a05331d..8f336f2f4 100644
--- a/chrome/browser/extensions/api/messaging/message_service.cc
+++ b/chrome/browser/extensions/api/messaging/message_service.cc
@@ -41,6 +41,7 @@
#include "extensions/common/manifest_handlers/background_info.h"
#include "extensions/common/manifest_handlers/externally_connectable.h"
#include "extensions/common/manifest_handlers/incognito_info.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "net/base/completion_callback.h"
#include "url/gurl.h"
@@ -368,8 +369,9 @@ void MessageService::OpenChannelToNativeApp(
if (extension_service) {
const Extension* extension =
extension_service->GetExtensionById(source_extension_id, false);
- has_permission = extension && extension->HasAPIPermission(
- APIPermission::kNativeMessaging);
+ has_permission = extension &&
+ extension->permissions_data()->HasAPIPermission(
+ APIPermission::kNativeMessaging);
}
if (!has_permission) {
diff --git a/chrome/browser/extensions/api/permissions/permissions_api.cc b/chrome/browser/extensions/api/permissions/permissions_api.cc
index 977afc9..7d6ff25 100644
--- a/chrome/browser/extensions/api/permissions/permissions_api.cc
+++ b/chrome/browser/extensions/api/permissions/permissions_api.cc
@@ -15,6 +15,7 @@
#include "extensions/common/extension.h"
#include "extensions/common/manifest_handlers/permissions_parser.h"
#include "extensions/common/permissions/permission_message_provider.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "extensions/common/permissions/permissions_info.h"
namespace extensions {
@@ -60,13 +61,14 @@ bool PermissionsContainsFunction::RunSync() {
return false;
results_ = Contains::Results::Create(
- GetExtension()->GetActivePermissions()->Contains(*permissions.get()));
+ GetExtension()->permissions_data()->active_permissions()->Contains(
+ *permissions.get()));
return true;
}
bool PermissionsGetAllFunction::RunSync() {
- scoped_ptr<Permissions> permissions =
- helpers::PackPermissionSet(GetExtension()->GetActivePermissions().get());
+ scoped_ptr<Permissions> permissions = helpers::PackPermissionSet(
+ GetExtension()->permissions_data()->active_permissions().get());
results_ = GetAll::Results::Create(*permissions);
return true;
}
diff --git a/chrome/browser/extensions/api/preference/preference_api.cc b/chrome/browser/extensions/api/preference/preference_api.cc
index 3ef891e..848d315 100644
--- a/chrome/browser/extensions/api/preference/preference_api.cc
+++ b/chrome/browser/extensions/api/preference/preference_api.cc
@@ -33,6 +33,7 @@
#include "extensions/browser/pref_names.h"
#include "extensions/common/error_utils.h"
#include "extensions/common/permissions/api_permission.h"
+#include "extensions/common/permissions/permissions_data.h"
namespace keys = extensions::preference_api_constants;
namespace helpers = extensions::preference_helpers;
@@ -512,7 +513,7 @@ bool PreferenceFunction::ValidateBrowserPref(
APIPermission::ID permission = permission_type == PERMISSION_TYPE_READ
? read_permission
: write_permission;
- if (!GetExtension()->HasAPIPermission(permission)) {
+ if (!GetExtension()->permissions_data()->HasAPIPermission(permission)) {
error_ = ErrorUtils::FormatErrorMessage(
keys::kPermissionErrorMessage, extension_pref_key);
return false;
diff --git a/chrome/browser/extensions/api/preference/preference_helpers.cc b/chrome/browser/extensions/api/preference/preference_helpers.cc
index 09b00f3..237e365 100644
--- a/chrome/browser/extensions/api/preference/preference_helpers.cc
+++ b/chrome/browser/extensions/api/preference/preference_helpers.cc
@@ -15,6 +15,7 @@
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_system.h"
#include "extensions/common/manifest_handlers/incognito_info.h"
+#include "extensions/common/permissions/permissions_data.h"
namespace extensions {
namespace preference_helpers {
@@ -100,7 +101,7 @@ void DispatchEventToExtensions(
std::string extension_id = (*it)->id();
// TODO(bauerb): Only iterate over registered event listeners.
if (router->ExtensionHasEventListener(extension_id, event_name) &&
- (*it)->HasAPIPermission(permission) &&
+ (*it)->permissions_data()->HasAPIPermission(permission) &&
(!incognito || IncognitoInfo::IsSplitMode(it->get()) ||
util::CanCrossIncognito(it->get(), profile))) {
// Inject level of control key-value.
diff --git a/chrome/browser/extensions/api/push_messaging/push_messaging_api.cc b/chrome/browser/extensions/api/push_messaging/push_messaging_api.cc
index 053b445e..bd725c6 100644
--- a/chrome/browser/extensions/api/push_messaging/push_messaging_api.cc
+++ b/chrome/browser/extensions/api/push_messaging/push_messaging_api.cc
@@ -33,6 +33,7 @@
#include "extensions/browser/extensions_browser_client.h"
#include "extensions/common/extension.h"
#include "extensions/common/permissions/api_permission.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "google_apis/gaia/gaia_constants.h"
#include "google_apis/gaia/identity_provider.h"
@@ -339,7 +340,8 @@ void PushMessagingAPI::OnExtensionLoaded(
if (!InitEventRouterAndHandler())
return;
- if (extension->HasAPIPermission(APIPermission::kPushMessaging)) {
+ if (extension->permissions_data()->HasAPIPermission(
+ APIPermission::kPushMessaging)) {
handler_->RegisterExtension(extension->id());
}
}
@@ -351,7 +353,8 @@ void PushMessagingAPI::OnExtensionUnloaded(
if (!InitEventRouterAndHandler())
return;
- if (extension->HasAPIPermission(APIPermission::kPushMessaging)) {
+ if (extension->permissions_data()->HasAPIPermission(
+ APIPermission::kPushMessaging)) {
handler_->UnregisterExtension(extension->id());
}
}
@@ -365,7 +368,8 @@ void PushMessagingAPI::Observe(int type,
const Extension* extension =
content::Details<const InstalledExtensionInfo>(details)->extension;
- if (extension->HasAPIPermission(APIPermission::kPushMessaging)) {
+ if (extension->permissions_data()->HasAPIPermission(
+ APIPermission::kPushMessaging)) {
handler_->SuppressInitialInvalidationsForExtension(extension->id());
}
}
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 b4e8158d..93ef588 100644
--- a/chrome/browser/extensions/api/web_request/web_request_api.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_api.cc
@@ -2214,11 +2214,12 @@ bool WebRequestInternalAddEventListenerFunction::RunSync() {
// We check automatically whether the extension has the 'webRequest'
// permission. For blocking calls we require the additional permission
// 'webRequestBlocking'.
- if ((!is_web_view_guest && extra_info_spec &
- (ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING |
- ExtensionWebRequestEventRouter::ExtraInfoSpec::ASYNC_BLOCKING)) &&
- !extension->HasAPIPermission(
- extensions::APIPermission::kWebRequestBlocking)) {
+ if ((!is_web_view_guest &&
+ extra_info_spec &
+ (ExtensionWebRequestEventRouter::ExtraInfoSpec::BLOCKING |
+ ExtensionWebRequestEventRouter::ExtraInfoSpec::ASYNC_BLOCKING)) &&
+ !extension->permissions_data()->HasAPIPermission(
+ extensions::APIPermission::kWebRequestBlocking)) {
error_ = keys::kBlockingPermissionRequired;
return false;
}
diff --git a/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.cc b/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.cc
index 0edc00b..0b52214 100644
--- a/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.cc
+++ b/chrome/browser/extensions/api/webrtc_audio_private/webrtc_audio_private_api.cc
@@ -17,6 +17,7 @@
#include "extensions/browser/event_router.h"
#include "extensions/browser/extension_system.h"
#include "extensions/common/error_utils.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "media/audio/audio_manager_base.h"
#include "media/audio/audio_output_controller.h"
@@ -90,7 +91,7 @@ void WebrtcAudioPrivateEventService::SignalEvent() {
it != extensions->end(); ++it) {
const std::string& extension_id = (*it)->id();
if (router->ExtensionHasEventListener(extension_id, kEventName) &&
- (*it)->HasAPIPermission("webrtcAudioPrivate")) {
+ (*it)->permissions_data()->HasAPIPermission("webrtcAudioPrivate")) {
scoped_ptr<Event> event(
new Event(kEventName, make_scoped_ptr(new base::ListValue()).Pass()));
router->DispatchEventToExtension(extension_id, event.Pass());
diff --git a/chrome/browser/extensions/convert_web_app_browsertest.cc b/chrome/browser/extensions/convert_web_app_browsertest.cc
index 955e49c..b53893e 100644
--- a/chrome/browser/extensions/convert_web_app_browsertest.cc
+++ b/chrome/browser/extensions/convert_web_app_browsertest.cc
@@ -25,6 +25,7 @@
#include "extensions/common/extension_icon_set.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
#include "extensions/common/permissions/permission_set.h"
+#include "extensions/common/permissions/permissions_data.h"
namespace extensions {
@@ -89,7 +90,11 @@ IN_PROC_BROWSER_TEST_F(ExtensionFromWebAppTest, DISABLED_Basic) {
AppLaunchInfo::GetLaunchWebURL(installed_extension_));
EXPECT_EQ(LAUNCH_CONTAINER_TAB,
AppLaunchInfo::GetLaunchContainer(installed_extension_));
- EXPECT_EQ(0u, installed_extension_->GetActivePermissions()->apis().size());
+ EXPECT_EQ(0u,
+ installed_extension_->permissions_data()
+ ->active_permissions()
+ ->apis()
+ .size());
EXPECT_EQ(0u, IconsInfo::GetIcons(installed_extension_).map().size());
}
diff --git a/chrome/browser/extensions/convert_web_app_unittest.cc b/chrome/browser/extensions/convert_web_app_unittest.cc
index b8be22f..48d262b 100644
--- a/chrome/browser/extensions/convert_web_app_unittest.cc
+++ b/chrome/browser/extensions/convert_web_app_unittest.cc
@@ -23,6 +23,7 @@
#include "extensions/common/extension_resource.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
#include "extensions/common/permissions/permission_set.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "extensions/common/url_pattern.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/codec/png_codec.h"
@@ -129,7 +130,8 @@ TEST(ExtensionFromWebApp, Basic) {
EXPECT_EQ(base::UTF16ToUTF8(web_app.title), extension->name());
EXPECT_EQ(base::UTF16ToUTF8(web_app.description), extension->description());
EXPECT_EQ(web_app.app_url, AppLaunchInfo::GetFullLaunchURL(extension.get()));
- EXPECT_EQ(0u, extension->GetActivePermissions()->apis().size());
+ EXPECT_EQ(0u,
+ extension->permissions_data()->active_permissions()->apis().size());
ASSERT_EQ(0u, extension->web_extent().patterns().size());
EXPECT_EQ(web_app.icons.size(),
@@ -175,7 +177,8 @@ TEST(ExtensionFromWebApp, Minimal) {
EXPECT_EQ("", extension->description());
EXPECT_EQ(web_app.app_url, AppLaunchInfo::GetFullLaunchURL(extension.get()));
EXPECT_EQ(0u, IconsInfo::GetIcons(extension.get()).map().size());
- EXPECT_EQ(0u, extension->GetActivePermissions()->apis().size());
+ EXPECT_EQ(0u,
+ extension->permissions_data()->active_permissions()->apis().size());
ASSERT_EQ(0u, extension->web_extent().patterns().size());
}
diff --git a/chrome/browser/extensions/extension_disabled_ui.cc b/chrome/browser/extensions/extension_disabled_ui.cc
index 3bdc8e5..1bd9f92 100644
--- a/chrome/browser/extensions/extension_disabled_ui.cc
+++ b/chrome/browser/extensions/extension_disabled_ui.cc
@@ -39,6 +39,7 @@
#include "extensions/common/manifest_handlers/icons_handler.h"
#include "extensions/common/permissions/permission_message_provider.h"
#include "extensions/common/permissions/permission_set.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "grit/chromium_strings.h"
#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
@@ -290,7 +291,8 @@ ExtensionDisabledGlobalError::GetBubbleViewMessages() {
std::vector<base::string16> messages;
std::vector<base::string16> permission_warnings =
extensions::PermissionMessageProvider::Get()->GetWarningMessages(
- extension_->GetActivePermissions(), extension_->GetType());
+ extension_->permissions_data()->active_permissions(),
+ extension_->GetType());
if (is_remote_install_) {
messages.push_back(l10n_util::GetStringFUTF16(
extension_->is_app()
diff --git a/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc b/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
index 5ec0e8b..24d802f 100644
--- a/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
+++ b/chrome/browser/extensions/extension_gcm_app_handler_unittest.cc
@@ -41,6 +41,7 @@
#include "extensions/common/manifest.h"
#include "extensions/common/manifest_constants.h"
#include "extensions/common/permissions/api_permission.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "testing/gtest/include/gtest/gtest.h"
#if !defined(OS_ANDROID)
@@ -257,7 +258,8 @@ class ExtensionGCMAppHandlerTest : public testing::Test {
Extension::NO_FLAGS,
&error);
EXPECT_TRUE(extension.get()) << error;
- EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kGcm));
+ EXPECT_TRUE(
+ extension->permissions_data()->HasAPIPermission(APIPermission::kGcm));
return extension;
}
diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc
index f0947c2..f0ba3c7 100644
--- a/chrome/browser/extensions/extension_install_prompt.cc
+++ b/chrome/browser/extensions/extension_install_prompt.cc
@@ -530,7 +530,7 @@ void ExtensionInstallPrompt::ConfirmStandaloneInstall(
const ExtensionInstallPrompt::Prompt& prompt) {
DCHECK(ui_loop_ == base::MessageLoop::current());
extension_ = extension;
- permissions_ = extension->GetActivePermissions();
+ permissions_ = extension->permissions_data()->active_permissions();
delegate_ = delegate;
prompt_ = prompt;
@@ -556,7 +556,7 @@ void ExtensionInstallPrompt::ConfirmInstall(
const ShowDialogCallback& show_dialog_callback) {
DCHECK(ui_loop_ == base::MessageLoop::current());
extension_ = extension;
- permissions_ = extension->GetActivePermissions();
+ permissions_ = extension->permissions_data()->active_permissions();
delegate_ = delegate;
prompt_.set_type(INSTALL_PROMPT);
show_dialog_callback_ = show_dialog_callback;
@@ -583,7 +583,7 @@ void ExtensionInstallPrompt::ConfirmReEnable(Delegate* delegate,
const Extension* extension) {
DCHECK(ui_loop_ == base::MessageLoop::current());
extension_ = extension;
- permissions_ = extension->GetActivePermissions();
+ permissions_ = extension->permissions_data()->active_permissions();
delegate_ = delegate;
bool is_remote_install =
install_ui_->profile() &&
@@ -607,7 +607,7 @@ void ExtensionInstallPrompt::ConfirmExternalInstall(
const Prompt& prompt) {
DCHECK(ui_loop_ == base::MessageLoop::current());
extension_ = extension;
- permissions_ = extension->GetActivePermissions();
+ permissions_ = extension->permissions_data()->active_permissions();
delegate_ = delegate;
prompt_ = prompt;
show_dialog_callback_ = show_dialog_callback;
@@ -634,7 +634,7 @@ void ExtensionInstallPrompt::ReviewPermissions(
const std::vector<base::FilePath>& retained_file_paths) {
DCHECK(ui_loop_ == base::MessageLoop::current());
extension_ = extension;
- permissions_ = extension->GetActivePermissions();
+ permissions_ = extension->permissions_data()->active_permissions();
prompt_.set_retained_files(retained_file_paths);
delegate_ = delegate;
prompt_.set_type(POST_INSTALL_PERMISSIONS_PROMPT);
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
index bb23964..c124c72 100644
--- a/chrome/browser/extensions/extension_service.cc
+++ b/chrome/browser/extensions/extension_service.cc
@@ -1672,9 +1672,9 @@ void ExtensionService::CheckPermissionsIncrease(const Extension* extension,
// to a version that requires additional privileges.
is_privilege_increase =
extensions::PermissionMessageProvider::Get()->IsPrivilegeIncrease(
- granted_permissions,
- extension->GetActivePermissions().get(),
- extension->GetType());
+ granted_permissions,
+ extension->permissions_data()->active_permissions().get(),
+ extension->GetType());
}
if (is_extension_installed) {
diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc
index da2e193..a0d61e5 100644
--- a/chrome/browser/extensions/extension_service_unittest.cc
+++ b/chrome/browser/extensions/extension_service_unittest.cc
@@ -104,6 +104,7 @@
#include "extensions/common/manifest_constants.h"
#include "extensions/common/manifest_handlers/background_info.h"
#include "extensions/common/permissions/permission_set.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "extensions/common/switches.h"
#include "extensions/common/url_pattern.h"
#include "extensions/common/value_builder.h"
@@ -1401,8 +1402,9 @@ TEST_F(ExtensionServiceTest, LoadAllExtensionsFromDirectorySuccess) {
expected_patterns.ClearPatterns();
AddPattern(&expected_patterns, "http://*.google.com/*");
AddPattern(&expected_patterns, "https://*.google.com/*");
- EXPECT_EQ(expected_patterns,
- extension->GetActivePermissions()->explicit_hosts());
+ EXPECT_EQ(
+ expected_patterns,
+ extension->permissions_data()->active_permissions()->explicit_hosts());
EXPECT_EQ(std::string(good1), loaded_[1]->id());
EXPECT_EQ(std::string("My extension 2"), loaded_[1]->name());
@@ -2605,7 +2607,7 @@ TEST_F(ExtensionServiceTest, InstallAppsWithUnlimitedStorage) {
ValidatePrefKeyCount(++pref_count);
ASSERT_EQ(1u, registry_->enabled_extensions().size());
const std::string id1 = extension->id();
- EXPECT_TRUE(extension->HasAPIPermission(
+ EXPECT_TRUE(extension->permissions_data()->HasAPIPermission(
APIPermission::kUnlimitedStorage));
EXPECT_TRUE(extension->web_extent().MatchesURL(
extensions::AppLaunchInfo::GetFullLaunchURL(extension)));
@@ -2619,7 +2621,7 @@ TEST_F(ExtensionServiceTest, InstallAppsWithUnlimitedStorage) {
ValidatePrefKeyCount(++pref_count);
ASSERT_EQ(2u, registry_->enabled_extensions().size());
const std::string id2 = extension->id();
- EXPECT_TRUE(extension->HasAPIPermission(
+ EXPECT_TRUE(extension->permissions_data()->HasAPIPermission(
APIPermission::kUnlimitedStorage));
EXPECT_TRUE(extension->web_extent().MatchesURL(
extensions::AppLaunchInfo::GetFullLaunchURL(extension)));
@@ -4520,7 +4522,7 @@ TEST_F(ExtensionServiceTest, ClearAppData) {
ValidatePrefKeyCount(++pref_count);
ASSERT_EQ(1u, registry_->enabled_extensions().size());
const std::string id1 = extension->id();
- EXPECT_TRUE(extension->HasAPIPermission(
+ EXPECT_TRUE(extension->permissions_data()->HasAPIPermission(
APIPermission::kUnlimitedStorage));
const GURL origin1(
extensions::AppLaunchInfo::GetFullLaunchURL(extension).GetOrigin());
@@ -4533,7 +4535,7 @@ TEST_F(ExtensionServiceTest, ClearAppData) {
ValidatePrefKeyCount(++pref_count);
ASSERT_EQ(2u, registry_->enabled_extensions().size());
const std::string id2 = extension->id();
- EXPECT_TRUE(extension->HasAPIPermission(
+ EXPECT_TRUE(extension->permissions_data()->HasAPIPermission(
APIPermission::kUnlimitedStorage));
EXPECT_TRUE(extension->web_extent().MatchesURL(
extensions::AppLaunchInfo::GetFullLaunchURL(extension)));
diff --git a/chrome/browser/extensions/extension_special_storage_policy.cc b/chrome/browser/extensions/extension_special_storage_policy.cc
index 219e8ec..57c91fb 100644
--- a/chrome/browser/extensions/extension_special_storage_policy.cc
+++ b/chrome/browser/extensions/extension_special_storage_policy.cc
@@ -20,6 +20,7 @@
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_set.h"
+#include "extensions/common/permissions/permissions_data.h"
using content::BrowserThread;
using extensions::APIPermission;
@@ -103,8 +104,10 @@ void ExtensionSpecialStoragePolicy::GrantRightsForExtension(
const extensions::Extension* extension) {
DCHECK(extension);
if (!(NeedsProtection(extension) ||
- extension->HasAPIPermission(APIPermission::kUnlimitedStorage) ||
- extension->HasAPIPermission(APIPermission::kFileBrowserHandler) ||
+ extension->permissions_data()->HasAPIPermission(
+ APIPermission::kUnlimitedStorage) ||
+ extension->permissions_data()->HasAPIPermission(
+ APIPermission::kFileBrowserHandler) ||
extensions::AppIsolationInfo::HasIsolatedStorage(extension) ||
extension->is_app())) {
return;
@@ -119,11 +122,13 @@ void ExtensionSpecialStoragePolicy::GrantRightsForExtension(
if (extension->is_app())
installed_apps_.Add(extension);
- if (extension->HasAPIPermission(APIPermission::kUnlimitedStorage) &&
+ if (extension->permissions_data()->HasAPIPermission(
+ APIPermission::kUnlimitedStorage) &&
unlimited_extensions_.Add(extension))
change_flags |= SpecialStoragePolicy::STORAGE_UNLIMITED;
- if (extension->HasAPIPermission(APIPermission::kFileBrowserHandler))
+ if (extension->permissions_data()->HasAPIPermission(
+ APIPermission::kFileBrowserHandler))
file_handler_extensions_.Add(extension);
if (extensions::AppIsolationInfo::HasIsolatedStorage(extension))
@@ -140,8 +145,10 @@ void ExtensionSpecialStoragePolicy::RevokeRightsForExtension(
const extensions::Extension* extension) {
DCHECK(extension);
if (!(NeedsProtection(extension) ||
- extension->HasAPIPermission(APIPermission::kUnlimitedStorage) ||
- extension->HasAPIPermission(APIPermission::kFileBrowserHandler) ||
+ extension->permissions_data()->HasAPIPermission(
+ APIPermission::kUnlimitedStorage) ||
+ extension->permissions_data()->HasAPIPermission(
+ APIPermission::kFileBrowserHandler) ||
extensions::AppIsolationInfo::HasIsolatedStorage(extension) ||
extension->is_app())) {
return;
@@ -155,11 +162,13 @@ void ExtensionSpecialStoragePolicy::RevokeRightsForExtension(
if (extension->is_app())
installed_apps_.Remove(extension);
- if (extension->HasAPIPermission(APIPermission::kUnlimitedStorage) &&
+ if (extension->permissions_data()->HasAPIPermission(
+ APIPermission::kUnlimitedStorage) &&
unlimited_extensions_.Remove(extension))
change_flags |= SpecialStoragePolicy::STORAGE_UNLIMITED;
- if (extension->HasAPIPermission(APIPermission::kFileBrowserHandler))
+ if (extension->permissions_data()->HasAPIPermission(
+ APIPermission::kFileBrowserHandler))
file_handler_extensions_.Remove(extension);
if (extensions::AppIsolationInfo::HasIsolatedStorage(extension))
diff --git a/chrome/browser/extensions/extension_storage_monitor.cc b/chrome/browser/extensions/extension_storage_monitor.cc
index e89201d..88b5013 100644
--- a/chrome/browser/extensions/extension_storage_monitor.cc
+++ b/chrome/browser/extensions/extension_storage_monitor.cc
@@ -26,6 +26,7 @@
#include "extensions/browser/extension_system.h"
#include "extensions/common/extension.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "grit/generated_resources.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/message_center/message_center.h"
@@ -69,7 +70,8 @@ const char kPrefDisableStorageNotifications[] = "disable_storage_notifications";
bool ShouldMonitorStorageFor(const Extension* extension) {
// Only monitor storage for extensions that are granted unlimited storage.
// Do not monitor storage for component extensions.
- return extension->HasAPIPermission(APIPermission::kUnlimitedStorage) &&
+ return extension->permissions_data()->HasAPIPermission(
+ APIPermission::kUnlimitedStorage) &&
extension->location() != Manifest::COMPONENT;
}
diff --git a/chrome/browser/extensions/extension_tab_util.cc b/chrome/browser/extensions/extension_tab_util.cc
index fc1d3c5..7f52623 100644
--- a/chrome/browser/extensions/extension_tab_util.cc
+++ b/chrome/browser/extensions/extension_tab_util.cc
@@ -402,8 +402,9 @@ void ExtensionTabUtil::ScrubTabValueForExtension(
void ExtensionTabUtil::ScrubTabForExtension(const Extension* extension,
api::tabs::Tab* tab) {
- bool has_permission = extension && extension->HasAPIPermission(
- APIPermission::kTab);
+ bool has_permission =
+ extension &&
+ extension->permissions_data()->HasAPIPermission(APIPermission::kTab);
if (!has_permission) {
tab->url.reset();
diff --git a/chrome/browser/extensions/permissions_updater.cc b/chrome/browser/extensions/permissions_updater.cc
index c132adb..814c5b3 100644
--- a/chrome/browser/extensions/permissions_updater.cc
+++ b/chrome/browser/extensions/permissions_updater.cc
@@ -36,7 +36,7 @@ PermissionsUpdater::~PermissionsUpdater() {}
void PermissionsUpdater::AddPermissions(
const Extension* extension, const PermissionSet* permissions) {
scoped_refptr<const PermissionSet> existing(
- extension->GetActivePermissions());
+ extension->permissions_data()->active_permissions());
scoped_refptr<PermissionSet> total(
PermissionSet::CreateUnion(existing.get(), permissions));
scoped_refptr<PermissionSet> added(
@@ -53,7 +53,7 @@ void PermissionsUpdater::AddPermissions(
void PermissionsUpdater::RemovePermissions(
const Extension* extension, const PermissionSet* permissions) {
scoped_refptr<const PermissionSet> existing(
- extension->GetActivePermissions());
+ extension->permissions_data()->active_permissions());
scoped_refptr<PermissionSet> total(
PermissionSet::CreateDifference(existing.get(), permissions));
scoped_refptr<PermissionSet> removed(
@@ -77,7 +77,8 @@ void PermissionsUpdater::GrantActivePermissions(const Extension* extension) {
return;
ExtensionPrefs::Get(profile_)->AddGrantedPermissions(
- extension->id(), extension->GetActivePermissions().get());
+ extension->id(),
+ extension->permissions_data()->active_permissions().get());
}
void PermissionsUpdater::UpdateActivePermissions(
diff --git a/chrome/browser/extensions/permissions_updater_unittest.cc b/chrome/browser/extensions/permissions_updater_unittest.cc
index 70cd6cf..c9c8c80 100644
--- a/chrome/browser/extensions/permissions_updater_unittest.cc
+++ b/chrome/browser/extensions/permissions_updater_unittest.cc
@@ -21,6 +21,7 @@
#include "extensions/browser/extension_prefs.h"
#include "extensions/common/extension.h"
#include "extensions/common/permissions/permission_set.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "testing/gtest/include/gtest/gtest.h"
using extension_test_util::LoadManifest;
@@ -130,9 +131,9 @@ TEST_F(PermissionsUpdaterTest, AddAndRemovePermissions) {
// Make sure it loaded properly.
scoped_refptr<const PermissionSet> permissions =
- extension->GetActivePermissions();
+ extension->permissions_data()->active_permissions();
ASSERT_EQ(*default_permissions.get(),
- *extension->GetActivePermissions().get());
+ *extension->permissions_data()->active_permissions().get());
// Add a few permissions.
APIPermissionSet apis;
@@ -161,7 +162,7 @@ TEST_F(PermissionsUpdaterTest, AddAndRemovePermissions) {
scoped_refptr<PermissionSet> active_permissions =
PermissionSet::CreateUnion(default_permissions.get(), delta.get());
ASSERT_EQ(*active_permissions.get(),
- *extension->GetActivePermissions().get());
+ *extension->permissions_data()->active_permissions().get());
// Verify that the new granted and active permissions were also stored
// in the extension preferences. In this case, the granted permissions should
@@ -197,7 +198,7 @@ TEST_F(PermissionsUpdaterTest, AddAndRemovePermissions) {
active_permissions =
PermissionSet::CreateDifference(active_permissions.get(), delta.get());
ASSERT_EQ(*active_permissions.get(),
- *extension->GetActivePermissions().get());
+ *extension->permissions_data()->active_permissions().get());
// Verify that the extension prefs hold the new active permissions and the
// same granted permissions.
diff --git a/chrome/browser/extensions/suggest_permission_util.cc b/chrome/browser/extensions/suggest_permission_util.cc
index 4490762..66a0f6a 100644
--- a/chrome/browser/extensions/suggest_permission_util.cc
+++ b/chrome/browser/extensions/suggest_permission_util.cc
@@ -11,6 +11,7 @@
#include "extensions/browser/process_manager.h"
#include "extensions/common/extension.h"
#include "extensions/common/extension_messages.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "extensions/common/permissions/permissions_info.h"
using content::CONSOLE_MESSAGE_LEVEL_WARNING;
@@ -49,7 +50,7 @@ bool IsExtensionWithPermissionOrSuggestInConsole(
APIPermission::ID permission,
const Extension* extension,
content::RenderViewHost* host) {
- if (extension && extension->HasAPIPermission(permission))
+ if (extension && extension->permissions_data()->HasAPIPermission(permission))
return true;
if (extension)
diff --git a/chrome/browser/managed_mode/managed_user_service.h b/chrome/browser/managed_mode/managed_user_service.h
index e8b69d1..e6e1394 100644
--- a/chrome/browser/managed_mode/managed_user_service.h
+++ b/chrome/browser/managed_mode/managed_user_service.h
@@ -9,6 +9,7 @@
#include <vector>
#include "base/callback.h"
+#include "base/gtest_prod_util.h"
#include "base/memory/scoped_ptr.h"
#include "base/prefs/pref_change_registrar.h"
#include "base/scoped_observer.h"
diff --git a/chrome/browser/media/media_capture_devices_dispatcher.cc b/chrome/browser/media/media_capture_devices_dispatcher.cc
index 87fcb2a..05d32ec 100644
--- a/chrome/browser/media/media_capture_devices_dispatcher.cc
+++ b/chrome/browser/media/media_capture_devices_dispatcher.cc
@@ -41,6 +41,7 @@
#include "content/public/common/media_stream_request.h"
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "grit/generated_resources.h"
#include "media/audio/audio_manager_base.h"
#include "media/base/media_switches.h"
@@ -550,14 +551,16 @@ void MediaCaptureDevicesDispatcher::ProcessTabCaptureAccessRequest(
if (request.audio_type == content::MEDIA_TAB_AUDIO_CAPTURE &&
tab_capture_allowed &&
- extension->HasAPIPermission(extensions::APIPermission::kTabCapture)) {
+ extension->permissions_data()->HasAPIPermission(
+ extensions::APIPermission::kTabCapture)) {
devices.push_back(content::MediaStreamDevice(
content::MEDIA_TAB_AUDIO_CAPTURE, std::string(), std::string()));
}
if (request.video_type == content::MEDIA_TAB_VIDEO_CAPTURE &&
tab_capture_allowed &&
- extension->HasAPIPermission(extensions::APIPermission::kTabCapture)) {
+ extension->permissions_data()->HasAPIPermission(
+ extensions::APIPermission::kTabCapture)) {
devices.push_back(content::MediaStreamDevice(
content::MEDIA_TAB_VIDEO_CAPTURE, std::string(), std::string()));
}
@@ -585,12 +588,14 @@ void MediaCaptureDevicesDispatcher::
Profile::FromBrowserContext(web_contents->GetBrowserContext());
if (request.audio_type == content::MEDIA_DEVICE_AUDIO_CAPTURE &&
- extension->HasAPIPermission(extensions::APIPermission::kAudioCapture)) {
+ extension->permissions_data()->HasAPIPermission(
+ extensions::APIPermission::kAudioCapture)) {
GetDefaultDevicesForProfile(profile, true, false, &devices);
}
if (request.video_type == content::MEDIA_DEVICE_VIDEO_CAPTURE &&
- extension->HasAPIPermission(extensions::APIPermission::kVideoCapture)) {
+ extension->permissions_data()->HasAPIPermission(
+ extensions::APIPermission::kVideoCapture)) {
GetDefaultDevicesForProfile(profile, false, true, &devices);
}
diff --git a/chrome/browser/notifications/message_center_settings_controller.cc b/chrome/browser/notifications/message_center_settings_controller.cc
index d5613ce..9a6d732 100644
--- a/chrome/browser/notifications/message_center_settings_controller.cc
+++ b/chrome/browser/notifications/message_center_settings_controller.cc
@@ -35,6 +35,8 @@
#include "extensions/browser/extension_system.h"
#include "extensions/browser/extension_util.h"
#include "extensions/common/constants.h"
+#include "extensions/common/extension.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "grit/theme_resources.h"
#include "grit/ui_strings.h"
#include "ui/base/l10n/l10n_util.h"
@@ -227,7 +229,7 @@ void MessageCenterSettingsController::GetNotifierList(
iter != extension_set->end();
++iter) {
const extensions::Extension* extension = iter->get();
- if (!extension->HasAPIPermission(
+ if (!extension->permissions_data()->HasAPIPermission(
extensions::APIPermission::kNotification)) {
continue;
}
diff --git a/chrome/browser/ui/app_list/drive/drive_app_converter_browsertest.cc b/chrome/browser/ui/app_list/drive/drive_app_converter_browsertest.cc
index ec6ba39..095a51b 100644
--- a/chrome/browser/ui/app_list/drive/drive_app_converter_browsertest.cc
+++ b/chrome/browser/ui/app_list/drive/drive_app_converter_browsertest.cc
@@ -20,6 +20,7 @@
#include "extensions/common/extension.h"
#include "extensions/common/manifest_handlers/icons_handler.h"
#include "extensions/common/permissions/permission_set.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -110,7 +111,7 @@ IN_PROC_BROWSER_TEST_F(DriveAppConverterTest, GoodApp) {
EXPECT_EQ(GURL(kAppUrl), extensions::AppLaunchInfo::GetLaunchWebURL(app));
EXPECT_EQ(extensions::LAUNCH_CONTAINER_TAB,
extensions::AppLaunchInfo::GetLaunchContainer(app));
- EXPECT_EQ(0u, app->GetActivePermissions()->apis().size());
+ EXPECT_EQ(0u, app->permissions_data()->active_permissions()->apis().size());
EXPECT_EQ(1u, extensions::IconsInfo::GetIcons(app).map().size());
const extensions::Extension* installed =
diff --git a/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_tab.cc b/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_tab.cc
index 6247254..9236ebc 100644
--- a/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_tab.cc
+++ b/chrome/browser/ui/views/apps/app_info_dialog/app_info_permissions_tab.cc
@@ -14,6 +14,7 @@
#include "extensions/common/manifest_handlers/permissions_parser.h"
#include "extensions/common/permissions/api_permission.h"
#include "extensions/common/permissions/permission_message_provider.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "grit/generated_resources.h"
#include "grit/theme_resources.h"
#include "ui/base/l10n/l10n_util.h"
@@ -467,7 +468,8 @@ AppInfoPermissionsTab::GetOptionalPermissionMessages() const {
const std::vector<base::FilePath>
AppInfoPermissionsTab::GetRetainedFilePermissions() const {
std::vector<base::FilePath> retained_file_paths;
- if (app_->HasAPIPermission(extensions::APIPermission::kFileSystem)) {
+ if (app_->permissions_data()->HasAPIPermission(
+ extensions::APIPermission::kFileSystem)) {
std::vector<apps::SavedFileEntry> retained_file_entries =
apps::SavedFilesService::Get(profile_)->GetAllFileEntries(app_->id());
for (std::vector<apps::SavedFileEntry>::const_iterator it =
diff --git a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc
index e50de2f..ccd4e47 100644
--- a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc
+++ b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc
@@ -1066,7 +1066,8 @@ void ExtensionSettingsHandler::HandlePermissionsMessage(
extension_id_prompting_ = extension->id();
prompt_.reset(new ExtensionInstallPrompt(web_contents()));
std::vector<base::FilePath> retained_file_paths;
- if (extension->HasAPIPermission(APIPermission::kFileSystem)) {
+ if (extension->permissions_data()->HasAPIPermission(
+ APIPermission::kFileSystem)) {
std::vector<apps::SavedFileEntry> retained_file_entries =
apps::SavedFilesService::Get(Profile::FromWebUI(
web_ui()))->GetAllFileEntries(extension_id_prompting_);
diff --git a/chrome/browser/ui/webui/options/content_settings_handler.cc b/chrome/browser/ui/webui/options/content_settings_handler.cc
index 4626986..3891aa0 100644
--- a/chrome/browser/ui/webui/options/content_settings_handler.cc
+++ b/chrome/browser/ui/webui/options/content_settings_handler.cc
@@ -44,6 +44,7 @@
#include "content/public/common/page_zoom.h"
#include "extensions/common/extension_set.h"
#include "extensions/common/permissions/api_permission.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "grit/generated_resources.h"
#include "grit/locale_settings.h"
#include "ui/base/l10n/l10n_util.h"
@@ -210,7 +211,8 @@ base::DictionaryValue* GetNotificationExceptionForPage(
template <APIPermission::ID permission>
bool HostedAppHasPermission(
const extensions::Extension& extension, Profile* /*profile*/) {
- return extension.is_hosted_app() && extension.HasAPIPermission(permission);
+ return extension.is_hosted_app() &&
+ extension.permissions_data()->HasAPIPermission(permission);
}
// Add an "Allow"-entry to the list of |exceptions| for a |url_pattern| from
diff --git a/chrome/common/extensions/manifest_tests/extension_manifests_old_unittest.cc b/chrome/common/extensions/manifest_tests/extension_manifests_old_unittest.cc
index b8c4e5f..2091280 100644
--- a/chrome/common/extensions/manifest_tests/extension_manifests_old_unittest.cc
+++ b/chrome/common/extensions/manifest_tests/extension_manifests_old_unittest.cc
@@ -5,6 +5,7 @@
#include "chrome/common/extensions/manifest_tests/extension_manifest_test.h"
#include "extensions/common/extension.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "testing/gtest/include/gtest/gtest.h"
// Tests that the old permission name "unlimited_storage" still works for
@@ -13,6 +14,6 @@ TEST_F(ExtensionManifestTest, OldUnlimitedStoragePermission) {
scoped_refptr<extensions::Extension> extension = LoadAndExpectSuccess(
"old_unlimited_storage.json", extensions::Manifest::INTERNAL,
extensions::Extension::NO_FLAGS);
- EXPECT_TRUE(extension->HasAPIPermission(
+ EXPECT_TRUE(extension->permissions_data()->HasAPIPermission(
extensions::APIPermission::kUnlimitedStorage));
}
diff --git a/chrome/common/extensions/permissions/permission_set_unittest.cc b/chrome/common/extensions/permissions/permission_set_unittest.cc
index 864bfbf..907eb5c 100644
--- a/chrome/common/extensions/permissions/permission_set_unittest.cc
+++ b/chrome/common/extensions/permissions/permission_set_unittest.cc
@@ -131,7 +131,7 @@ TEST(PermissionsTest, EffectiveHostPermissions) {
scoped_refptr<const PermissionSet> permissions;
extension = LoadManifest("effective_host_permissions", "empty.json");
- permissions = extension->GetActivePermissions();
+ permissions = extension->permissions_data()->active_permissions();
EXPECT_EQ(0u,
extension->permissions_data()
->GetEffectiveHostPermissions()
@@ -142,7 +142,7 @@ TEST(PermissionsTest, EffectiveHostPermissions) {
EXPECT_FALSE(permissions->HasEffectiveAccessToAllHosts());
extension = LoadManifest("effective_host_permissions", "one_host.json");
- permissions = extension->GetActivePermissions();
+ permissions = extension->permissions_data()->active_permissions();
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(
GURL("http://www.google.com")));
EXPECT_FALSE(permissions->HasEffectiveAccessToURL(
@@ -151,14 +151,14 @@ TEST(PermissionsTest, EffectiveHostPermissions) {
extension = LoadManifest("effective_host_permissions",
"one_host_wildcard.json");
- permissions = extension->GetActivePermissions();
+ permissions = extension->permissions_data()->active_permissions();
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(GURL("http://google.com")));
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(
GURL("http://foo.google.com")));
EXPECT_FALSE(permissions->HasEffectiveAccessToAllHosts());
extension = LoadManifest("effective_host_permissions", "two_hosts.json");
- permissions = extension->GetActivePermissions();
+ permissions = extension->permissions_data()->active_permissions();
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(
GURL("http://www.google.com")));
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(
@@ -167,14 +167,14 @@ TEST(PermissionsTest, EffectiveHostPermissions) {
extension = LoadManifest("effective_host_permissions",
"https_not_considered.json");
- permissions = extension->GetActivePermissions();
+ permissions = extension->permissions_data()->active_permissions();
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(GURL("http://google.com")));
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(GURL("https://google.com")));
EXPECT_FALSE(permissions->HasEffectiveAccessToAllHosts());
extension = LoadManifest("effective_host_permissions",
"two_content_scripts.json");
- permissions = extension->GetActivePermissions();
+ permissions = extension->permissions_data()->active_permissions();
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(GURL("http://google.com")));
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(
GURL("http://www.reddit.com")));
@@ -183,7 +183,7 @@ TEST(PermissionsTest, EffectiveHostPermissions) {
EXPECT_FALSE(permissions->HasEffectiveAccessToAllHosts());
extension = LoadManifest("effective_host_permissions", "all_hosts.json");
- permissions = extension->GetActivePermissions();
+ permissions = extension->permissions_data()->active_permissions();
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(GURL("http://test/")));
EXPECT_FALSE(permissions->HasEffectiveAccessToURL(GURL("https://test/")));
EXPECT_TRUE(
@@ -191,14 +191,14 @@ TEST(PermissionsTest, EffectiveHostPermissions) {
EXPECT_TRUE(permissions->HasEffectiveAccessToAllHosts());
extension = LoadManifest("effective_host_permissions", "all_hosts2.json");
- permissions = extension->GetActivePermissions();
+ permissions = extension->permissions_data()->active_permissions();
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(GURL("http://test/")));
EXPECT_TRUE(
permissions->HasEffectiveAccessToURL(GURL("http://www.google.com")));
EXPECT_TRUE(permissions->HasEffectiveAccessToAllHosts());
extension = LoadManifest("effective_host_permissions", "all_hosts3.json");
- permissions = extension->GetActivePermissions();
+ permissions = extension->permissions_data()->active_permissions();
EXPECT_FALSE(permissions->HasEffectiveAccessToURL(GURL("http://test/")));
EXPECT_TRUE(permissions->HasEffectiveAccessToURL(GURL("https://test/")));
EXPECT_TRUE(
@@ -623,9 +623,9 @@ TEST(PermissionsTest, IsPrivilegeIncrease) {
continue;
scoped_refptr<const PermissionSet> old_p(
- old_extension->GetActivePermissions());
+ old_extension->permissions_data()->active_permissions());
scoped_refptr<const PermissionSet> new_p(
- new_extension->GetActivePermissions());
+ new_extension->permissions_data()->active_permissions());
Manifest::Type extension_type = old_extension->GetType();
bool increased = PermissionMessageProvider::Get()->IsPrivilegeIncrease(
@@ -947,9 +947,8 @@ TEST(PermissionsTest, GetWarningMessages_AudioVideo) {
scoped_refptr<Extension> extension =
LoadManifest("permissions", "audio-video.json");
const PermissionMessageProvider* provider = PermissionMessageProvider::Get();
- PermissionSet* set =
- const_cast<PermissionSet*>(
- extension->GetActivePermissions().get());
+ PermissionSet* set = const_cast<PermissionSet*>(
+ extension->permissions_data()->active_permissions().get());
std::vector<base::string16> warnings =
provider->GetWarningMessages(set, extension->GetType());
EXPECT_FALSE(Contains(warnings, "Use your microphone"));
@@ -991,7 +990,8 @@ TEST(PermissionsTest, GetWarningMessages_DeclarativeWebRequest) {
scoped_refptr<Extension> extension =
LoadManifest("permissions", "web_request_not_all_host_permissions.json");
const PermissionMessageProvider* provider = PermissionMessageProvider::Get();
- const PermissionSet* set = extension->GetActivePermissions().get();
+ const PermissionSet* set =
+ extension->permissions_data()->active_permissions().get();
std::vector<base::string16> warnings =
provider->GetWarningMessages(set, extension->GetType());
EXPECT_TRUE(Contains(warnings, "Block parts of web pages"));
@@ -1002,7 +1002,7 @@ TEST(PermissionsTest, GetWarningMessages_DeclarativeWebRequest) {
// permissions do cover all hosts.
extension =
LoadManifest("permissions", "web_request_all_host_permissions.json");
- set = extension->GetActivePermissions().get();
+ set = extension->permissions_data()->active_permissions().get();
warnings = provider->GetWarningMessages(set, extension->GetType());
EXPECT_FALSE(Contains(warnings, "Block parts of web pages"));
EXPECT_TRUE(Contains(
@@ -1014,7 +1014,8 @@ TEST(PermissionsTest, GetWarningMessages_Serial) {
LoadManifest("permissions", "serial.json");
EXPECT_TRUE(extension->is_platform_app());
- EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSerial));
+ EXPECT_TRUE(
+ extension->permissions_data()->HasAPIPermission(APIPermission::kSerial));
std::vector<base::string16> warnings =
extension->permissions_data()->GetPermissionMessageStrings();
EXPECT_TRUE(
@@ -1028,7 +1029,8 @@ TEST(PermissionsTest, GetWarningMessages_Socket_AnyHost) {
scoped_refptr<Extension> extension =
LoadManifest("permissions", "socket_any_host.json");
EXPECT_TRUE(extension->is_platform_app());
- EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSocket));
+ EXPECT_TRUE(
+ extension->permissions_data()->HasAPIPermission(APIPermission::kSocket));
std::vector<base::string16> warnings =
extension->permissions_data()->GetPermissionMessageStrings();
EXPECT_EQ(1u, warnings.size());
@@ -1042,7 +1044,8 @@ TEST(PermissionsTest, GetWarningMessages_Socket_OneDomainTwoHostnames) {
scoped_refptr<Extension> extension =
LoadManifest("permissions", "socket_one_domain_two_hostnames.json");
EXPECT_TRUE(extension->is_platform_app());
- EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSocket));
+ EXPECT_TRUE(
+ extension->permissions_data()->HasAPIPermission(APIPermission::kSocket));
std::vector<base::string16> warnings =
extension->permissions_data()->GetPermissionMessageStrings();
@@ -1068,7 +1071,8 @@ TEST(PermissionsTest, GetWarningMessages_Socket_TwoDomainsOneHostname) {
scoped_refptr<Extension> extension =
LoadManifest("permissions", "socket_two_domains_one_hostname.json");
EXPECT_TRUE(extension->is_platform_app());
- EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSocket));
+ EXPECT_TRUE(
+ extension->permissions_data()->HasAPIPermission(APIPermission::kSocket));
std::vector<base::string16> warnings =
extension->permissions_data()->GetPermissionMessageStrings();
@@ -1543,7 +1547,8 @@ TEST(PermissionsTest, SyncFileSystemPermission) {
APIPermissionSet apis;
apis.insert(APIPermission::kSyncFileSystem);
EXPECT_TRUE(extension->is_platform_app());
- EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kSyncFileSystem));
+ EXPECT_TRUE(extension->permissions_data()->HasAPIPermission(
+ APIPermission::kSyncFileSystem));
std::vector<base::string16> warnings =
extension->permissions_data()->GetPermissionMessageStrings();
EXPECT_TRUE(Contains(warnings, "Store data in your Google Drive account"));
@@ -1573,12 +1578,12 @@ TEST(PermissionsTest, IsPrivilegeIncrease_DeclarativeWebRequest) {
scoped_refptr<Extension> extension(
LoadManifest("permissions", "permissions_all_urls.json"));
scoped_refptr<const PermissionSet> permissions(
- extension->GetActivePermissions());
+ extension->permissions_data()->active_permissions());
scoped_refptr<Extension> extension_dwr(
LoadManifest("permissions", "web_request_all_host_permissions.json"));
scoped_refptr<const PermissionSet> permissions_dwr(
- extension_dwr->GetActivePermissions());
+ extension_dwr->permissions_data()->active_permissions());
EXPECT_FALSE(PermissionMessageProvider::Get()->
IsPrivilegeIncrease(permissions.get(),
diff --git a/chrome/common/extensions/permissions/settings_override_permission_unittest.cc b/chrome/common/extensions/permissions/settings_override_permission_unittest.cc
index 7f92290..61f6b5b 100644
--- a/chrome/common/extensions/permissions/settings_override_permission_unittest.cc
+++ b/chrome/common/extensions/permissions/settings_override_permission_unittest.cc
@@ -64,7 +64,7 @@ class SettingsOverridePermissionTest : public ExtensionManifestTest {
TEST_F(SettingsOverridePermissionTest, HomePage) {
scoped_refptr<Extension> extension(GetPermissionSet(kHomepage));
scoped_refptr<const PermissionSet> permission_set(
- extension->GetActivePermissions());
+ extension->permissions_data()->active_permissions());
#if defined(OS_WIN)
EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kHomepage));
@@ -88,7 +88,7 @@ TEST_F(SettingsOverridePermissionTest, HomePage) {
TEST_F(SettingsOverridePermissionTest, StartupPages) {
scoped_refptr<Extension> extension(GetPermissionSet(kStartupPages));
scoped_refptr<const PermissionSet> permission_set(
- extension->GetActivePermissions());
+ extension->permissions_data()->active_permissions());
#if defined(OS_WIN)
EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kStartupPages));
@@ -112,7 +112,7 @@ TEST_F(SettingsOverridePermissionTest, StartupPages) {
TEST_F(SettingsOverridePermissionTest, SearchSettings) {
scoped_refptr<Extension> extension(GetPermissionSet(kSearchProvider));
scoped_refptr<const PermissionSet> permission_set(
- extension->GetActivePermissions());
+ extension->permissions_data()->active_permissions());
#if defined(OS_WIN)
EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kSearchProvider));
@@ -136,7 +136,7 @@ TEST_F(SettingsOverridePermissionTest, All) {
scoped_refptr<Extension> extension(GetPermissionSet(
kSearchProvider | kStartupPages | kHomepage));
scoped_refptr<const PermissionSet> permission_set(
- extension->GetActivePermissions());
+ extension->permissions_data()->active_permissions());
#if defined(OS_WIN)
EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kSearchProvider));
@@ -154,7 +154,7 @@ TEST_F(SettingsOverridePermissionTest, Some) {
scoped_refptr<Extension> extension(GetPermissionSet(
kSearchProvider | kHomepage));
scoped_refptr<const PermissionSet> permission_set(
- extension->GetActivePermissions());
+ extension->permissions_data()->active_permissions());
#if defined(OS_WIN)
EXPECT_TRUE(permission_set->HasAPIPermission(APIPermission::kSearchProvider));
diff --git a/chrome/common/extensions/sync_helper.cc b/chrome/common/extensions/sync_helper.cc
index 93d8ce4..c38fdbc 100644
--- a/chrome/common/extensions/sync_helper.cc
+++ b/chrome/common/extensions/sync_helper.cc
@@ -10,6 +10,7 @@
#include "chrome/common/extensions/manifest_url_handler.h"
#include "extensions/common/extension.h"
#include "extensions/common/manifest.h"
+#include "extensions/common/permissions/permissions_data.h"
namespace extensions {
namespace sync_helper {
@@ -42,7 +43,7 @@ SyncType GetSyncType(const Extension* extension) {
// TODO(akalin): Relax this restriction once we've put in UI to
// approve synced extensions.
if (PluginInfo::HasPlugins(extension) ||
- extension->HasAPIPermission(APIPermission::kPlugin)) {
+ extension->permissions_data()->HasAPIPermission(APIPermission::kPlugin)) {
return SYNC_TYPE_NONE;
}
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc
index d625a25..6481a78 100644
--- a/chrome/renderer/chrome_content_renderer_client.cc
+++ b/chrome/renderer/chrome_content_renderer_client.cc
@@ -498,7 +498,7 @@ bool ChromeContentRendererClient::OverrideCreatePlugin(
extensions::APIPermission::kAdView
};
for (size_t i = 0; i < arraysize(perms); ++i) {
- if (extension->HasAPIPermission(perms[i]))
+ if (extension->permissions_data()->HasAPIPermission(perms[i]))
return false;
}
}
diff --git a/chrome/renderer/content_settings_observer.cc b/chrome/renderer/content_settings_observer.cc
index b24c71c..5e3edba 100644
--- a/chrome/renderer/content_settings_observer.cc
+++ b/chrome/renderer/content_settings_observer.cc
@@ -14,6 +14,8 @@
#include "content/public/renderer/render_frame.h"
#include "content/public/renderer/render_view.h"
#include "extensions/common/constants.h"
+#include "extensions/common/extension.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "extensions/renderer/dispatcher.h"
#include "third_party/WebKit/public/platform/WebPermissionCallbacks.h"
#include "third_party/WebKit/public/platform/WebURL.h"
@@ -434,7 +436,8 @@ bool ContentSettingsObserver::allowWebComponents(bool default_value) {
return true;
if (const extensions::Extension* extension = GetExtension(origin)) {
- if (extension->HasAPIPermission(APIPermission::kExperimental))
+ if (extension->permissions_data()->HasAPIPermission(
+ APIPermission::kExperimental))
return true;
}
diff --git a/chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc b/chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc
index 9eb290b..c8e411e 100644
--- a/chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc
+++ b/chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.cc
@@ -75,7 +75,8 @@ void ChromeExtensionsDispatcherDelegate::InitOriginPermissions(
// whitelist entries need to be updated when the kManagement permission
// changes.
if (context_type == extensions::Feature::BLESSED_EXTENSION_CONTEXT &&
- extension->HasAPIPermission(extensions::APIPermission::kManagement)) {
+ extension->permissions_data()->HasAPIPermission(
+ extensions::APIPermission::kManagement)) {
blink::WebSecurityPolicy::addOriginAccessWhitelistEntry(
extension->url(),
blink::WebString::fromUTF8(content::kChromeUIScheme),
@@ -276,7 +277,8 @@ void ChromeExtensionsDispatcherDelegate::RequireAdditionalModules(
// The API will be automatically set up when first used.
if (context_type == extensions::Feature::BLESSED_EXTENSION_CONTEXT ||
context_type == extensions::Feature::UNBLESSED_EXTENSION_CONTEXT) {
- if (extension->HasAPIPermission(extensions::APIPermission::kWebView)) {
+ if (extension->permissions_data()->HasAPIPermission(
+ extensions::APIPermission::kWebView)) {
module_system->Require("webView");
if (extensions::GetCurrentChannel() <= chrome::VersionInfo::CHANNEL_DEV) {
module_system->Require("webViewExperimental");
@@ -303,7 +305,8 @@ void ChromeExtensionsDispatcherDelegate::RequireAdditionalModules(
is_within_platform_app) {
if (CommandLine::ForCurrentProcess()->HasSwitch(
::switches::kEnableAdview)) {
- if (extension->HasAPIPermission(extensions::APIPermission::kAdView)) {
+ if (extension->permissions_data()->HasAPIPermission(
+ extensions::APIPermission::kAdView)) {
module_system->Require("adView");
} else {
module_system->Require("denyAdView");
diff --git a/extensions/browser/api/storage/local_value_store_cache.cc b/extensions/browser/api/storage/local_value_store_cache.cc
index 6946f33..4865b31 100644
--- a/extensions/browser/api/storage/local_value_store_cache.cc
+++ b/extensions/browser/api/storage/local_value_store_cache.cc
@@ -18,6 +18,7 @@
#include "extensions/common/constants.h"
#include "extensions/common/extension.h"
#include "extensions/common/permissions/api_permission.h"
+#include "extensions/common/permissions/permissions_data.h"
using content::BrowserThread;
@@ -62,7 +63,8 @@ void LocalValueStoreCache::RunWithValueStoreForExtension(
// A neat way to implement unlimited storage; if the extension has the
// unlimited storage permission, force through all calls to Set().
- if (extension->HasAPIPermission(APIPermission::kUnlimitedStorage)) {
+ if (extension->permissions_data()->HasAPIPermission(
+ APIPermission::kUnlimitedStorage)) {
WeakUnlimitedSettingsStorage unlimited_storage(storage);
callback.Run(&unlimited_storage);
} else {
diff --git a/extensions/browser/api/storage/settings_test_util.cc b/extensions/browser/api/storage/settings_test_util.cc
index a44a5a0d..c1ac660 100644
--- a/extensions/browser/api/storage/settings_test_util.cc
+++ b/extensions/browser/api/storage/settings_test_util.cc
@@ -93,7 +93,7 @@ scoped_refptr<const Extension> AddExtensionWithIdAndPermissions(
for (std::set<std::string>::const_iterator it = permissions_set.begin();
it != permissions_set.end(); ++it) {
- DCHECK(extension->HasAPIPermission(*it));
+ DCHECK(extension->permissions_data()->HasAPIPermission(*it));
}
return extension;
diff --git a/extensions/browser/event_router.cc b/extensions/browser/event_router.cc
index c441195..3c6679f 100644
--- a/extensions/browser/event_router.cc
+++ b/extensions/browser/event_router.cc
@@ -30,6 +30,7 @@
#include "extensions/common/extension_urls.h"
#include "extensions/common/manifest_handlers/background_info.h"
#include "extensions/common/manifest_handlers/incognito_info.h"
+#include "extensions/common/permissions/permissions_data.h"
using base::DictionaryValue;
using base::ListValue;
@@ -533,8 +534,9 @@ void EventRouter::DispatchEventToProcess(const std::string& extension_id,
// permission for it (or if the event originated from itself).
if (!event->event_url.is_empty() &&
event->event_url.host() != extension->id() &&
- !extension->GetActivePermissions()->HasEffectiveAccessToURL(
- event->event_url)) {
+ !extension->permissions_data()
+ ->active_permissions()
+ ->HasEffectiveAccessToURL(event->event_url)) {
return;
}
diff --git a/extensions/browser/info_map.cc b/extensions/browser/info_map.cc
index 42b85c5..1042f63 100644
--- a/extensions/browser/info_map.cc
+++ b/extensions/browser/info_map.cc
@@ -10,6 +10,7 @@
#include "extensions/common/extension.h"
#include "extensions/common/extension_set.h"
#include "extensions/common/manifest_handlers/incognito_info.h"
+#include "extensions/common/permissions/permissions_data.h"
using content::BrowserThread;
@@ -150,7 +151,8 @@ void InfoMap::GetExtensionsWithAPIPermissionForSecurityOrigin(
if (origin.SchemeIs(kExtensionScheme)) {
const std::string& id = origin.host();
const Extension* extension = extensions_.GetByID(id);
- if (extension && extension->HasAPIPermission(permission) &&
+ if (extension &&
+ extension->permissions_data()->HasAPIPermission(permission) &&
process_map_.Contains(id, process_id)) {
extensions->Insert(extension);
}
@@ -161,7 +163,7 @@ void InfoMap::GetExtensionsWithAPIPermissionForSecurityOrigin(
for (; i != extensions_.end(); ++i) {
if ((*i)->web_extent().MatchesSecurityOrigin(origin) &&
process_map_.Contains((*i)->id(), process_id) &&
- (*i)->HasAPIPermission(permission)) {
+ (*i)->permissions_data()->HasAPIPermission(permission)) {
extensions->Insert(*i);
}
}
diff --git a/extensions/browser/info_map.h b/extensions/browser/info_map.h
index 5dfc9c2..5b1f8a3 100644
--- a/extensions/browser/info_map.h
+++ b/extensions/browser/info_map.h
@@ -14,6 +14,7 @@
#include "extensions/browser/process_map.h"
#include "extensions/browser/quota_service.h"
#include "extensions/common/extension_set.h"
+#include "extensions/common/permissions/api_permission.h"
namespace extensions {
class ContentVerifier;
diff --git a/extensions/browser/info_map_unittest.cc b/extensions/browser/info_map_unittest.cc
index d01fa61..c953468 100644
--- a/extensions/browser/info_map_unittest.cc
+++ b/extensions/browser/info_map_unittest.cc
@@ -10,6 +10,7 @@
#include "extensions/browser/info_map.h"
#include "extensions/common/extension.h"
#include "extensions/common/manifest_constants.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "testing/gtest/include/gtest/gtest.h"
using content::BrowserThread;
@@ -144,16 +145,25 @@ TEST_F(InfoMapTest, CheckPermissions) {
// chrome-extension URL or from its web extent.
const Extension* match = info_map->extensions().GetExtensionOrAppByURL(
app->GetResourceURL("a.html"));
- EXPECT_TRUE(match && match->HasAPIPermission(APIPermission::kNotification));
+ EXPECT_TRUE(match &&
+ match->permissions_data()->HasAPIPermission(
+ APIPermission::kNotification));
match = info_map->extensions().GetExtensionOrAppByURL(app_url);
- EXPECT_TRUE(match && match->HasAPIPermission(APIPermission::kNotification));
- EXPECT_FALSE(match && match->HasAPIPermission(APIPermission::kTab));
+ EXPECT_TRUE(match &&
+ match->permissions_data()->HasAPIPermission(
+ APIPermission::kNotification));
+ EXPECT_FALSE(
+ match &&
+ match->permissions_data()->HasAPIPermission(APIPermission::kTab));
// The extension should have the tabs permission.
match = info_map->extensions().GetExtensionOrAppByURL(
extension->GetResourceURL("a.html"));
- EXPECT_TRUE(match && match->HasAPIPermission(APIPermission::kTab));
- EXPECT_FALSE(match && match->HasAPIPermission(APIPermission::kNotification));
+ EXPECT_TRUE(match &&
+ match->permissions_data()->HasAPIPermission(APIPermission::kTab));
+ EXPECT_FALSE(match &&
+ match->permissions_data()->HasAPIPermission(
+ APIPermission::kNotification));
// Random URL should not have any permissions.
GURL evil_url("http://evil.com/a.html");
diff --git a/extensions/common/extension.cc b/extensions/common/extension.cc
index 9179d46..8fab82b 100644
--- a/extensions/common/extension.cc
+++ b/extensions/common/extension.cc
@@ -28,12 +28,11 @@
#include "extensions/common/manifest_constants.h"
#include "extensions/common/manifest_handler.h"
#include "extensions/common/manifest_handlers/permissions_parser.h"
-#include "extensions/common/permissions/api_permission_set.h"
#include "extensions/common/permissions/permission_set.h"
#include "extensions/common/permissions/permissions_data.h"
#include "extensions/common/permissions/permissions_info.h"
#include "extensions/common/switches.h"
-#include "extensions/common/url_pattern_set.h"
+#include "extensions/common/url_pattern.h"
#include "net/base/filename_util.h"
#include "url/url_util.h"
@@ -287,18 +286,6 @@ GURL Extension::GetBaseURLFromExtensionId(const std::string& extension_id) {
url::kStandardSchemeSeparator + extension_id + "/");
}
-bool Extension::HasAPIPermission(APIPermission::ID permission) const {
- return permissions_data_->HasAPIPermission(permission);
-}
-
-bool Extension::HasAPIPermission(const std::string& permission_name) const {
- return permissions_data_->HasAPIPermission(permission_name);
-}
-
-scoped_refptr<const PermissionSet> Extension::GetActivePermissions() const {
- return permissions_data_->active_permissions();
-}
-
bool Extension::ShowConfigureContextMenus() const {
// Don't show context menu for component extensions. We might want to show
// options for component extension button but now there is no component
diff --git a/extensions/common/extension.h b/extensions/common/extension.h
index 1423adb..cf5e85c 100644
--- a/extensions/common/extension.h
+++ b/extensions/common/extension.h
@@ -23,8 +23,6 @@
#include "extensions/common/extension_resource.h"
#include "extensions/common/install_warning.h"
#include "extensions/common/manifest.h"
-#include "extensions/common/permissions/api_permission.h"
-#include "extensions/common/url_pattern.h"
#include "extensions/common/url_pattern_set.h"
#include "ui/base/accelerators/accelerator.h"
#include "ui/gfx/size.h"
@@ -43,8 +41,6 @@ class ImageSkia;
}
namespace extensions {
-class APIPermissionSet;
-class ManifestPermissionSet;
class PermissionSet;
class PermissionsData;
class PermissionsParser;
@@ -250,12 +246,6 @@ class Extension : public base::RefCountedThreadSafe<Extension> {
// Returns the base extension url for a given |extension_id|.
static GURL GetBaseURLFromExtensionId(const ExtensionId& extension_id);
- // DEPRECATED: These methods have been moved to PermissionsData.
- // TODO(rdevlin.cronin): remove these once all calls have been updated.
- bool HasAPIPermission(APIPermission::ID permission) const;
- bool HasAPIPermission(const std::string& permission_name) const;
- scoped_refptr<const PermissionSet> GetActivePermissions() const;
-
// Whether context menu should be shown for page and browser actions.
bool ShowConfigureContextMenus() const;
diff --git a/extensions/common/extension_messages.cc b/extensions/common/extension_messages.cc
index ae1c180..054b2fa 100644
--- a/extensions/common/extension_messages.cc
+++ b/extensions/common/extension_messages.cc
@@ -33,11 +33,16 @@ ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params(
: manifest(extension->manifest()->value()->DeepCopy()),
location(extension->location()),
path(extension->path()),
- apis(extension->GetActivePermissions()->apis()),
- manifest_permissions(
- extension->GetActivePermissions()->manifest_permissions()),
- explicit_hosts(extension->GetActivePermissions()->explicit_hosts()),
- scriptable_hosts(extension->GetActivePermissions()->scriptable_hosts()),
+ apis(extension->permissions_data()->active_permissions()->apis()),
+ manifest_permissions(extension->permissions_data()
+ ->active_permissions()
+ ->manifest_permissions()),
+ explicit_hosts(extension->permissions_data()
+ ->active_permissions()
+ ->explicit_hosts()),
+ scriptable_hosts(extension->permissions_data()
+ ->active_permissions()
+ ->scriptable_hosts()),
id(extension->id()),
creation_flags(extension->creation_flags()) {
}
diff --git a/extensions/common/extension_set.h b/extensions/common/extension_set.h
index 6b41ae6..c46163f 100644
--- a/extensions/common/extension_set.h
+++ b/extensions/common/extension_set.h
@@ -9,7 +9,7 @@
#include <map>
#include <string>
-#include "base/callback_forward.h"
+#include "base/callback.h"
#include "base/gtest_prod_util.h"
#include "base/memory/ref_counted.h"
#include "extensions/common/extension.h"
diff --git a/extensions/common/manifest_handlers/externally_connectable_unittest.cc b/extensions/common/manifest_handlers/externally_connectable_unittest.cc
index 41b2d32..77acf35 100644
--- a/extensions/common/manifest_handlers/externally_connectable_unittest.cc
+++ b/extensions/common/manifest_handlers/externally_connectable_unittest.cc
@@ -9,6 +9,7 @@
#include "extensions/common/error_utils.h"
#include "extensions/common/manifest_constants.h"
#include "extensions/common/manifest_handlers/externally_connectable.h"
+#include "extensions/common/permissions/permissions_data.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -38,7 +39,8 @@ TEST_F(ExternallyConnectableTest, IDsAndMatches) {
LoadAndExpectSuccess("externally_connectable_ids_and_matches.json");
ASSERT_TRUE(extension.get());
- EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kWebConnectable));
+ EXPECT_TRUE(extension->permissions_data()->HasAPIPermission(
+ APIPermission::kWebConnectable));
ExternallyConnectableInfo* info =
ExternallyConnectableInfo::Get(extension.get());
@@ -99,7 +101,8 @@ TEST_F(ExternallyConnectableTest, IDs) {
LoadAndExpectSuccess("externally_connectable_ids.json");
ASSERT_TRUE(extension.get());
- EXPECT_FALSE(extension->HasAPIPermission(APIPermission::kWebConnectable));
+ EXPECT_FALSE(extension->permissions_data()->HasAPIPermission(
+ APIPermission::kWebConnectable));
ExternallyConnectableInfo* info =
ExternallyConnectableInfo::Get(extension.get());
@@ -119,7 +122,8 @@ TEST_F(ExternallyConnectableTest, Matches) {
LoadAndExpectSuccess("externally_connectable_matches.json");
ASSERT_TRUE(extension.get());
- EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kWebConnectable));
+ EXPECT_TRUE(extension->permissions_data()->HasAPIPermission(
+ APIPermission::kWebConnectable));
ExternallyConnectableInfo* info =
ExternallyConnectableInfo::Get(extension.get());
@@ -161,7 +165,8 @@ TEST_F(ExternallyConnectableTest, MatchesWithTlsChannelId) {
"externally_connectable_matches_tls_channel_id.json");
ASSERT_TRUE(extension.get());
- EXPECT_TRUE(extension->HasAPIPermission(APIPermission::kWebConnectable));
+ EXPECT_TRUE(extension->permissions_data()->HasAPIPermission(
+ APIPermission::kWebConnectable));
ExternallyConnectableInfo* info =
ExternallyConnectableInfo::Get(extension.get());
@@ -185,7 +190,8 @@ TEST_F(ExternallyConnectableTest, AllIDs) {
LoadAndExpectSuccess("externally_connectable_all_ids.json");
ASSERT_TRUE(extension.get());
- EXPECT_FALSE(extension->HasAPIPermission(APIPermission::kWebConnectable));
+ EXPECT_FALSE(extension->permissions_data()->HasAPIPermission(
+ APIPermission::kWebConnectable));
ExternallyConnectableInfo* info =
ExternallyConnectableInfo::Get(extension.get());
diff --git a/extensions/common/manifest_handlers/shared_module_info.cc b/extensions/common/manifest_handlers/shared_module_info.cc
index 66a06e9..38eef6e 100644
--- a/extensions/common/manifest_handlers/shared_module_info.cc
+++ b/extensions/common/manifest_handlers/shared_module_info.cc
@@ -14,6 +14,7 @@
#include "extensions/common/error_utils.h"
#include "extensions/common/manifest_constants.h"
#include "extensions/common/permissions/permission_set.h"
+#include "extensions/common/permissions/permissions_data.h"
namespace extensions {
@@ -243,7 +244,7 @@ bool SharedModuleHandler::Validate(
// own, instead they rely on the permissions of the extensions which import
// them.
if (SharedModuleInfo::IsSharedModule(extension) &&
- !extension->GetActivePermissions()->IsEmpty()) {
+ !extension->permissions_data()->active_permissions()->IsEmpty()) {
*error = errors::kInvalidExportPermissions;
return false;
}
diff --git a/extensions/common/permissions/permissions_data_unittest.cc b/extensions/common/permissions/permissions_data_unittest.cc
index f7fad22..f9f1b6a 100644
--- a/extensions/common/permissions/permissions_data_unittest.cc
+++ b/extensions/common/permissions/permissions_data_unittest.cc
@@ -133,11 +133,14 @@ TEST(ExtensionPermissionsTest, EffectiveHostPermissions) {
hosts = extension->permissions_data()->GetEffectiveHostPermissions();
EXPECT_TRUE(hosts.MatchesURL(GURL("http://google.com")));
EXPECT_TRUE(hosts.MatchesURL(GURL("http://www.reddit.com")));
- EXPECT_TRUE(extension->GetActivePermissions()->HasEffectiveAccessToURL(
- GURL("http://www.reddit.com")));
+ EXPECT_TRUE(extension->permissions_data()
+ ->active_permissions()
+ ->HasEffectiveAccessToURL(GURL("http://www.reddit.com")));
EXPECT_TRUE(hosts.MatchesURL(GURL("http://news.ycombinator.com")));
- EXPECT_TRUE(extension->GetActivePermissions()->HasEffectiveAccessToURL(
- GURL("http://news.ycombinator.com")));
+ EXPECT_TRUE(
+ extension->permissions_data()
+ ->active_permissions()
+ ->HasEffectiveAccessToURL(GURL("http://news.ycombinator.com")));
EXPECT_FALSE(extension->permissions_data()->HasEffectiveAccessToAllHosts());
extension = LoadManifest("effective_host_permissions", "all_hosts.json");
diff --git a/extensions/renderer/dispatcher.cc b/extensions/renderer/dispatcher.cc
index cfa6afd6..39d862d 100644
--- a/extensions/renderer/dispatcher.cc
+++ b/extensions/renderer/dispatcher.cc
@@ -735,7 +735,7 @@ void Dispatcher::OnUpdatePermissions(
scoped_refptr<const PermissionSet> delta = new PermissionSet(
apis, manifest_permissions, explicit_hosts, scriptable_hosts);
scoped_refptr<const PermissionSet> old_active =
- extension->GetActivePermissions();
+ extension->permissions_data()->active_permissions();
UpdatedExtensionPermissionsInfo::Reason reason =
static_cast<UpdatedExtensionPermissionsInfo::Reason>(reason_id);