Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(878)

Unified Diff: chrome/common/extensions/file_browser_handler.cc

Issue 9741002: Adding file access permissions to fileBrowserHandler manifest. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: .. Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/file_browser_handler.cc
diff --git a/chrome/common/extensions/file_browser_handler.cc b/chrome/common/extensions/file_browser_handler.cc
index 784c9907d9faf761c2ffae8814004df7d84dc585..6d37aef7e907133ff25157d55bc0eb59c91a53d8 100644
--- a/chrome/common/extensions/file_browser_handler.cc
+++ b/chrome/common/extensions/file_browser_handler.cc
@@ -4,10 +4,37 @@
#include "chrome/common/extensions/file_browser_handler.h"
+#include "base/logging.h"
#include "chrome/common/extensions/url_pattern.h"
#include "googleurl/src/gurl.h"
-FileBrowserHandler::FileBrowserHandler() {
+namespace {
+
+const char kReadAccessString[] = "read";
+const char kReadWriteAccessString[] = "read-write";
+const char kCreateAccessString[] = "create";
+
+unsigned int kPermissionsNotDefined = 0;
+unsigned int kReadPermission = 1;
+unsigned int kWritePermission = 1 << 1;
+unsigned int kCreatePermission = 1 << 2;
+unsigned int kInvalidPermission = 1 << 3;
+
+unsigned int GetAccessPermissionFlagFromString(const std::string& access_str) {
+ if (access_str == kReadAccessString)
+ return kReadPermission;
+ if (access_str == kReadWriteAccessString)
+ return kReadPermission | kWritePermission;
+ if (access_str == kCreateAccessString)
+ return kCreatePermission;
+ return kInvalidPermission;
+}
+
+}
+
+
+FileBrowserHandler::FileBrowserHandler()
+ : file_access_permission_flags_(kPermissionsNotDefined) {
}
FileBrowserHandler::~FileBrowserHandler() {
@@ -24,3 +51,39 @@ void FileBrowserHandler::ClearPatterns() {
bool FileBrowserHandler::MatchesURL(const GURL& url) const {
return url_set_.MatchesURL(url);
}
+
+bool FileBrowserHandler::AddFileAccessPermission(
+ const std::string& access) {
+ file_access_permission_flags_ |= GetAccessPermissionFlagFromString(access);
+ return (file_access_permission_flags_ & kInvalidPermission) != 0U;
+}
+
+bool FileBrowserHandler::InvalidateFileAccessPermissions() {
+ bool is_invalid = (file_access_permission_flags_ & kInvalidPermission) != 0U;
+ bool can_create = (file_access_permission_flags_ & kCreatePermission) != 0U;
+ bool can_read_or_write = (file_access_permission_flags_ &
+ (kReadPermission | kWritePermission)) != 0U;
+ if (is_invalid || (can_create && can_read_or_write)) {
+ file_access_permission_flags_ = kInvalidPermission;
+ return false;
+ }
+
+ if (file_access_permission_flags_ == kPermissionsNotDefined)
+ file_access_permission_flags_ = kReadPermission | kWritePermission;
+ return true;
+}
+
+bool FileBrowserHandler::CanRead() const {
+ DCHECK(!(file_access_permission_flags_ & kInvalidPermission));
+ return (file_access_permission_flags_ & kReadPermission) != 0;
+}
+
+bool FileBrowserHandler::CanWrite() const {
+ DCHECK(!(file_access_permission_flags_ & kInvalidPermission));
+ return (file_access_permission_flags_ & kWritePermission) != 0;
+}
+
+bool FileBrowserHandler::CanCreate() const {
Yoyo Zhou 2012/03/26 22:42:58 Does write access imply being able to create? Do y
tbarzic 2012/03/26 23:22:51 I plan to use this as check that the handler "has
Yoyo Zhou 2012/03/27 00:54:20 Yeah, my comment is along the lines of: the functi
tbarzic 2012/03/27 01:10:59 Done.
+ DCHECK(!(file_access_permission_flags_ & kInvalidPermission));
+ return (file_access_permission_flags_ & kCreatePermission) != 0;
+}

Powered by Google App Engine
This is Rietveld 408576698