X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fchrome%2Fcommon%2Fextensions%2Fpermissions%2Fchrome_api_permissions.cc;h=6fc12f1c9abff61a7665dca6e82df50b2a1eb0c3;hb=004985e17e624662a4c85c76a7654039dc83f028;hp=28ffbd4458101815e4fecfaa63e8e45db018d2a0;hpb=2f108dbacb161091e42a3479f4e171339b7e7623;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/chrome/common/extensions/permissions/chrome_api_permissions.cc b/src/chrome/common/extensions/permissions/chrome_api_permissions.cc index 28ffbd4..6fc12f1 100644 --- a/src/chrome/common/extensions/permissions/chrome_api_permissions.cc +++ b/src/chrome/common/extensions/permissions/chrome_api_permissions.cc @@ -9,8 +9,8 @@ #include "extensions/common/permissions/media_galleries_permission.h" #include "extensions/common/permissions/permission_message.h" #include "extensions/common/permissions/permissions_info.h" -#include "extensions/common/permissions/socket_permission.h" #include "extensions/common/permissions/usb_device_permission.h" +#include "grit/extensions_strings.h" #include "grit/generated_resources.h" namespace extensions { @@ -32,364 +32,326 @@ template APIPermission* CreateAPIPermission( std::vector ChromeAPIPermissions::GetAllPermissions() const { - struct PermissionRegistration { - APIPermission::ID id; - const char* name; - int flags; - int l10n_message_id; - PermissionMessage::ID message_id; - APIPermissionInfo::APIPermissionConstructor constructor; - } PermissionsToRegister[] = { - // Register permissions for all extension types. - {APIPermission::kBackground, "background"}, - {APIPermission::kClipboardRead, "clipboardRead", - APIPermissionInfo::kFlagNone, IDS_EXTENSION_PROMPT_WARNING_CLIPBOARD, - PermissionMessage::kClipboard}, - {APIPermission::kClipboardWrite, "clipboardWrite"}, - {APIPermission::kDeclarativeContent, "declarativeContent"}, - {APIPermission::kDeclarativeWebRequest, "declarativeWebRequest", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_DECLARATIVE_WEB_REQUEST, - PermissionMessage::kDeclarativeWebRequest}, - {APIPermission::kDesktopCapture, "desktopCapture", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_DESKTOP_CAPTURE, - PermissionMessage::kDesktopCapture}, - {APIPermission::kDns, "dns"}, - {APIPermission::kDownloads, "downloads", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_DOWNLOADS, PermissionMessage::kDownloads}, - {APIPermission::kDownloadsOpen, "downloads.open", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_DOWNLOADS_OPEN, - PermissionMessage::kDownloadsOpen}, - {APIPermission::kDownloadsShelf, "downloads.shelf"}, - {APIPermission::kIdentity, "identity"}, - {APIPermission::kExperimental, "experimental", - APIPermissionInfo::kFlagCannotBeOptional}, - // NOTE(kalman): this is provided by a manifest property but needs to - // appear in the install permission dialogue, so we need a fake - // permission for it. See http://crbug.com/247857. - {APIPermission::kWebConnectable, "webConnectable", - APIPermissionInfo::kFlagCannotBeOptional | - APIPermissionInfo::kFlagInternal, - IDS_EXTENSION_PROMPT_WARNING_WEB_CONNECTABLE, - PermissionMessage::kWebConnectable}, - {APIPermission::kGeolocation, "geolocation", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION, - PermissionMessage::kGeolocation}, - {APIPermission::kNotification, "notifications"}, - {APIPermission::kUnlimitedStorage, "unlimitedStorage", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kGcm, "gcm"}, + APIPermissionInfo::InitInfo permissions_to_register[] = { + // Register permissions for all extension types. + {APIPermission::kBackground, "background"}, + {APIPermission::kClipboardRead, "clipboardRead", + APIPermissionInfo::kFlagNone, IDS_EXTENSION_PROMPT_WARNING_CLIPBOARD, + PermissionMessage::kClipboard}, + {APIPermission::kClipboardWrite, "clipboardWrite"}, + {APIPermission::kDeclarativeContent, "declarativeContent"}, + {APIPermission::kDeclarativeWebRequest, "declarativeWebRequest", + APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_DECLARATIVE_WEB_REQUEST, + PermissionMessage::kDeclarativeWebRequest}, + {APIPermission::kDesktopCapture, "desktopCapture", + APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_DESKTOP_CAPTURE, + PermissionMessage::kDesktopCapture}, + {APIPermission::kDownloads, "downloads", APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_DOWNLOADS, PermissionMessage::kDownloads}, + {APIPermission::kDownloadsOpen, "downloads.open", + APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_DOWNLOADS_OPEN, + PermissionMessage::kDownloadsOpen}, + {APIPermission::kDownloadsShelf, "downloads.shelf"}, + {APIPermission::kIdentity, "identity"}, + {APIPermission::kExperimental, "experimental", + APIPermissionInfo::kFlagCannotBeOptional}, + // NOTE(kalman): this is provided by a manifest property but needs to + // appear in the install permission dialogue, so we need a fake + // permission for it. See http://crbug.com/247857. + {APIPermission::kWebConnectable, "webConnectable", + APIPermissionInfo::kFlagCannotBeOptional | + APIPermissionInfo::kFlagInternal, + IDS_EXTENSION_PROMPT_WARNING_WEB_CONNECTABLE, + PermissionMessage::kWebConnectable}, + {APIPermission::kGeolocation, "geolocation", + APIPermissionInfo::kFlagCannotBeOptional, + IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION, + PermissionMessage::kGeolocation}, + {APIPermission::kNotification, "notifications"}, + {APIPermission::kUnlimitedStorage, "unlimitedStorage", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kGcm, "gcm"}, - // Register extension permissions. - {APIPermission::kAccessibilityFeaturesModify, - "accessibilityFeatures.modify", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_MODIFY, - PermissionMessage::kAccessibilityFeaturesModify}, - {APIPermission::kAccessibilityFeaturesRead, - "accessibilityFeatures.read", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_READ, - PermissionMessage::kAccessibilityFeaturesRead}, - {APIPermission::kActiveTab, "activeTab"}, - {APIPermission::kAdView, "adview"}, - {APIPermission::kAlarms, "alarms"}, - {APIPermission::kAutomation, "automation", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_AUTOMATION, - PermissionMessage::kAutomation}, - {APIPermission::kBookmark, "bookmarks", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_BOOKMARKS, PermissionMessage::kBookmarks}, - {APIPermission::kBrailleDisplayPrivate, "brailleDisplayPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kBrowsingData, "browsingData"}, - {APIPermission::kContentSettings, "contentSettings", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_CONTENT_SETTINGS, - PermissionMessage::kContentSettings}, - {APIPermission::kContextMenus, "contextMenus"}, - {APIPermission::kCookie, "cookies"}, - {APIPermission::kFileBrowserHandler, "fileBrowserHandler", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kFontSettings, "fontSettings", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kHistory, "history", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY, - PermissionMessage::kBrowsingHistory}, - {APIPermission::kIdltest, "idltest"}, - {APIPermission::kIdle, "idle"}, - {APIPermission::kInfobars, "infobars"}, - {APIPermission::kInput, "input", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_INPUT, PermissionMessage::kInput}, - {APIPermission::kLocation, "location", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION, - PermissionMessage::kGeolocation}, - {APIPermission::kManagement, "management", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT, - PermissionMessage::kManagement}, - {APIPermission::kNativeMessaging, "nativeMessaging", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_NATIVE_MESSAGING, - PermissionMessage::kNativeMessaging}, - {APIPermission::kPower, "power", }, - {APIPermission::kPrivacy, "privacy", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_PRIVACY, PermissionMessage::kPrivacy}, - {APIPermission::kProcesses, "processes", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_TABS, PermissionMessage::kTabs}, - {APIPermission::kSessions, "sessions"}, - {APIPermission::kSignedInDevices, "signedInDevices", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_SIGNED_IN_DEVICES, - PermissionMessage::kSignedInDevices}, - {APIPermission::kStorage, "storage"}, - {APIPermission::kSyncFileSystem, "syncFileSystem", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_SYNCFILESYSTEM, - PermissionMessage::kSyncFileSystem}, - {APIPermission::kTab, "tabs", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_TABS, PermissionMessage::kTabs}, - {APIPermission::kTopSites, "topSites", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY, - PermissionMessage::kBrowsingHistory}, - {APIPermission::kTts, "tts", 0, - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kTtsEngine, "ttsEngine", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_TTS_ENGINE, - PermissionMessage::kTtsEngine}, - {APIPermission::kWallpaper, "wallpaper", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_WALLPAPER, PermissionMessage::kWallpaper}, - {APIPermission::kWebNavigation, "webNavigation", - APIPermissionInfo::kFlagNone, IDS_EXTENSION_PROMPT_WARNING_TABS, - PermissionMessage::kTabs}, - {APIPermission::kWebRequest, "webRequest"}, - {APIPermission::kWebRequestBlocking, "webRequestBlocking"}, - {APIPermission::kWebView, "webview", - APIPermissionInfo::kFlagCannotBeOptional}, + // Register extension permissions. + {APIPermission::kAccessibilityFeaturesModify, + "accessibilityFeatures.modify", APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_MODIFY, + PermissionMessage::kAccessibilityFeaturesModify}, + {APIPermission::kAccessibilityFeaturesRead, "accessibilityFeatures.read", + APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_ACCESSIBILITY_FEATURES_READ, + PermissionMessage::kAccessibilityFeaturesRead}, + {APIPermission::kAccessibilityPrivate, "accessibilityPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kActiveTab, "activeTab"}, + {APIPermission::kAdView, "adview"}, + {APIPermission::kAlarms, "alarms"}, + {APIPermission::kBookmark, "bookmarks", APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_BOOKMARKS, PermissionMessage::kBookmarks}, + {APIPermission::kBrailleDisplayPrivate, "brailleDisplayPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kBrowsingData, "browsingData"}, + {APIPermission::kContentSettings, "contentSettings", + APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_CONTENT_SETTINGS, + PermissionMessage::kContentSettings}, + {APIPermission::kContextMenus, "contextMenus"}, + {APIPermission::kCookie, "cookies"}, + {APIPermission::kFileBrowserHandler, "fileBrowserHandler", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kFontSettings, "fontSettings", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kHistory, "history", APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY, + PermissionMessage::kBrowsingHistory}, + {APIPermission::kIdltest, "idltest"}, + {APIPermission::kIdle, "idle"}, + {APIPermission::kInfobars, "infobars"}, + {APIPermission::kInput, "input", APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_INPUT, PermissionMessage::kInput}, + {APIPermission::kLocation, "location", + APIPermissionInfo::kFlagCannotBeOptional, + IDS_EXTENSION_PROMPT_WARNING_GEOLOCATION, + PermissionMessage::kGeolocation}, + {APIPermission::kManagement, "management", APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT, PermissionMessage::kManagement}, + {APIPermission::kNativeMessaging, "nativeMessaging", + APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_NATIVE_MESSAGING, + PermissionMessage::kNativeMessaging}, + {APIPermission::kPower, "power"}, + {APIPermission::kPrivacy, "privacy", APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_PRIVACY, PermissionMessage::kPrivacy}, + {APIPermission::kProcesses, "processes", APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_TABS, PermissionMessage::kTabs}, + {APIPermission::kSessions, "sessions"}, + {APIPermission::kSignedInDevices, "signedInDevices", + APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_SIGNED_IN_DEVICES, + PermissionMessage::kSignedInDevices}, + {APIPermission::kSyncFileSystem, "syncFileSystem", + APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_SYNCFILESYSTEM, + PermissionMessage::kSyncFileSystem}, + {APIPermission::kTab, "tabs", APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_TABS, PermissionMessage::kTabs}, + {APIPermission::kTopSites, "topSites", APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY, + PermissionMessage::kBrowsingHistory}, + {APIPermission::kTts, "tts", 0, APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kTtsEngine, "ttsEngine", + APIPermissionInfo::kFlagCannotBeOptional, + IDS_EXTENSION_PROMPT_WARNING_TTS_ENGINE, PermissionMessage::kTtsEngine}, + {APIPermission::kWallpaper, "wallpaper", + APIPermissionInfo::kFlagCannotBeOptional, + IDS_EXTENSION_PROMPT_WARNING_WALLPAPER, PermissionMessage::kWallpaper}, + {APIPermission::kWebNavigation, "webNavigation", + APIPermissionInfo::kFlagNone, IDS_EXTENSION_PROMPT_WARNING_TABS, + PermissionMessage::kTabs}, + {APIPermission::kWebRequest, "webRequest"}, + {APIPermission::kWebRequestBlocking, "webRequestBlocking"}, + {APIPermission::kWebView, "webview", + APIPermissionInfo::kFlagCannotBeOptional}, - // Register private permissions. - {APIPermission::kScreenlockPrivate, "screenlockPrivate", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_SCREENLOCK_PRIVATE, - PermissionMessage::kScreenlockPrivate}, - {APIPermission::kActivityLogPrivate, "activityLogPrivate", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_ACTIVITY_LOG_PRIVATE, - PermissionMessage::kActivityLogPrivate}, - {APIPermission::kAutoTestPrivate, "autotestPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kBookmarkManagerPrivate, "bookmarkManagerPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kCast, "cast", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kChromeosInfoPrivate, "chromeosInfoPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kCommandLinePrivate, "commandLinePrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kDeveloperPrivate, "developerPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kDiagnostics, "diagnostics", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kDial, "dial", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kDownloadsInternal, "downloadsInternal"}, - {APIPermission::kFileBrowserHandlerInternal, - "fileBrowserHandlerInternal", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kFileBrowserPrivate, "fileBrowserPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kHotwordPrivate, "hotwordPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kIdentityPrivate, "identityPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kLogPrivate, "logPrivate"}, - {APIPermission::kNetworkingPrivate, "networkingPrivate", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_NETWORKING_PRIVATE, - PermissionMessage::kNetworkingPrivate}, - {APIPermission::kMediaPlayerPrivate, "mediaPlayerPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kMetricsPrivate, "metricsPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kMDns, "mdns", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kMusicManagerPrivate, "musicManagerPrivate", - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_MUSIC_MANAGER_PRIVATE, - PermissionMessage::kMusicManagerPrivate}, - {APIPermission::kPreferencesPrivate, "preferencesPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kSystemPrivate, "systemPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kCloudPrintPrivate, "cloudPrintPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kInputMethodPrivate, "inputMethodPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kEchoPrivate, "echoPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kFeedbackPrivate, "feedbackPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kImageWriterPrivate, "imageWriterPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kReadingListPrivate, "readingListPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kRtcPrivate, "rtcPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kTerminalPrivate, "terminalPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kVirtualKeyboardPrivate, "virtualKeyboardPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kWallpaperPrivate, "wallpaperPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kWebRequestInternal, "webRequestInternal"}, - {APIPermission::kWebstorePrivate, "webstorePrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kMediaGalleriesPrivate, "mediaGalleriesPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kStreamsPrivate, "streamsPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kEnterprisePlatformKeysPrivate, - "enterprise.platformKeysPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kWebrtcAudioPrivate, "webrtcAudioPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kWebrtcLoggingPrivate, "webrtcLoggingPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kPrincipalsPrivate, "principalsPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kFirstRunPrivate, "firstRunPrivate", - APIPermissionInfo::kFlagCannotBeOptional}, + // Register private permissions. + {APIPermission::kScreenlockPrivate, "screenlockPrivate", + APIPermissionInfo::kFlagCannotBeOptional, + IDS_EXTENSION_PROMPT_WARNING_SCREENLOCK_PRIVATE, + PermissionMessage::kScreenlockPrivate}, + {APIPermission::kActivityLogPrivate, "activityLogPrivate", + APIPermissionInfo::kFlagCannotBeOptional, + IDS_EXTENSION_PROMPT_WARNING_ACTIVITY_LOG_PRIVATE, + PermissionMessage::kActivityLogPrivate}, + {APIPermission::kAutoTestPrivate, "autotestPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kBookmarkManagerPrivate, "bookmarkManagerPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kCast, "cast", APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kChromeosInfoPrivate, "chromeosInfoPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kCommandLinePrivate, "commandLinePrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kDeveloperPrivate, "developerPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kDiagnostics, "diagnostics", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kDial, "dial", APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kDownloadsInternal, "downloadsInternal"}, + {APIPermission::kFileBrowserHandlerInternal, "fileBrowserHandlerInternal", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kFileBrowserPrivate, "fileBrowserPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kHotwordPrivate, "hotwordPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kIdentityPrivate, "identityPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kLogPrivate, "logPrivate"}, + {APIPermission::kWebcamPrivate, "webcamPrivate"}, + {APIPermission::kNetworkingPrivate, "networkingPrivate", + APIPermissionInfo::kFlagCannotBeOptional, + IDS_EXTENSION_PROMPT_WARNING_NETWORKING_PRIVATE, + PermissionMessage::kNetworkingPrivate}, + {APIPermission::kMediaPlayerPrivate, "mediaPlayerPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kMetricsPrivate, "metricsPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kMDns, "mdns", APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kMusicManagerPrivate, "musicManagerPrivate", + APIPermissionInfo::kFlagCannotBeOptional, + IDS_EXTENSION_PROMPT_WARNING_MUSIC_MANAGER_PRIVATE, + PermissionMessage::kMusicManagerPrivate}, + {APIPermission::kPreferencesPrivate, "preferencesPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kSystemPrivate, "systemPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kCloudPrintPrivate, "cloudPrintPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kInputMethodPrivate, "inputMethodPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kEchoPrivate, "echoPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kFeedbackPrivate, "feedbackPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kImageWriterPrivate, "imageWriterPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kReadingListPrivate, "readingListPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kRtcPrivate, "rtcPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kTerminalPrivate, "terminalPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kVirtualKeyboardPrivate, "virtualKeyboardPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kWallpaperPrivate, "wallpaperPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kWebstorePrivate, "webstorePrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kMediaGalleriesPrivate, "mediaGalleriesPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kStreamsPrivate, "streamsPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kEnterprisePlatformKeysPrivate, + "enterprise.platformKeysPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kWebrtcAudioPrivate, "webrtcAudioPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kWebrtcLoggingPrivate, "webrtcLoggingPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kPrincipalsPrivate, "principalsPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kFirstRunPrivate, "firstRunPrivate", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kBluetoothPrivate, "bluetoothPrivate", + APIPermissionInfo::kFlagCannotBeOptional, + IDS_EXTENSION_PROMPT_WARNING_BLUETOOTH_PRIVATE, + PermissionMessage::kBluetoothPrivate}, - // Full url access permissions. - {APIPermission::kDebugger, "debugger", - APIPermissionInfo::kFlagImpliesFullURLAccess | - APIPermissionInfo::kFlagCannotBeOptional, - IDS_EXTENSION_PROMPT_WARNING_DEBUGGER, PermissionMessage::kDebugger}, - {APIPermission::kDevtools, "devtools", - APIPermissionInfo::kFlagImpliesFullURLAccess | - APIPermissionInfo::kFlagCannotBeOptional | - APIPermissionInfo::kFlagInternal}, - {APIPermission::kPageCapture, "pageCapture", - APIPermissionInfo::kFlagImpliesFullURLAccess}, - {APIPermission::kTabCapture, "tabCapture", - APIPermissionInfo::kFlagImpliesFullURLAccess}, - {APIPermission::kTabCaptureForTab, "tabCaptureForTab", - APIPermissionInfo::kFlagInternal}, - {APIPermission::kPlugin, "plugin", - APIPermissionInfo::kFlagImpliesFullURLAccess | - APIPermissionInfo::kFlagImpliesFullAccess | - APIPermissionInfo::kFlagCannotBeOptional | - APIPermissionInfo::kFlagInternal, - IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS, - PermissionMessage::kFullAccess}, - {APIPermission::kProxy, "proxy", - APIPermissionInfo::kFlagImpliesFullURLAccess | - APIPermissionInfo::kFlagCannotBeOptional}, + // Full url access permissions. + {APIPermission::kDebugger, "debugger", + APIPermissionInfo::kFlagImpliesFullURLAccess | + APIPermissionInfo::kFlagCannotBeOptional, + IDS_EXTENSION_PROMPT_WARNING_DEBUGGER, PermissionMessage::kDebugger}, + {APIPermission::kDevtools, "devtools", + APIPermissionInfo::kFlagImpliesFullURLAccess | + APIPermissionInfo::kFlagCannotBeOptional | + APIPermissionInfo::kFlagInternal}, + {APIPermission::kPageCapture, "pageCapture", + APIPermissionInfo::kFlagImpliesFullURLAccess}, + {APIPermission::kTabCapture, "tabCapture", + APIPermissionInfo::kFlagImpliesFullURLAccess}, + {APIPermission::kTabCaptureForTab, "tabCaptureForTab", + APIPermissionInfo::kFlagInternal}, + {APIPermission::kPlugin, "plugin", + APIPermissionInfo::kFlagImpliesFullURLAccess | + APIPermissionInfo::kFlagImpliesFullAccess | + APIPermissionInfo::kFlagCannotBeOptional | + APIPermissionInfo::kFlagInternal, + IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS, + PermissionMessage::kFullAccess}, + {APIPermission::kProxy, "proxy", + APIPermissionInfo::kFlagImpliesFullURLAccess | + APIPermissionInfo::kFlagCannotBeOptional}, - // Platform-app permissions. - {APIPermission::kSerial, "serial", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_SERIAL, PermissionMessage::kSerial}, - // Because warning messages for the "socket" permission vary based on - // the - // permissions parameters, no message ID or message text is specified - // here. - // The message ID and text used will be determined at run-time in the - // |SocketPermission| class. - {APIPermission::kSocket, "socket", - APIPermissionInfo::kFlagCannotBeOptional, 0, PermissionMessage::kNone, - &CreateAPIPermission}, - {APIPermission::kAlwaysOnTopWindows, "app.window.alwaysOnTop"}, - {APIPermission::kAudioCapture, "audioCapture", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_AUDIO_CAPTURE, - PermissionMessage::kAudioCapture}, - {APIPermission::kVideoCapture, "videoCapture", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_VIDEO_CAPTURE, - PermissionMessage::kVideoCapture}, - // The permission string for "fileSystem" is only shown when "write" or - // "directory" is present. Read-only access is only granted after the - // user - // has been shown a file or directory chooser dialog and selected a - // file or - // directory . Selecting the file or directory is considered consent to - // read it. - {APIPermission::kFileSystem, "fileSystem"}, - {APIPermission::kFileSystemDirectory, "fileSystem.directory", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_DIRECTORY, - PermissionMessage::kFileSystemDirectory}, - {APIPermission::kFileSystemProvider, "fileSystemProvider"}, - {APIPermission::kFileSystemRetainEntries, "fileSystem.retainEntries"}, - {APIPermission::kFileSystemWrite, "fileSystem.write", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE, - PermissionMessage::kFileSystemWrite}, - {APIPermission::kFileSystemWriteDirectory, "fileSystem.writeDirectory", - APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE_DIRECTORY, - PermissionMessage::kFileSystemWriteDirectory}, - {APIPermission::kHid, "hid", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_HID, PermissionMessage::kHid}, - // Because warning messages for the "mediaGalleries" permission vary - // based - // on the permissions parameters, no message ID or message text is - // specified here. - // The message ID and text used will be determined at run-time in the - // |MediaGalleriesPermission| class. - {APIPermission::kMediaGalleries, "mediaGalleries", - APIPermissionInfo::kFlagNone, 0, PermissionMessage::kNone, - &CreateAPIPermission}, - {APIPermission::kPushMessaging, "pushMessaging", - APIPermissionInfo::kFlagCannotBeOptional}, - {APIPermission::kUsb, "usb", APIPermissionInfo::kFlagNone, - IDS_EXTENSION_PROMPT_WARNING_USB, PermissionMessage::kUsb}, - {APIPermission::kUsbDevice, "usbDevices", APIPermissionInfo::kFlagNone, - 0, PermissionMessage::kNone, - &CreateAPIPermission}, - {APIPermission::kSystemCpu, "system.cpu"}, - {APIPermission::kSystemMemory, "system.memory"}, - {APIPermission::kSystemNetwork, "system.network"}, - {APIPermission::kSystemDisplay, "system.display"}, - {APIPermission::kSystemStorage, "system.storage"}, - {APIPermission::kPointerLock, "pointerLock"}, - {APIPermission::kFullscreen, "app.window.fullscreen"}, - {APIPermission::kAudio, "audio"}, - {APIPermission::kCastStreaming, "cast.streaming"}, - {APIPermission::kOverrideEscFullscreen, - "app.window.fullscreen.overrideEsc"}, - {APIPermission::kWindowShape, "app.window.shape"}, + // Platform-app permissions. + {APIPermission::kSerial, "serial", APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_SERIAL, PermissionMessage::kSerial}, + {APIPermission::kAlwaysOnTopWindows, "app.window.alwaysOnTop"}, + {APIPermission::kAudioCapture, "audioCapture", + APIPermissionInfo::kFlagNone, IDS_EXTENSION_PROMPT_WARNING_AUDIO_CAPTURE, + PermissionMessage::kAudioCapture}, + {APIPermission::kVideoCapture, "videoCapture", + APIPermissionInfo::kFlagNone, IDS_EXTENSION_PROMPT_WARNING_VIDEO_CAPTURE, + PermissionMessage::kVideoCapture}, + // The permission string for "fileSystem" is only shown when + // "write" or "directory" is present. Read-only access is only + // granted after the user has been shown a file or directory + // chooser dialog and selected a file or directory. Selecting + // the file or directory is considered consent to read it. + {APIPermission::kFileSystem, "fileSystem"}, + {APIPermission::kFileSystemDirectory, "fileSystem.directory", + APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_DIRECTORY, + PermissionMessage::kFileSystemDirectory}, + {APIPermission::kFileSystemProvider, "fileSystemProvider"}, + {APIPermission::kFileSystemRetainEntries, "fileSystem.retainEntries"}, + {APIPermission::kFileSystemWrite, "fileSystem.write"}, + {APIPermission::kFileSystemWriteDirectory, "fileSystem.writeDirectory", + APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE_DIRECTORY, + PermissionMessage::kFileSystemWriteDirectory}, + {APIPermission::kHid, "hid", APIPermissionInfo::kFlagNone, + IDS_EXTENSION_PROMPT_WARNING_HID, PermissionMessage::kHid}, + // Because warning messages for the "mediaGalleries" permission + // vary based on the permissions parameters, no message ID or + // message text is specified here. The message ID and text used + // will be determined at run-time in the + // |MediaGalleriesPermission| class. + {APIPermission::kMediaGalleries, "mediaGalleries", + APIPermissionInfo::kFlagNone, 0, PermissionMessage::kNone, + &CreateAPIPermission}, + {APIPermission::kPushMessaging, "pushMessaging", + APIPermissionInfo::kFlagCannotBeOptional}, + {APIPermission::kUsbDevice, "usbDevices", APIPermissionInfo::kFlagNone, 0, + PermissionMessage::kNone, &CreateAPIPermission}, + {APIPermission::kSystemCpu, "system.cpu"}, + {APIPermission::kSystemMemory, "system.memory"}, + {APIPermission::kSystemNetwork, "system.network"}, + {APIPermission::kSystemDisplay, "system.display"}, + {APIPermission::kSystemStorage, "system.storage"}, + {APIPermission::kPointerLock, "pointerLock"}, + {APIPermission::kFullscreen, "app.window.fullscreen"}, + {APIPermission::kAudio, "audio"}, + {APIPermission::kCastStreaming, "cast.streaming"}, + {APIPermission::kOverrideEscFullscreen, + "app.window.fullscreen.overrideEsc"}, + {APIPermission::kWindowShape, "app.window.shape"}, + {APIPermission::kBrowser, "browser"}, - // Settings override permissions. - {APIPermission::kHomepage, "homepage", - APIPermissionInfo::kFlagCannotBeOptional | - APIPermissionInfo::kFlagInternal, - IDS_EXTENSION_PROMPT_WARNING_HOME_PAGE_SETTING_OVERRIDE, - PermissionMessage::kHomepage}, - {APIPermission::kSearchProvider, "searchProvider", - APIPermissionInfo::kFlagCannotBeOptional | - APIPermissionInfo::kFlagInternal, - IDS_EXTENSION_PROMPT_WARNING_SEARCH_SETTINGS_OVERRIDE, - PermissionMessage::kSearchProvider}, - {APIPermission::kStartupPages, "startupPages", - APIPermissionInfo::kFlagCannotBeOptional | - APIPermissionInfo::kFlagInternal, - IDS_EXTENSION_PROMPT_WARNING_START_PAGE_SETTING_OVERRIDE, - PermissionMessage::kStartupPages}, }; + // Settings override permissions. + {APIPermission::kHomepage, "homepage", + APIPermissionInfo::kFlagCannotBeOptional | + APIPermissionInfo::kFlagInternal, + IDS_EXTENSION_PROMPT_WARNING_HOME_PAGE_SETTING_OVERRIDE, + PermissionMessage::kHomepage}, + {APIPermission::kSearchProvider, "searchProvider", + APIPermissionInfo::kFlagCannotBeOptional | + APIPermissionInfo::kFlagInternal, + IDS_EXTENSION_PROMPT_WARNING_SEARCH_SETTINGS_OVERRIDE, + PermissionMessage::kSearchProvider}, + {APIPermission::kStartupPages, "startupPages", + APIPermissionInfo::kFlagCannotBeOptional | + APIPermissionInfo::kFlagInternal, + IDS_EXTENSION_PROMPT_WARNING_START_PAGE_SETTING_OVERRIDE, + PermissionMessage::kStartupPages}, + }; std::vector permissions; - for (size_t i = 0; i < ARRAYSIZE_UNSAFE(PermissionsToRegister); ++i) { - const PermissionRegistration& pr = PermissionsToRegister[i]; - permissions.push_back(new APIPermissionInfo( - pr.id, pr.name, pr.l10n_message_id, - pr.message_id ? pr.message_id : PermissionMessage::kNone, - pr.flags, - pr.constructor)); - } + for (size_t i = 0; i < ARRAYSIZE_UNSAFE(permissions_to_register); ++i) + permissions.push_back(new APIPermissionInfo(permissions_to_register[i])); return permissions; }