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

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: unit_tests 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..634afb455c860909cb95e932d2a8ead77556332a 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::ValidateFileAccessPermissions() {
+ 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::HasCreateAccessPermission() const {
+ DCHECK(!(file_access_permission_flags_ & kInvalidPermission));
+ return (file_access_permission_flags_ & kCreatePermission) != 0;
+}
« no previous file with comments | « chrome/common/extensions/file_browser_handler.h ('k') | chrome/test/data/extensions/api_test/filebrowser_component/main.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698