Index: webkit/chromeos/fileapi/file_access_permissions.cc |
=================================================================== |
--- webkit/chromeos/fileapi/file_access_permissions.cc (revision 0) |
+++ webkit/chromeos/fileapi/file_access_permissions.cc (revision 0) |
@@ -0,0 +1,58 @@ |
+// 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. |
+ |
+#include "webkit/chromeos/fileapi/file_access_permissions.h" |
+ |
+#include "base/command_line.h" |
+#include "base/logging.h" |
+ |
+namespace chromeos { |
+ |
+FileAccessPermissions::FileAccessPermissions() {} |
+ |
+FileAccessPermissions::~FileAccessPermissions() {} |
+ |
+ |
+void FileAccessPermissions::GrantAccessPermission( |
+ const std::string& extension_id, const FilePath& path) { |
+ base::AutoLock locker(lock_); |
+ PathAccessMap::iterator path_map_iter = path_map_.find(extension_id); |
+ if (path_map_iter == path_map_.end()) { |
+ PathSet path_set; |
+ path_set.insert(path); |
+ path_map_.insert(PathAccessMap::value_type(extension_id, path_set)); |
+ } else { |
+ if (path_map_iter->second.find(path) != path_map_iter->second.end()) |
+ return; |
+ path_map_iter->second.insert(path); |
+ } |
+} |
+ |
+bool FileAccessPermissions::HasAccessPermission( |
+ const std::string& extension_id, const FilePath& path) { |
+ base::AutoLock locker(lock_); |
+ PathAccessMap::const_iterator path_map_iter = path_map_.find(extension_id); |
+ if (path_map_iter == path_map_.end()) |
+ return false; |
+ |
+ // Check this file and walk up its directory tree to find if this extension |
+ // has access to it. |
+ FilePath current_path = path.StripTrailingSeparators(); |
+ FilePath last_path; |
+ while (current_path != last_path) { |
+ if (path_map_iter->second.find(current_path) != path_map_iter->second.end()) |
+ return true; |
+ last_path = current_path; |
+ current_path = current_path.DirName(); |
+ } |
+ return false; |
+} |
+ |
+void FileAccessPermissions::RevokePermissions( |
+ const std::string& extension_id) { |
+ base::AutoLock locker(lock_); |
+ path_map_.erase(extension_id); |
+} |
+ |
+} |
Property changes on: webkit/chromeos/fileapi/file_access_permissions.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |