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