summaryrefslogtreecommitdiffstats
path: root/extensions/common/permissions/permission_message.h
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/common/permissions/permission_message.h')
-rw-r--r--extensions/common/permissions/permission_message.h119
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_