summaryrefslogtreecommitdiffstats
path: root/extensions/browser/suggest_permission_util.cc
diff options
context:
space:
mode:
authorhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-19 07:12:19 +0000
committerhashimoto@chromium.org <hashimoto@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-19 07:13:57 +0000
commit84aa73c4dd94ac0089a164a7f8e8b1571c7a5eb9 (patch)
treeda74dcb7953b68a7511edd6d9c9510d509fa7127 /extensions/browser/suggest_permission_util.cc
parent5da0a8f618fc614dc7386e943f56980155da852e (diff)
downloadchromium_src-84aa73c4dd94ac0089a164a7f8e8b1571c7a5eb9.zip
chromium_src-84aa73c4dd94ac0089a164a7f8e8b1571c7a5eb9.tar.gz
chromium_src-84aa73c4dd94ac0089a164a7f8e8b1571c7a5eb9.tar.bz2
Move suggest_permission_util.cc to extensions
BUG=403276 R=benwells@chromium.org TBR=sky@chromium.org for include fix under geolocation_permission_context_extensions.cc and protected_media_identifier_permission_context.cc Review URL: https://codereview.chromium.org/486593003 Cr-Commit-Position: refs/heads/master@{#290510} git-svn-id: svn://svn.chromium.org/chrome/trunk/src@290510 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'extensions/browser/suggest_permission_util.cc')
-rw-r--r--extensions/browser/suggest_permission_util.cc63
1 files changed, 63 insertions, 0 deletions
diff --git a/extensions/browser/suggest_permission_util.cc b/extensions/browser/suggest_permission_util.cc
new file mode 100644
index 0000000..85bf4ff
--- /dev/null
+++ b/extensions/browser/suggest_permission_util.cc
@@ -0,0 +1,63 @@
+// Copyright (c) 2012 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 "extensions/browser/suggest_permission_util.h"
+
+#include "content/public/browser/render_view_host.h"
+#include "content/public/common/console_message_level.h"
+#include "extensions/common/extension.h"
+#include "extensions/common/extension_messages.h"
+#include "extensions/common/permissions/permissions_data.h"
+#include "extensions/common/permissions/permissions_info.h"
+
+using content::CONSOLE_MESSAGE_LEVEL_WARNING;
+using content::RenderViewHost;
+
+namespace extensions {
+
+namespace {
+
+const char kPermissionsHelpURLForExtensions[] =
+ "http://developer.chrome.com/extensions/manifest.html#permissions";
+const char kPermissionsHelpURLForApps[] =
+ "http://developer.chrome.com/apps/declare_permissions.html";
+
+void SuggestAPIPermissionInDevToolsConsole(APIPermission::ID permission,
+ const Extension* extension,
+ content::RenderViewHost* host) {
+ if (!extension || !host)
+ return;
+
+ const APIPermissionInfo* permission_info =
+ PermissionsInfo::GetInstance()->GetByID(permission);
+ CHECK(permission_info);
+
+ // Note, intentionally not internationalizing this string, as it is output
+ // as a log message to developers in the developer tools console.
+ std::string message = base::StringPrintf(
+ "Is the '%s' permission appropriate? See %s.",
+ permission_info->name(),
+ extension->is_platform_app() ?
+ kPermissionsHelpURLForApps : kPermissionsHelpURLForExtensions);
+
+ host->Send(new ExtensionMsg_AddMessageToConsole(
+ host->GetRoutingID(), CONSOLE_MESSAGE_LEVEL_WARNING, message));
+}
+
+} // namespace
+
+bool IsExtensionWithPermissionOrSuggestInConsole(
+ APIPermission::ID permission,
+ const Extension* extension,
+ content::RenderViewHost* host) {
+ if (extension && extension->permissions_data()->HasAPIPermission(permission))
+ return true;
+
+ if (extension)
+ SuggestAPIPermissionInDevToolsConsole(permission, extension, host);
+
+ return false;
+}
+
+} // namespace extensions