permissions_api.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1// Copyright (c) 2012 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_BROWSER_EXTENSIONS_API_PERMISSIONS_PERMISSIONS_API_H_
6#define CHROME_BROWSER_EXTENSIONS_API_PERMISSIONS_PERMISSIONS_API_H_
7
8#include <string>
9
10#include "base/compiler_specific.h"
11#include "chrome/browser/extensions/extension_function.h"
12#include "chrome/browser/extensions/extension_install_prompt.h"
13#include "chrome/common/extensions/permissions/permission_set.h"
14
15class ExtensionService;
16
17// chrome.permissions.contains
18class PermissionsContainsFunction : public SyncExtensionFunction {
19 public:
20  DECLARE_EXTENSION_FUNCTION("permissions.contains", PERMISSIONS_CONTAINS)
21
22 protected:
23  virtual ~PermissionsContainsFunction() {}
24
25  // ExtensionFunction:
26  virtual bool RunImpl() OVERRIDE;
27};
28
29// chrome.permissions.getAll
30class PermissionsGetAllFunction : public SyncExtensionFunction {
31 public:
32  DECLARE_EXTENSION_FUNCTION("permissions.getAll", PERMISSIONS_GETALL)
33
34 protected:
35  virtual ~PermissionsGetAllFunction() {}
36
37  // ExtensionFunction:
38  virtual bool RunImpl() OVERRIDE;
39};
40
41// chrome.permissions.remove
42class PermissionsRemoveFunction : public SyncExtensionFunction {
43 public:
44  DECLARE_EXTENSION_FUNCTION("permissions.remove", PERMISSIONS_REMOVE)
45
46 protected:
47  virtual ~PermissionsRemoveFunction() {}
48
49  // ExtensionFunction:
50  virtual bool RunImpl() OVERRIDE;
51};
52
53// chrome.permissions.request
54class PermissionsRequestFunction : public AsyncExtensionFunction,
55                                   public ExtensionInstallPrompt::Delegate {
56 public:
57  DECLARE_EXTENSION_FUNCTION("permissions.request", PERMISSIONS_REQUEST)
58
59  PermissionsRequestFunction();
60
61  // FOR TESTS ONLY to bypass the confirmation UI.
62  static void SetAutoConfirmForTests(bool should_proceed);
63  static void SetIgnoreUserGestureForTests(bool ignore);
64
65  // ExtensionInstallPrompt::Delegate:
66  virtual void InstallUIProceed() OVERRIDE;
67  virtual void InstallUIAbort(bool user_initiated) OVERRIDE;
68
69 protected:
70  virtual ~PermissionsRequestFunction();
71
72  // ExtensionFunction:
73  virtual bool RunImpl() OVERRIDE;
74
75 private:
76  scoped_ptr<ExtensionInstallPrompt> install_ui_;
77  scoped_refptr<extensions::PermissionSet> requested_permissions_;
78};
79
80#endif  // CHROME_BROWSER_EXTENSIONS_API_PERMISSIONS_PERMISSIONS_API_H_
81