diff options
Diffstat (limited to 'extensions/common/permissions/permission_message.h')
-rw-r--r-- | extensions/common/permissions/permission_message.h | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/extensions/common/permissions/permission_message.h b/extensions/common/permissions/permission_message.h new file mode 100644 index 0000000..19c5799 --- /dev/null +++ b/extensions/common/permissions/permission_message.h @@ -0,0 +1,119 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef EXTENSIONS_COMMON_PERMISSIONS_PERMISSION_MESSAGE_H_ +#define EXTENSIONS_COMMON_PERMISSIONS_PERMISSION_MESSAGE_H_ + +#include <string> +#include <vector> + +#include "base/basictypes.h" +#include "base/strings/string16.h" + +namespace extensions { + +// When prompting the user to install or approve permissions, we display +// messages describing the effects of the permissions rather than listing the +// permissions themselves. Each PermissionMessage represents one of the +// messages shown to the user. +class PermissionMessage { + public: + // Do not reorder this enumeration. If you need to add a new enum, add it just + // prior to kEnumBoundary. + enum ID { + kUnknown, + kNone, + kBookmarks, + kGeolocation, + kBrowsingHistory, + kTabs, + kManagement, + kDebugger, + kDesktopCapture, + kHosts1, + kHosts2, + kHosts3, + kHosts4OrMore, + kHostsAll, + kFullAccess, + kClipboard, + kTtsEngine, + kContentSettings, + kPrivacy, + kManagedMode, + kInput, + kAudioCapture, + kVideoCapture, + kDownloads, + kFileSystemWrite, + kMediaGalleriesAllGalleriesRead, + kSerial, + kSocketAnyHost, + kSocketDomainHosts, + kSocketSpecificHosts, + kBluetooth, + kUsb, + kSystemIndicator, + kUsbDevice, + kMediaGalleriesAllGalleriesCopyTo, + kSystemInfoDisplay, + kNativeMessaging, + kSyncFileSystem, + kAudio, + kFavicon, + kMusicManagerPrivate, + kWebConnectable, + kActivityLogPrivate, + kBluetoothDevices, + kDownloadsOpen, + kNetworkingPrivate, + kDeclarativeWebRequest, + kFileSystemDirectory, + kFileSystemWriteDirectory, + kSignedInDevices, + kWallpaper, + kNetworkState, + kEnumBoundary, + }; + COMPILE_ASSERT(PermissionMessage::kNone > PermissionMessage::kUnknown, + kNone_not_greater_than_kUnknown); + + // Creates the corresponding permission message. + PermissionMessage(ID id, const string16& message); + PermissionMessage(ID id, const string16& message, const string16& details); + ~PermissionMessage(); + + // Gets the id of the permission message, which can be used in UMA + // histograms. + ID id() const { return id_; } + + // Gets a localized message describing this permission. Please note that + // the message will be empty for message types TYPE_NONE and TYPE_UNKNOWN. + const string16& message() const { return message_; } + + // Gets a localized message describing the details for this permission. Please + // note that the message will be empty for message types TYPE_NONE and + // TYPE_UNKNOWN. + const string16& details() const { return details_; } + + // Comparator to work with std::set. + bool operator<(const PermissionMessage& that) const { + return id_ < that.id_; + } + // Comparator to work with base::STLSetDifference. + bool operator>(const PermissionMessage& that) const { + return id_ > that.id_; + } + + private: + ID id_; + string16 message_; + string16 details_; +}; + +typedef std::vector<PermissionMessage> PermissionMessages; + +} // namespace extensions + +#endif // EXTENSIONS_COMMON_PERMISSIONS_PERMISSION_MESSAGE_H_ |