Chromium Code Reviews| Index: chrome/browser/extensions/permissions_updater.h |
| diff --git a/chrome/browser/extensions/permissions_updater.h b/chrome/browser/extensions/permissions_updater.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..5c2f5485699418a61ef05e3b16290ef00e87d651 |
| --- /dev/null |
| +++ b/chrome/browser/extensions/permissions_updater.h |
| @@ -0,0 +1,75 @@ |
| +// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef CHROME_BROWSER_EXTENSIONS_PERMISSIONS_UPDATER_H__ |
| +#define CHROME_BROWSER_EXTENSIONS_PERMISSIONS_UPDATER_H__ |
| +#pragma once |
| + |
| +#include <string> |
| + |
| +#include "base/memory/ref_counted.h" |
| + |
| +namespace base { |
| +class DictionaryValue; |
| +} |
| +class Extension; |
| +class ExtensionPermissionSet; |
| +class ExtensionPrefs; |
| +class Profile; |
| + |
| +namespace extensions { |
| + |
| +class PermissionsUpdater { |
|
Aaron Boodman
2011/12/14 01:00:14
Unit test for this class? Also a class-level comme
jstritar
2012/01/04 21:53:32
Done.
|
| + public: |
| + explicit PermissionsUpdater(Profile* profile); |
| + ~PermissionsUpdater(); |
| + |
| + // Adds the set of |permissions| to the |extension|'s active permission set |
| + // and sends the relevant messages and notifications. This method assumes the |
| + // user has already been prompted, if necessary, for the extra permissions. |
| + void AddPermissions(const Extension* extension, |
| + const ExtensionPermissionSet* permissions); |
| + |
| + // Removes the set of |permissions| from the |extension|'s active permission |
| + // set and sends the relevant messages and notifications. |
| + void RemovePermissions(const Extension* extension, |
| + const ExtensionPermissionSet* permissions); |
| + |
| + // Adds all permissions in the |extension|'s active permissions to its |
| + // granted permission set. |
| + void GrantActivePermissions(const Extension* extension); |
| + |
| + // Sets the |extension|'s active permissions to |permissions|. |
| + void UpdateActivePermissions(const Extension* extension, |
| + const ExtensionPermissionSet* permissions); |
| + |
| + private: |
| + enum EventType { |
| + ADDED, |
| + REMOVED, |
| + }; |
| + |
| + // Dispatches specified event to the extension. |
| + void DispatchEvent(const std::string& extension_id, |
| + const char* event_name, |
| + const ExtensionPermissionSet* changed_permissions); |
| + |
| + // Issues the relevant events, messages and notifications when the |
| + // |extension|'s permissions have |changed| (|changed| is the delta). |
| + // Specifically, this sends the EXTENSION_PERMISSIONS_UPDATED notification, |
| + // the ExtensionMsg_UpdatePermissions IPC message, and fires the |
| + // onAdded/onRemoved events in the extension. |
| + void NotifyPermissionsUpdated(EventType event_type, |
| + const Extension* extension, |
| + const ExtensionPermissionSet* changed); |
| + |
| + // Gets the ExtensionPrefs for the associated profile. |
| + ExtensionPrefs* GetExtensionPrefs(); |
| + |
| + Profile* profile_; |
| +}; |
| + |
| +} // namespace extensions |
| + |
| +#endif // CHROME_BROWSER_EXTENSIONS_PERMISSIONS_UPDATER_H__ |