| 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
|
|
|
|
|