Home | History | Annotate | Download | only in permissions
      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/chrome_extension_function.h"
     12 #include "chrome/browser/extensions/extension_install_prompt.h"
     13 #include "extensions/common/permissions/permission_set.h"
     14 
     15 namespace extensions {
     16 
     17 // chrome.permissions.contains
     18 class PermissionsContainsFunction : public ChromeSyncExtensionFunction {
     19  public:
     20   DECLARE_EXTENSION_FUNCTION("permissions.contains", PERMISSIONS_CONTAINS)
     21 
     22  protected:
     23   virtual ~PermissionsContainsFunction() {}
     24 
     25   // ExtensionFunction:
     26   virtual bool RunSync() OVERRIDE;
     27 };
     28 
     29 // chrome.permissions.getAll
     30 class PermissionsGetAllFunction : public ChromeSyncExtensionFunction {
     31  public:
     32   DECLARE_EXTENSION_FUNCTION("permissions.getAll", PERMISSIONS_GETALL)
     33 
     34  protected:
     35   virtual ~PermissionsGetAllFunction() {}
     36 
     37   // ExtensionFunction:
     38   virtual bool RunSync() OVERRIDE;
     39 };
     40 
     41 // chrome.permissions.remove
     42 class PermissionsRemoveFunction : public ChromeSyncExtensionFunction {
     43  public:
     44   DECLARE_EXTENSION_FUNCTION("permissions.remove", PERMISSIONS_REMOVE)
     45 
     46  protected:
     47   virtual ~PermissionsRemoveFunction() {}
     48 
     49   // ExtensionFunction:
     50   virtual bool RunSync() OVERRIDE;
     51 };
     52 
     53 // chrome.permissions.request
     54 class PermissionsRequestFunction : public ChromeAsyncExtensionFunction,
     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 RunAsync() OVERRIDE;
     74 
     75  private:
     76   scoped_ptr<ExtensionInstallPrompt> install_ui_;
     77   scoped_refptr<extensions::PermissionSet> requested_permissions_;
     78 };
     79 
     80 }  // namespace extensions
     81 
     82 #endif  // CHROME_BROWSER_EXTENSIONS_API_PERMISSIONS_PERMISSIONS_API_H_
     83