OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/common/extensions/permissions/chrome_api_permissions.h" | 5 #include "chrome/common/extensions/permissions/chrome_api_permissions.h" |
6 | 6 |
7 #include "chrome/grit/generated_resources.h" | 7 #include "chrome/grit/generated_resources.h" |
8 #include "extensions/common/permissions/api_permission.h" | 8 #include "extensions/common/permissions/api_permission.h" |
9 #include "extensions/common/permissions/api_permission_set.h" | 9 #include "extensions/common/permissions/api_permission_set.h" |
10 #include "extensions/common/permissions/media_galleries_permission.h" | 10 #include "extensions/common/permissions/media_galleries_permission.h" |
11 #include "extensions/common/permissions/permission_message.h" | 11 #include "extensions/common/permissions/permission_message.h" |
12 #include "extensions/common/permissions/permissions_info.h" | 12 #include "extensions/common/permissions/permissions_info.h" |
13 #include "extensions/strings/grit/extensions_strings.h" | 13 #include "extensions/strings/grit/extensions_strings.h" |
14 | 14 |
15 namespace extensions { | 15 namespace extensions { |
16 | 16 |
17 namespace { | 17 namespace { |
18 | 18 |
19 const char kOldAlwaysOnTopWindowsPermission[] = "alwaysOnTopWindows"; | |
20 const char kOldFullscreenPermission[] = "fullscreen"; | |
21 const char kOldOverrideEscFullscreenPermission[] = "overrideEscFullscreen"; | |
22 const char kOldUnlimitedStoragePermission[] = "unlimited_storage"; | 19 const char kOldUnlimitedStoragePermission[] = "unlimited_storage"; |
23 const char kWindowsPermission[] = "windows"; | 20 const char kWindowsPermission[] = "windows"; |
24 | 21 |
25 template<typename T> APIPermission* CreateAPIPermission( | 22 template<typename T> APIPermission* CreateAPIPermission( |
26 const APIPermissionInfo* permission) { | 23 const APIPermissionInfo* permission) { |
27 return new T(permission); | 24 return new T(permission); |
28 } | 25 } |
29 | 26 |
30 } // namespace | 27 } // namespace |
31 | 28 |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
289 APIPermissionInfo::kFlagImpliesFullAccess | | 286 APIPermissionInfo::kFlagImpliesFullAccess | |
290 APIPermissionInfo::kFlagCannotBeOptional | | 287 APIPermissionInfo::kFlagCannotBeOptional | |
291 APIPermissionInfo::kFlagInternal, | 288 APIPermissionInfo::kFlagInternal, |
292 IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS, | 289 IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS, |
293 PermissionMessage::kFullAccess}, | 290 PermissionMessage::kFullAccess}, |
294 {APIPermission::kProxy, "proxy", | 291 {APIPermission::kProxy, "proxy", |
295 APIPermissionInfo::kFlagImpliesFullURLAccess | | 292 APIPermissionInfo::kFlagImpliesFullURLAccess | |
296 APIPermissionInfo::kFlagCannotBeOptional}, | 293 APIPermissionInfo::kFlagCannotBeOptional}, |
297 | 294 |
298 // Platform-app permissions. | 295 // Platform-app permissions. |
299 {APIPermission::kAlwaysOnTopWindows, "app.window.alwaysOnTop"}, | 296 |
300 // The permission string for "fileSystem" is only shown when | 297 // The permission string for "fileSystem" is only shown when |
301 // "write" or "directory" is present. Read-only access is only | 298 // "write" or "directory" is present. Read-only access is only |
302 // granted after the user has been shown a file or directory | 299 // granted after the user has been shown a file or directory |
303 // chooser dialog and selected a file or directory. Selecting | 300 // chooser dialog and selected a file or directory. Selecting |
304 // the file or directory is considered consent to read it. | 301 // the file or directory is considered consent to read it. |
305 {APIPermission::kFileSystem, "fileSystem"}, | 302 {APIPermission::kFileSystem, "fileSystem"}, |
306 {APIPermission::kFileSystemDirectory, "fileSystem.directory", | 303 {APIPermission::kFileSystemDirectory, "fileSystem.directory", |
307 APIPermissionInfo::kFlagNone, | 304 APIPermissionInfo::kFlagNone, |
308 IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_DIRECTORY, | 305 IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_DIRECTORY, |
309 PermissionMessage::kFileSystemDirectory}, | 306 PermissionMessage::kFileSystemDirectory}, |
310 {APIPermission::kFileSystemProvider, "fileSystemProvider"}, | 307 {APIPermission::kFileSystemProvider, "fileSystemProvider"}, |
311 {APIPermission::kFileSystemRetainEntries, "fileSystem.retainEntries"}, | 308 {APIPermission::kFileSystemRetainEntries, "fileSystem.retainEntries"}, |
312 {APIPermission::kFileSystemWrite, "fileSystem.write"}, | 309 {APIPermission::kFileSystemWrite, "fileSystem.write"}, |
313 {APIPermission::kFileSystemWriteDirectory, "fileSystem.writeDirectory", | 310 {APIPermission::kFileSystemWriteDirectory, "fileSystem.writeDirectory", |
314 APIPermissionInfo::kFlagNone, | 311 APIPermissionInfo::kFlagNone, |
315 IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE_DIRECTORY, | 312 IDS_EXTENSION_PROMPT_WARNING_FILE_SYSTEM_WRITE_DIRECTORY, |
316 PermissionMessage::kFileSystemWriteDirectory}, | 313 PermissionMessage::kFileSystemWriteDirectory}, |
317 // Because warning messages for the "mediaGalleries" permission | 314 // Because warning messages for the "mediaGalleries" permission |
318 // vary based on the permissions parameters, no message ID or | 315 // vary based on the permissions parameters, no message ID or |
319 // message text is specified here. The message ID and text used | 316 // message text is specified here. The message ID and text used |
320 // will be determined at run-time in the | 317 // will be determined at run-time in the |
321 // |MediaGalleriesPermission| class. | 318 // |MediaGalleriesPermission| class. |
322 {APIPermission::kMediaGalleries, "mediaGalleries", | 319 {APIPermission::kMediaGalleries, "mediaGalleries", |
323 APIPermissionInfo::kFlagNone, 0, PermissionMessage::kNone, | 320 APIPermissionInfo::kFlagNone, 0, PermissionMessage::kNone, |
324 &CreateAPIPermission<MediaGalleriesPermission>}, | 321 &CreateAPIPermission<MediaGalleriesPermission>}, |
325 {APIPermission::kPushMessaging, "pushMessaging", | 322 {APIPermission::kPushMessaging, "pushMessaging", |
326 APIPermissionInfo::kFlagCannotBeOptional}, | 323 APIPermissionInfo::kFlagCannotBeOptional}, |
327 {APIPermission::kPointerLock, "pointerLock"}, | 324 {APIPermission::kPointerLock, "pointerLock"}, |
328 {APIPermission::kFullscreen, "app.window.fullscreen"}, | |
329 {APIPermission::kAudio, "audio"}, | 325 {APIPermission::kAudio, "audio"}, |
330 {APIPermission::kCastStreaming, "cast.streaming"}, | 326 {APIPermission::kCastStreaming, "cast.streaming"}, |
331 {APIPermission::kOverrideEscFullscreen, | |
332 "app.window.fullscreen.overrideEsc"}, | |
333 {APIPermission::kWindowShape, "app.window.shape"}, | |
334 {APIPermission::kAlphaEnabled, "app.window.alpha"}, | |
335 {APIPermission::kBrowser, "browser"}, | 327 {APIPermission::kBrowser, "browser"}, |
336 | 328 |
337 // Settings override permissions. | 329 // Settings override permissions. |
338 {APIPermission::kHomepage, "homepage", | 330 {APIPermission::kHomepage, "homepage", |
339 APIPermissionInfo::kFlagCannotBeOptional | | 331 APIPermissionInfo::kFlagCannotBeOptional | |
340 APIPermissionInfo::kFlagInternal, | 332 APIPermissionInfo::kFlagInternal, |
341 IDS_EXTENSION_PROMPT_WARNING_HOME_PAGE_SETTING_OVERRIDE, | 333 IDS_EXTENSION_PROMPT_WARNING_HOME_PAGE_SETTING_OVERRIDE, |
342 PermissionMessage::kHomepage}, | 334 PermissionMessage::kHomepage}, |
343 {APIPermission::kSearchProvider, "searchProvider", | 335 {APIPermission::kSearchProvider, "searchProvider", |
344 APIPermissionInfo::kFlagCannotBeOptional | | 336 APIPermissionInfo::kFlagCannotBeOptional | |
(...skipping 12 matching lines...) Expand all Loading... |
357 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(permissions_to_register); ++i) | 349 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(permissions_to_register); ++i) |
358 permissions.push_back(new APIPermissionInfo(permissions_to_register[i])); | 350 permissions.push_back(new APIPermissionInfo(permissions_to_register[i])); |
359 return permissions; | 351 return permissions; |
360 } | 352 } |
361 | 353 |
362 std::vector<PermissionsProvider::AliasInfo> | 354 std::vector<PermissionsProvider::AliasInfo> |
363 ChromeAPIPermissions::GetAllAliases() const { | 355 ChromeAPIPermissions::GetAllAliases() const { |
364 // Register aliases. | 356 // Register aliases. |
365 std::vector<PermissionsProvider::AliasInfo> aliases; | 357 std::vector<PermissionsProvider::AliasInfo> aliases; |
366 aliases.push_back(PermissionsProvider::AliasInfo( | 358 aliases.push_back(PermissionsProvider::AliasInfo( |
367 "app.window.alwaysOnTop", kOldAlwaysOnTopWindowsPermission)); | |
368 aliases.push_back(PermissionsProvider::AliasInfo("app.window.fullscreen", | |
369 kOldFullscreenPermission)); | |
370 aliases.push_back( | |
371 PermissionsProvider::AliasInfo("app.window.fullscreen.overrideEsc", | |
372 kOldOverrideEscFullscreenPermission)); | |
373 aliases.push_back(PermissionsProvider::AliasInfo( | |
374 "unlimitedStorage", kOldUnlimitedStoragePermission)); | 359 "unlimitedStorage", kOldUnlimitedStoragePermission)); |
375 aliases.push_back(PermissionsProvider::AliasInfo( | 360 aliases.push_back(PermissionsProvider::AliasInfo( |
376 "tabs", kWindowsPermission)); | 361 "tabs", kWindowsPermission)); |
377 return aliases; | 362 return aliases; |
378 } | 363 } |
379 | 364 |
380 } // namespace extensions | 365 } // namespace extensions |
OLD | NEW |