Chromium Code Reviews| Index: chrome/common/extensions/extension_permission_set.cc |
| diff --git a/chrome/common/extensions/extension_permission_set.cc b/chrome/common/extensions/extension_permission_set.cc |
| index 921eed6967a30083e43f410cd28c2452e9edf427..5af2806b8b453d6bd716b9ce665faaa21d026894 100644 |
| --- a/chrome/common/extensions/extension_permission_set.cc |
| +++ b/chrome/common/extensions/extension_permission_set.cc |
| @@ -7,10 +7,12 @@ |
| #include <algorithm> |
| #include <string> |
| +#include "base/command_line.h" |
| #include "base/memory/singleton.h" |
| #include "base/values.h" |
| #include "base/string_number_conversions.h" |
| #include "base/utf_string_conversions.h" |
| +#include "chrome/common/chrome_switches.h" |
| #include "chrome/common/extensions/extension.h" |
| #include "chrome/common/extensions/extension_constants.h" |
| #include "chrome/common/extensions/extension_l10n_util.h" |
| @@ -196,19 +198,6 @@ void ExtensionAPIPermission::RegisterAllPermissions( |
| kUnlimitedStorage, "unlimitedStorage", 0, |
| ExtensionPermissionMessage::kNone, kFlagCannotBeOptional, kTypeAll); |
| - // Register hosted app permissions that are also private. |
| - info->RegisterPermission( |
| - kChromePrivate, "chromePrivate", 0, |
| - ExtensionPermissionMessage::kNone, kFlagCannotBeOptional, |
| - kTypeAll - kTypePlatformApp); |
| - info->RegisterPermission( |
| - kChromeAuthPrivate, "chromeAuthPrivate", 0, |
| - ExtensionPermissionMessage::kNone, |
| - kFlagComponentOnly | kFlagCannotBeOptional, kTypeAll - kTypePlatformApp); |
| - info->RegisterPermission( |
| - kWebstorePrivate, "webstorePrivate", 0, |
| - ExtensionPermissionMessage::kNone, |
| - kFlagComponentOnly | kFlagCannotBeOptional, kTypeAll - kTypePlatformApp); |
| // Register hosted and packaged app permissions. |
| info->RegisterPermission( |
| @@ -245,9 +234,6 @@ void ExtensionAPIPermission::RegisterAllPermissions( |
| kInput, "input", 0, ExtensionPermissionMessage::kNone, |
| kFlagImpliesFullURLAccess, kTypeDefault); |
| info->RegisterPermission( |
| - kInputMethodPrivate, "inputMethodPrivate", 0, |
| - ExtensionPermissionMessage::kNone, kFlagCannotBeOptional, kTypeDefault); |
| - info->RegisterPermission( |
| kManagement, "management", IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT, |
| ExtensionPermissionMessage::kManagement, kFlagNone, kTypeDefault); |
| info->RegisterPermission( |
| @@ -265,9 +251,6 @@ void ExtensionAPIPermission::RegisterAllPermissions( |
| ExtensionPermissionMessage::kTabs, kFlagNone, |
| kTypeDefault - kTypePlatformApp); |
| info->RegisterPermission( |
| - kTerminalPrivate, "terminalPrivate", 0, |
| - ExtensionPermissionMessage::kNone, kFlagCannotBeOptional, kTypeDefault); |
| - info->RegisterPermission( |
| kTts, "tts", 0, |
| ExtensionPermissionMessage::kNone, kFlagCannotBeOptional, kTypeDefault); |
| info->RegisterPermission( |
| @@ -285,32 +268,73 @@ void ExtensionAPIPermission::RegisterAllPermissions( |
| kWebRequestBlocking, "webRequestBlocking", 0, |
| ExtensionPermissionMessage::kNone, kFlagNone, |
| kTypeDefault - kTypePlatformApp); |
| - info->RegisterPermission( |
| - kWebSocketProxyPrivate, "webSocketProxyPrivate", 0, |
| - ExtensionPermissionMessage::kNone, kFlagCannotBeOptional, |
| - kTypeDefault - kTypePlatformApp); |
| // Register private permissions. |
| info->RegisterPermission( |
| kChromeosInfoPrivate, "chromeosInfoPrivate", 0, |
| ExtensionPermissionMessage::kNone, |
| - kFlagComponentOnly | kFlagCannotBeOptional, kTypeDefault); |
| + kFlagComponentOnly_Deprecated | kFlagCannotBeOptional, kTypeDefault); |
| info->RegisterPermission( |
| kFileBrowserPrivate, "fileBrowserPrivate", 0, |
| ExtensionPermissionMessage::kNone, |
| - kFlagComponentOnly | kFlagCannotBeOptional, kTypeDefault); |
| + kFlagComponentOnly_Deprecated | kFlagCannotBeOptional, kTypeDefault); |
| info->RegisterPermission( |
| kMediaPlayerPrivate, "mediaPlayerPrivate", 0, |
| ExtensionPermissionMessage::kNone, |
| - kFlagComponentOnly | kFlagCannotBeOptional, kTypeDefault); |
| + kFlagComponentOnly_Deprecated | kFlagCannotBeOptional, kTypeDefault); |
| info->RegisterPermission( |
| kMetricsPrivate, "metricsPrivate", 0, |
| ExtensionPermissionMessage::kNone, |
| - kFlagComponentOnly | kFlagCannotBeOptional, kTypeDefault); |
| + kFlagComponentOnly_Deprecated | kFlagCannotBeOptional, kTypeDefault); |
| info->RegisterPermission( |
| kSystemPrivate, "systemPrivate", 0, |
| ExtensionPermissionMessage::kNone, |
| - kFlagComponentOnly | kFlagCannotBeOptional, kTypeDefault); |
| + kFlagComponentOnly_Deprecated | kFlagCannotBeOptional, kTypeDefault); |
| + |
| + ExtensionAPIPermission* chromeAuthPrivate = info->RegisterPermission( |
| + kChromeAuthPrivate, "chromeAuthPrivate", 0, |
| + ExtensionPermissionMessage::kNone, |
| + kFlagCannotBeOptional, kTypeAll - kTypePlatformApp); |
| + chromeAuthPrivate->AddToWhitelist(extension_misc::kCloudPrintAppId); |
| + |
| + ExtensionAPIPermission* chromePrivate = info->RegisterPermission( |
| + kChromePrivate, "chromePrivate", 0, ExtensionPermissionMessage::kNone, |
| + kFlagCannotBeOptional, kTypeAll - kTypePlatformApp); |
| + chromePrivate->AddToWhitelist(extension_misc::kCitrixReceiverAppId); |
| + chromePrivate->AddToWhitelist("gnedhmakppccajfpfiihfcdlnpgomkcf"); |
| + chromePrivate->AddToWhitelist("fjcibdnjlbfnbfdjneajpipnlcppleek"); |
| + |
| + ExtensionAPIPermission* inputMethodPrivate = info->RegisterPermission( |
| + kInputMethodPrivate, "inputMethodPrivate", 0, |
| + ExtensionPermissionMessage::kNone, kFlagCannotBeOptional, kTypeDefault); |
| + inputMethodPrivate->AddToWhitelist(extension_misc::kCitrixReceiverAppId); |
| + inputMethodPrivate->AddToWhitelist("gnedhmakppccajfpfiihfcdlnpgomkcf"); |
| + inputMethodPrivate->AddToWhitelist("fjcibdnjlbfnbfdjneajpipnlcppleek"); |
| + inputMethodPrivate->AddToWhitelist(extension_misc::kHTermAppId); |
| + inputMethodPrivate->AddToWhitelist(extension_misc::kHTermDevAppId); |
| + |
| + ExtensionAPIPermission* terminalPrivate = info->RegisterPermission( |
| + kTerminalPrivate, "terminalPrivate", 0, ExtensionPermissionMessage::kNone, |
| + kFlagCannotBeOptional, kTypeDefault); |
| + terminalPrivate->AddToWhitelist(extension_misc::kHTermAppId); |
| + terminalPrivate->AddToWhitelist(extension_misc::kHTermDevAppId); |
| + |
| + ExtensionAPIPermission* webSocketProxyPrivate = info->RegisterPermission( |
| + kWebSocketProxyPrivate, "webSocketProxyPrivate", 0, |
| + ExtensionPermissionMessage::kNone, |
| + kFlagCannotBeOptional, kTypeDefault - kTypePlatformApp); |
| + webSocketProxyPrivate->AddToWhitelist(extension_misc::kCitrixReceiverAppId); |
| + webSocketProxyPrivate->AddToWhitelist("gnedhmakppccajfpfiihfcdlnpgomkcf"); |
|
jstritar
2012/02/08 16:16:07
do you know what extension this is?
|
| + webSocketProxyPrivate->AddToWhitelist("fjcibdnjlbfnbfdjneajpipnlcppleek"); |
|
jstritar
2012/02/08 16:16:07
ditto^
Dmitry Polukhin
2012/02/08 17:40:29
All these 3 IDs are Citrix Receiver (stable, beta
|
| + webSocketProxyPrivate->AddToWhitelist(extension_misc::kHTermAppId); |
| + webSocketProxyPrivate->AddToWhitelist(extension_misc::kHTermDevAppId); |
| + |
| + ExtensionAPIPermission* webstorePrivate = info->RegisterPermission( |
| + kWebstorePrivate, "webstorePrivate", 0, |
| + ExtensionPermissionMessage::kNone, |
| + kFlagCannotBeOptional, kTypeAll - kTypePlatformApp); |
| + webstorePrivate->AddToWhitelist(extension_misc::kEnterpriseWebStoreAppId); |
| + webstorePrivate->AddToWhitelist(extension_misc::kWebStoreAppId); |
| // Full url access permissions. |
| info->RegisterPermission( |
| @@ -341,6 +365,25 @@ void ExtensionAPIPermission::RegisterAllPermissions( |
| info->RegisterAlias("tabs", kWindowsPermission); |
| } |
| +bool ExtensionAPIPermission::HasWhitelist() const { |
| + return !whitelist_.empty(); |
| +} |
| + |
| +bool ExtensionAPIPermission::IsWhitelisted( |
| + const std::string& extension_id) const { |
| + CommandLine* command_line = CommandLine::ForCurrentProcess(); |
| + if (command_line->HasSwitch(switches::kWhitelistedExtensionID)) { |
| + if (extension_id == command_line->GetSwitchValueASCII( |
| + switches::kWhitelistedExtensionID)) |
| + return true; |
| + } |
| + return whitelist_.find(extension_id) != whitelist_.end(); |
| +} |
| + |
| +void ExtensionAPIPermission::AddToWhitelist(const std::string& extension_id) { |
| + whitelist_.insert(extension_id); |
| +} |
| + |
| // |
| // ExtensionPermissionsInfo |
| // |
| @@ -398,7 +441,7 @@ void ExtensionPermissionsInfo::RegisterAlias( |
| name_map_[alias] = name_map_[name]; |
| } |
| -void ExtensionPermissionsInfo::RegisterPermission( |
| +ExtensionAPIPermission* ExtensionPermissionsInfo::RegisterPermission( |
| ExtensionAPIPermission::ID id, |
| const char* name, |
| int l10n_message_id, |
| @@ -415,6 +458,8 @@ void ExtensionPermissionsInfo::RegisterPermission( |
| name_map_[name] = permission; |
| permission_count_++; |
| + |
| + return permission; |
| } |
| // |