// 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