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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/common/extensions/file_browser_handler.h" 5 #include "chrome/common/extensions/file_browser_handler.h"
6 6
7 #include "base/logging.h"
7 #include "chrome/common/extensions/url_pattern.h" 8 #include "chrome/common/extensions/url_pattern.h"
8 #include "googleurl/src/gurl.h" 9 #include "googleurl/src/gurl.h"
9 10
10 FileBrowserHandler::FileBrowserHandler() { 11 namespace {
12
13 const char kReadAccessString[] = "read";
14 const char kReadWriteAccessString[] = "read-write";
15 const char kCreateAccessString[] = "create";
16
17 unsigned int kPermissionsNotDefined = 0;
18 unsigned int kReadPermission = 1;
19 unsigned int kWritePermission = 1 << 1;
20 unsigned int kCreatePermission = 1 << 2;
21 unsigned int kInvalidPermission = 1 << 3;
22
23 unsigned int GetAccessPermissionFlagFromString(const std::string& access_str) {
24 if (access_str == kReadAccessString)
25 return kReadPermission;
26 if (access_str == kReadWriteAccessString)
27 return kReadPermission | kWritePermission;
28 if (access_str == kCreateAccessString)
29 return kCreatePermission;
30 return kInvalidPermission;
31 }
32
33 }
34
35
36 FileBrowserHandler::FileBrowserHandler()
37 : file_access_permission_flags_(kPermissionsNotDefined) {
11 } 38 }
12 39
13 FileBrowserHandler::~FileBrowserHandler() { 40 FileBrowserHandler::~FileBrowserHandler() {
14 } 41 }
15 42
16 void FileBrowserHandler::AddPattern(const URLPattern& pattern) { 43 void FileBrowserHandler::AddPattern(const URLPattern& pattern) {
17 url_set_.AddPattern(pattern); 44 url_set_.AddPattern(pattern);
18 } 45 }
19 46
20 void FileBrowserHandler::ClearPatterns() { 47 void FileBrowserHandler::ClearPatterns() {
21 url_set_.ClearPatterns(); 48 url_set_.ClearPatterns();
22 } 49 }
23 50
24 bool FileBrowserHandler::MatchesURL(const GURL& url) const { 51 bool FileBrowserHandler::MatchesURL(const GURL& url) const {
25 return url_set_.MatchesURL(url); 52 return url_set_.MatchesURL(url);
26 } 53 }
54
55 bool FileBrowserHandler::AddFileAccessPermission(
56 const std::string& access) {
57 file_access_permission_flags_ |= GetAccessPermissionFlagFromString(access);
58 return (file_access_permission_flags_ & kInvalidPermission) != 0U;
59 }
60
61 bool FileBrowserHandler::ValidateFileAccessPermissions() {
62 bool is_invalid = (file_access_permission_flags_ & kInvalidPermission) != 0U;
63 bool can_create = (file_access_permission_flags_ & kCreatePermission) != 0U;
64 bool can_read_or_write = (file_access_permission_flags_ &
65 (kReadPermission | kWritePermission)) != 0U;
66 if (is_invalid || (can_create && can_read_or_write)) {
67 file_access_permission_flags_ = kInvalidPermission;
68 return false;
69 }
70
71 if (file_access_permission_flags_ == kPermissionsNotDefined)
72 file_access_permission_flags_ = kReadPermission | kWritePermission;
73 return true;
74 }
75
76 bool FileBrowserHandler::CanRead() const {
77 DCHECK(!(file_access_permission_flags_ & kInvalidPermission));
78 return (file_access_permission_flags_ & kReadPermission) != 0;
79 }
80
81 bool FileBrowserHandler::CanWrite() const {
82 DCHECK(!(file_access_permission_flags_ & kInvalidPermission));
83 return (file_access_permission_flags_ & kWritePermission) != 0;
84 }
85
86 bool FileBrowserHandler::HasCreateAccessPermission() const {
87 DCHECK(!(file_access_permission_flags_ & kInvalidPermission));
88 return (file_access_permission_flags_ & kCreatePermission) != 0;
89 }
OLDNEW
« 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