Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4381)

Unified Diff: chrome/common/extensions/permissions/media_galleries_permission.cc

Issue 201203006: Move basic API permissions code out of //chrome (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: move moar things Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/permissions/media_galleries_permission.cc
diff --git a/chrome/common/extensions/permissions/media_galleries_permission.cc b/chrome/common/extensions/permissions/media_galleries_permission.cc
deleted file mode 100644
index 8c87bf321686ae5209a4d27b4b01c65cf5d7508b..0000000000000000000000000000000000000000
--- a/chrome/common/extensions/permissions/media_galleries_permission.cc
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright (c) 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.
-
-#include "chrome/common/extensions/permissions/media_galleries_permission.h"
-
-#include <set>
-#include <string>
-
-#include "base/logging.h"
-#include "base/strings/utf_string_conversions.h"
-#include "extensions/common/permissions/permissions_info.h"
-#include "grit/generated_resources.h"
-#include "ui/base/l10n/l10n_util.h"
-
-namespace {
-
-// copyTo permission requires delete permission as a prerequisite.
-// delete permission requires read permission as a prerequisite.
-bool IsValidPermissionSet(bool has_read, bool has_copy_to, bool has_delete,
- std::string* error) {
- if (has_copy_to) {
- if (has_read && has_delete)
- return true;
- if (error)
- *error = "copyTo permission requires read and delete permissions";
- return false;
- }
- if (has_delete) {
- if (has_read)
- return true;
- if (error)
- *error = "delete permission requires read permission";
- return false;
- }
- return true;
-}
-
-} // namespace
-
-namespace extensions {
-
-const char MediaGalleriesPermission::kAllAutoDetectedPermission[] =
- "allAutoDetected";
-const char MediaGalleriesPermission::kScanPermission[] = "scan";
-const char MediaGalleriesPermission::kReadPermission[] = "read";
-const char MediaGalleriesPermission::kCopyToPermission[] = "copyTo";
-const char MediaGalleriesPermission::kDeletePermission[] = "delete";
-
-MediaGalleriesPermission::MediaGalleriesPermission(
- const APIPermissionInfo* info)
- : SetDisjunctionPermission<MediaGalleriesPermissionData,
- MediaGalleriesPermission>(info) {
-}
-
-MediaGalleriesPermission::~MediaGalleriesPermission() {
-}
-
-bool MediaGalleriesPermission::FromValue(const base::Value* value,
- std::string* error) {
- if (!SetDisjunctionPermission<MediaGalleriesPermissionData,
- MediaGalleriesPermission>::FromValue(value,
- error)) {
- return false;
- }
-
- bool has_read = false;
- bool has_copy_to = false;
- bool has_delete = false;
- for (std::set<MediaGalleriesPermissionData>::const_iterator it =
- data_set_.begin(); it != data_set_.end(); ++it) {
- if (it->permission() == kAllAutoDetectedPermission ||
- it->permission() == kScanPermission) {
- continue;
- }
- if (it->permission() == kReadPermission) {
- has_read = true;
- continue;
- }
- if (it->permission() == kCopyToPermission) {
- has_copy_to = true;
- continue;
- }
- if (it->permission() == kDeletePermission) {
- has_delete = true;
- continue;
- }
-
- // No other permissions, so reaching this means
- // MediaGalleriesPermissionData is probably out of sync in some way.
- // Fail so developers notice this.
- NOTREACHED();
- return false;
- }
-
- return IsValidPermissionSet(has_read, has_copy_to, has_delete, error);
-}
-
-PermissionMessages MediaGalleriesPermission::GetMessages() const {
- DCHECK(HasMessages());
- PermissionMessages result;
-
- bool has_all_auto_detected = false;
- bool has_read = false;
- bool has_copy_to = false;
- bool has_delete = false;
-
- for (std::set<MediaGalleriesPermissionData>::const_iterator it =
- data_set_.begin(); it != data_set_.end(); ++it) {
- if (it->permission() == kAllAutoDetectedPermission)
- has_all_auto_detected = true;
- else if (it->permission() == kReadPermission)
- has_read = true;
- else if (it->permission() == kCopyToPermission)
- has_copy_to = true;
- else if (it->permission() == kDeletePermission)
- has_delete = true;
- }
-
- if (!IsValidPermissionSet(has_read, has_copy_to, has_delete, NULL)) {
- NOTREACHED();
- return result;
- }
-
- // If |has_all_auto_detected| is false, then Chrome will prompt the user at
- // runtime when the extension call the getMediaGalleries API.
- if (!has_all_auto_detected)
- return result;
- // No access permission case.
- if (!has_read)
- return result;
-
- // Separate PermissionMessage IDs for read, copyTo, and delete. Otherwise an
- // extension can silently gain new access capabilities.
- result.push_back(PermissionMessage(
- PermissionMessage::kMediaGalleriesAllGalleriesRead,
- l10n_util::GetStringUTF16(
- IDS_EXTENSION_PROMPT_WARNING_MEDIA_GALLERIES_READ)));
-
- // For copyTo and delete, the proper combined permission message will be
- // derived in ChromePermissionMessageProvider::GetWarningMessages(), such
- // that the user get 1 entry for all media galleries access permissions,
- // rather than several separate entries.
- if (has_copy_to) {
- result.push_back(PermissionMessage(
- PermissionMessage::kMediaGalleriesAllGalleriesCopyTo,
- base::string16()));
- }
- if (has_delete) {
- result.push_back(PermissionMessage(
- PermissionMessage::kMediaGalleriesAllGalleriesDelete,
- base::string16()));
- }
- return result;
-}
-
-} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698