chrome_permission_message_provider.h revision 8bcbed890bc3ce4d7a057a8f32cab53fa534672e
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;
268bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  virtual std::vector<string16> GetWarningMessages(
278bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      const PermissionSet* permissions,
288bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      Manifest::Type extension_type) const OVERRIDE;
298bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  virtual std::vector<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)
428bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // Gets the permission messages for the host permissions.
438bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  std::set<PermissionMessage> GetHostPermissionMessages(
448bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      const PermissionSet* permissions,
458bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      Manifest::Type extension_type) const;
468bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
478bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // Returns true if |new_permissions| has an elevated API privilege level
488bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // compared to |old_permissions|.
498bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  bool IsAPIPrivilegeIncrease(
508bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      const PermissionSet* old_permissions,
518bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      const PermissionSet* new_permissions) const;
528bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
538bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // Returns true if |new_permissions| has more host permissions compared to
548bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  // |old_permissions|.
558bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  bool IsHostPrivilegeIncrease(
568bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      const PermissionSet* old_permissions,
578bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      const PermissionSet* new_permissions,
588bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)      Manifest::Type extension_type) const;
598bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
608bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ChromePermissionMessageProvider);
618bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)};
628bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
638bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)}  // namespace extensions
648bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)
658bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif  // CHROME_COMMON_EXTENSIONS_PERMISSIONS_CHROME_PERMISSION_MESSAGE_PROVIDER_H_
66