chrome_permission_message_provider.h revision 8bcbed890bc3ce4d7a057a8f32cab53fa534672e
1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_COMMON_EXTENSIONS_PERMISSIONS_CHROME_PERMISSION_MESSAGE_PROVIDER_H_
6#define CHROME_COMMON_EXTENSIONS_PERMISSIONS_CHROME_PERMISSION_MESSAGE_PROVIDER_H_
7
8#include <set>
9
10#include "base/basictypes.h"
11#include "base/gtest_prod_util.h"
12#include "base/strings/string16.h"
13#include "extensions/common/permissions/permission_message_provider.h"
14
15namespace extensions {
16
17class ChromePermissionMessageProvider : public PermissionMessageProvider {
18 public:
19  ChromePermissionMessageProvider();
20  virtual ~ChromePermissionMessageProvider();
21
22  // PermissionMessageProvider implementation.
23  virtual PermissionMessages GetPermissionMessages(
24      const PermissionSet* permissions,
25      Manifest::Type extension_type) const OVERRIDE;
26  virtual std::vector<string16> GetWarningMessages(
27      const PermissionSet* permissions,
28      Manifest::Type extension_type) const OVERRIDE;
29  virtual std::vector<string16> GetWarningMessagesDetails(
30      const PermissionSet* permissions,
31      Manifest::Type extension_type) const OVERRIDE;
32  virtual bool IsPrivilegeIncrease(
33      const PermissionSet* old_permissions,
34      const PermissionSet* new_permissions,
35      Manifest::Type extension_type) const OVERRIDE;
36
37 private:
38  // Gets the permission messages for the API permissions.
39  std::set<PermissionMessage> GetAPIPermissionMessages(
40      const PermissionSet* permissions) const;
41
42  // Gets the permission messages for the host permissions.
43  std::set<PermissionMessage> GetHostPermissionMessages(
44      const PermissionSet* permissions,
45      Manifest::Type extension_type) const;
46
47  // Returns true if |new_permissions| has an elevated API privilege level
48  // compared to |old_permissions|.
49  bool IsAPIPrivilegeIncrease(
50      const PermissionSet* old_permissions,
51      const PermissionSet* new_permissions) const;
52
53  // Returns true if |new_permissions| has more host permissions compared to
54  // |old_permissions|.
55  bool IsHostPrivilegeIncrease(
56      const PermissionSet* old_permissions,
57      const PermissionSet* new_permissions,
58      Manifest::Type extension_type) const;
59
60  DISALLOW_COPY_AND_ASSIGN(ChromePermissionMessageProvider);
61};
62
63}  // namespace extensions
64
65#endif  // CHROME_COMMON_EXTENSIONS_PERMISSIONS_CHROME_PERMISSION_MESSAGE_PROVIDER_H_
66