1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef EXTENSIONS_COMMON_PERMISSIONS_PERMISSION_MESSAGE_H_ 6 #define EXTENSIONS_COMMON_PERMISSIONS_PERMISSION_MESSAGE_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "base/basictypes.h" 12 #include "base/strings/string16.h" 13 14 namespace extensions { 15 16 // When prompting the user to install or approve permissions, we display 17 // messages describing the effects of the permissions rather than listing the 18 // permissions themselves. Each PermissionMessage represents one of the 19 // messages shown to the user. 20 class PermissionMessage { 21 public: 22 // Do not reorder this enumeration. If you need to add a new enum, add it just 23 // prior to kEnumBoundary. 24 enum ID { 25 kUnknown, 26 kNone, 27 kBookmarks, 28 kGeolocation, 29 kBrowsingHistory, 30 kTabs, 31 kManagement, 32 kDebugger, 33 kDesktopCapture, 34 kHid, 35 kHosts1, 36 kHosts2, 37 kHosts3, 38 kHosts4OrMore, 39 kHostsAll, 40 kFullAccess, 41 kClipboard, 42 kTtsEngine, 43 kContentSettings, 44 kPrivacy, 45 kSupervisedUser, 46 kInput, 47 kAudioCapture, 48 kVideoCapture, 49 kDownloads, 50 kDeleted_FileSystemWrite, 51 kMediaGalleriesAllGalleriesRead, 52 kSerial, 53 kSocketAnyHost, 54 kSocketDomainHosts, 55 kSocketSpecificHosts, 56 kBluetooth, 57 kUsb, 58 kSystemIndicator, 59 kUsbDevice, 60 kMediaGalleriesAllGalleriesCopyTo, 61 kSystemInfoDisplay, 62 kNativeMessaging, 63 kSyncFileSystem, 64 kAudio, 65 kFavicon, 66 kMusicManagerPrivate, 67 kWebConnectable, 68 kActivityLogPrivate, 69 kBluetoothDevices, 70 kDownloadsOpen, 71 kNetworkingPrivate, 72 kDeclarativeWebRequest, 73 kFileSystemDirectory, 74 kFileSystemWriteDirectory, 75 kSignedInDevices, 76 kWallpaper, 77 kNetworkState, 78 kHomepage, 79 kSearchProvider, 80 kStartupPages, 81 kMediaGalleriesAllGalleriesDelete, 82 kScreenlockPrivate, 83 kOverrideBookmarksUI, 84 kAutomation, 85 kAccessibilityFeaturesModify, 86 kAccessibilityFeaturesRead, 87 kBluetoothPrivate, 88 kIdentityEmail, 89 kExperienceSamplingPrivate, 90 kCopresence, 91 kTopSites, 92 kU2fDevices, 93 kEnumBoundary, 94 }; 95 COMPILE_ASSERT(PermissionMessage::kNone > PermissionMessage::kUnknown, 96 kNone_not_greater_than_kUnknown); 97 98 // Creates the corresponding permission message. 99 PermissionMessage(ID id, const base::string16& message); 100 PermissionMessage(ID id, 101 const base::string16& message, 102 const base::string16& details); 103 ~PermissionMessage(); 104 105 // Gets the id of the permission message, which can be used in UMA 106 // histograms. id()107 ID id() const { return id_; } 108 109 // Gets a localized message describing this permission. Please note that 110 // the message will be empty for message types TYPE_NONE and TYPE_UNKNOWN. message()111 const base::string16& message() const { return message_; } 112 113 // Gets a localized message describing the details for this permission. Please 114 // note that the message will be empty for message types TYPE_NONE and 115 // TYPE_UNKNOWN. details()116 const base::string16& details() const { return details_; } 117 118 // Comparator to work with std::set. 119 bool operator<(const PermissionMessage& that) const { 120 return id_ < that.id_; 121 } 122 // Comparator to work with base::STLSetDifference. 123 bool operator>(const PermissionMessage& that) const { 124 return id_ > that.id_; 125 } 126 127 private: 128 ID id_; 129 base::string16 message_; 130 base::string16 details_; 131 }; 132 133 typedef std::vector<PermissionMessage> PermissionMessages; 134 135 } // namespace extensions 136 137 #endif // EXTENSIONS_COMMON_PERMISSIONS_PERMISSION_MESSAGE_H_ 138