Chromium Code Reviews| Index: chrome/browser/extensions/extension_special_storage_policy.h | 
| =================================================================== | 
| --- chrome/browser/extensions/extension_special_storage_policy.h (revision 80624) | 
| +++ chrome/browser/extensions/extension_special_storage_policy.h (working copy) | 
| @@ -9,6 +9,7 @@ | 
| #include <map> | 
| #include <set> | 
| +#include "base/file_path.h" | 
| #include "base/synchronization/lock.h" | 
| #include "googleurl/src/gurl.h" | 
| #include "webkit/quota/special_storage_policy.h" | 
| @@ -26,7 +27,10 @@ | 
| // data remover. These methods are safe to call on any thread. | 
| virtual bool IsStorageProtected(const GURL& origin); | 
| virtual bool IsStorageUnlimited(const GURL& origin); | 
| - virtual bool IsLocalFileSystemAccessAllowed(const GURL& origin); | 
| + virtual bool IsLocalFileSystemAccessAllowed(const GURL& origin, | 
| + const FilePath& virtual_path); | 
| + virtual void GrantLocalFileSystemAccess(const GURL& origin, | 
| + const FilePath& virtual_path); | 
| // Methods used by the ExtensionService to populate this class. | 
| void GrantRightsForExtension(const Extension* extension); | 
| @@ -37,26 +41,45 @@ | 
| class SpecialCollection { | 
| public: | 
| SpecialCollection(); | 
| - ~SpecialCollection(); | 
| + virtual ~SpecialCollection(); | 
| bool Contains(const GURL& origin); | 
| void Add(const Extension* extension); | 
| - void Remove(const Extension* extension); | 
| - void Clear(); | 
| + virtual void Remove(const Extension* extension); | 
| + virtual void Clear(); | 
| - private: | 
| + protected: | 
| typedef std::map<GURL, bool> CachedResults; | 
| typedef std::set<const Extension*> Extensions; | 
| Extensions extensions_; | 
| CachedResults cached_resuts_; | 
| 
 
ericu
2011/04/08 02:12:14
typo: results
 
zel
2011/04/08 04:16:36
Done.
 
 | 
| }; | 
| + class SpecialPathCollection : public SpecialCollection { | 
| + public: | 
| + SpecialPathCollection(); | 
| + virtual ~SpecialPathCollection(); | 
| + | 
| + // SpecialCollection overrides. | 
| + virtual void Remove(const Extension* extension); | 
| + virtual void Clear(); | 
| + | 
| + void AddPath(const GURL& origin, const FilePath& path); | 
| + bool ContainsPath(const GURL& origin, const FilePath& path); | 
| + | 
| + private: | 
| + typedef std::set<FilePath> PathSet; | 
| + typedef std::map<const Extension*, PathSet> PathAccessMap; | 
| + const Extension* GetExtension(const GURL& origin); | 
| + PathAccessMap path_map_; | 
| + }; | 
| + | 
| virtual ~ExtensionSpecialStoragePolicy(); | 
| base::Lock lock_; // Synchronize all access to the collections. | 
| SpecialCollection protected_apps_; | 
| SpecialCollection unlimited_extensions_; | 
| - SpecialCollection local_filesystem_extensions_; | 
| + SpecialPathCollection local_filesystem_extensions_; | 
| }; | 
| #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_SPECIAL_STORAGE_POLICY_H_ |