18bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 28bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 38bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)// found in the LICENSE file. 48bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 58bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#ifndef CHROME_COMMON_EXTENSIONS_PERMISSIONS_CHROME_PERMISSION_MESSAGE_PROVIDER_H_ 68bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#define CHROME_COMMON_EXTENSIONS_PERMISSIONS_CHROME_PERMISSION_MESSAGE_PROVIDER_H_ 78bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 88bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include <set> 98bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 108bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "base/basictypes.h" 118bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "base/gtest_prod_util.h" 128bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "base/strings/string16.h" 138bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "extensions/common/permissions/permission_message_provider.h" 148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 158bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)namespace extensions { 168bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 178bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)class ChromePermissionMessageProvider : public PermissionMessageProvider { 188bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) public: 198bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) ChromePermissionMessageProvider(); 208bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual ~ChromePermissionMessageProvider(); 218bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 228bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // PermissionMessageProvider implementation. 238bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual PermissionMessages GetPermissionMessages( 248bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const PermissionSet* permissions, 258bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) Manifest::Type extension_type) const OVERRIDE; 26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual std::vector<base::string16> GetWarningMessages( 278bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const PermissionSet* permissions, 288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) Manifest::Type extension_type) const OVERRIDE; 29a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) virtual std::vector<base::string16> GetWarningMessagesDetails( 308bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const PermissionSet* permissions, 318bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) Manifest::Type extension_type) const OVERRIDE; 328bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) virtual bool IsPrivilegeIncrease( 338bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const PermissionSet* old_permissions, 348bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const PermissionSet* new_permissions, 358bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) Manifest::Type extension_type) const OVERRIDE; 368bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 378bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) private: 388bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Gets the permission messages for the API permissions. 398bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) std::set<PermissionMessage> GetAPIPermissionMessages( 408bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const PermissionSet* permissions) const; 418bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Gets the permission messages for the Manifest permissions. 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) std::set<PermissionMessage> GetManifestPermissionMessages( 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const PermissionSet* permissions) const; 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 468bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Gets the permission messages for the host permissions. 478bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) std::set<PermissionMessage> GetHostPermissionMessages( 488bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const PermissionSet* permissions, 498bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) Manifest::Type extension_type) const; 508bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 518bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Returns true if |new_permissions| has an elevated API privilege level 528bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // compared to |old_permissions|. 538bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) bool IsAPIPrivilegeIncrease( 548bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const PermissionSet* old_permissions, 558bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const PermissionSet* new_permissions) const; 568bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Returns true if |new_permissions| has an elevated manifest permission 58f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // privilege level compared to |old_permissions|. 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) bool IsManifestPermissionPrivilegeIncrease( 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const PermissionSet* old_permissions, 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) const PermissionSet* new_permissions) const; 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // Returns true if |new_permissions| has more host permissions compared to 648bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) // |old_permissions|. 658bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) bool IsHostPrivilegeIncrease( 668bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const PermissionSet* old_permissions, 678bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) const PermissionSet* new_permissions, 688bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) Manifest::Type extension_type) const; 698bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 708bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ChromePermissionMessageProvider); 718bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}; 728bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 738bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)} // namespace extensions 748bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles) 758bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif // CHROME_COMMON_EXTENSIONS_PERMISSIONS_CHROME_PERMISSION_MESSAGE_PROVIDER_H_ 76