| Index: content/browser/shared/child_process_security_policy_helper.cc
|
| diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/shared/child_process_security_policy_helper.cc
|
| similarity index 75%
|
| rename from content/browser/child_process_security_policy_impl.cc
|
| rename to content/browser/shared/child_process_security_policy_helper.cc
|
| index 0def4b57ad00d5633e426246ec2b46e29c3159ae..b09179ca0c438374f3451be86b00ec863860393f 100644
|
| --- a/content/browser/child_process_security_policy_impl.cc
|
| +++ b/content/browser/shared/child_process_security_policy_helper.cc
|
| @@ -2,7 +2,7 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "content/browser/child_process_security_policy_impl.h"
|
| +#include "content/browser/shared/child_process_security_policy_helper.h"
|
|
|
| #include <algorithm>
|
| #include <utility>
|
| @@ -37,24 +37,24 @@ namespace {
|
| // Used internally only. These bit positions have no relationship to any
|
| // underlying OS and can be changed to accommodate finer-grained permissions.
|
| enum ChildProcessSecurityPermissions {
|
| - READ_FILE_PERMISSION = 1 << 0,
|
| - WRITE_FILE_PERMISSION = 1 << 1,
|
| - CREATE_NEW_FILE_PERMISSION = 1 << 2,
|
| + READ_FILE_PERMISSION = 1 << 0,
|
| + WRITE_FILE_PERMISSION = 1 << 1,
|
| + CREATE_NEW_FILE_PERMISSION = 1 << 2,
|
| CREATE_OVERWRITE_FILE_PERMISSION = 1 << 3,
|
| - DELETE_FILE_PERMISSION = 1 << 4,
|
| + DELETE_FILE_PERMISSION = 1 << 4,
|
|
|
| // Used by Media Galleries API
|
| - COPY_INTO_FILE_PERMISSION = 1 << 5,
|
| + COPY_INTO_FILE_PERMISSION = 1 << 5,
|
| };
|
|
|
| // Used internally only. Bitmasks that are actually used by the Grant* and Can*
|
| // methods. These contain one or more ChildProcessSecurityPermissions.
|
| enum ChildProcessSecurityGrants {
|
| - READ_FILE_GRANT = READ_FILE_PERMISSION,
|
| - WRITE_FILE_GRANT = WRITE_FILE_PERMISSION,
|
| + READ_FILE_GRANT = READ_FILE_PERMISSION,
|
| + WRITE_FILE_GRANT = WRITE_FILE_PERMISSION,
|
|
|
| - CREATE_NEW_FILE_GRANT = CREATE_NEW_FILE_PERMISSION |
|
| - COPY_INTO_FILE_PERMISSION,
|
| + CREATE_NEW_FILE_GRANT =
|
| + CREATE_NEW_FILE_PERMISSION | COPY_INTO_FILE_PERMISSION,
|
|
|
| CREATE_READ_WRITE_FILE_GRANT = CREATE_NEW_FILE_PERMISSION |
|
| CREATE_OVERWRITE_FILE_PERMISSION |
|
| @@ -63,28 +63,27 @@ enum ChildProcessSecurityGrants {
|
| COPY_INTO_FILE_PERMISSION |
|
| DELETE_FILE_PERMISSION,
|
|
|
| - COPY_INTO_FILE_GRANT = COPY_INTO_FILE_PERMISSION,
|
| - DELETE_FILE_GRANT = DELETE_FILE_PERMISSION,
|
| + COPY_INTO_FILE_GRANT = COPY_INTO_FILE_PERMISSION,
|
| + DELETE_FILE_GRANT = DELETE_FILE_PERMISSION,
|
| };
|
|
|
| } // namespace
|
|
|
| // The SecurityState class is used to maintain per-child process security state
|
| // information.
|
| -class ChildProcessSecurityPolicyImpl::SecurityState {
|
| +class ChildProcessSecurityPolicyHelper::SecurityState {
|
| public:
|
| SecurityState()
|
| - : enabled_bindings_(0),
|
| - can_read_raw_cookies_(false),
|
| - can_send_midi_sysex_(false) { }
|
| + : enabled_bindings_(0),
|
| + can_read_raw_cookies_(false),
|
| + can_send_midi_sysex_(false) {}
|
|
|
| ~SecurityState() {
|
| scheme_policy_.clear();
|
| storage::IsolatedContext* isolated_context =
|
| storage::IsolatedContext::GetInstance();
|
| for (FileSystemMap::iterator iter = filesystem_permissions_.begin();
|
| - iter != filesystem_permissions_.end();
|
| - ++iter) {
|
| + iter != filesystem_permissions_.end(); ++iter) {
|
| isolated_context->RemoveReference(iter->first);
|
| }
|
| UMA_HISTOGRAM_COUNTS("ChildProcessSecurityPolicy.PerChildFilePermissions",
|
| @@ -92,14 +91,10 @@ class ChildProcessSecurityPolicyImpl::SecurityState {
|
| }
|
|
|
| // Grant permission to request URLs with the specified origin.
|
| - void GrantOrigin(const url::Origin& origin) {
|
| - origin_set_.insert(origin);
|
| - }
|
| + void GrantOrigin(const url::Origin& origin) { origin_set_.insert(origin); }
|
|
|
| // Grant permission to request URLs with the specified scheme.
|
| - void GrantScheme(const std::string& scheme) {
|
| - scheme_policy_[scheme] = true;
|
| - }
|
| + void GrantScheme(const std::string& scheme) { scheme_policy_[scheme] = true; }
|
|
|
| // Revoke permission to request URLs with the specified scheme.
|
| void RevokeScheme(const std::string& scheme) {
|
| @@ -115,7 +110,7 @@ class ChildProcessSecurityPolicyImpl::SecurityState {
|
| }
|
|
|
| // Grant navigation to a file but not the file:// scheme in general.
|
| - void GrantRequestOfSpecificFile(const base::FilePath &file) {
|
| + void GrantRequestOfSpecificFile(const base::FilePath& file) {
|
| request_file_set_.insert(file.StripTrailingSeparators());
|
| }
|
|
|
| @@ -159,21 +154,13 @@ class ChildProcessSecurityPolicyImpl::SecurityState {
|
| }
|
| #endif
|
|
|
| - void GrantBindings(int bindings) {
|
| - enabled_bindings_ |= bindings;
|
| - }
|
| + void GrantBindings(int bindings) { enabled_bindings_ |= bindings; }
|
|
|
| - void GrantReadRawCookies() {
|
| - can_read_raw_cookies_ = true;
|
| - }
|
| + void GrantReadRawCookies() { can_read_raw_cookies_ = true; }
|
|
|
| - void RevokeReadRawCookies() {
|
| - can_read_raw_cookies_ = false;
|
| - }
|
| + void RevokeReadRawCookies() { can_read_raw_cookies_ = false; }
|
|
|
| - void GrantPermissionForMidiSysEx() {
|
| - can_send_midi_sysex_ = true;
|
| - }
|
| + void GrantPermissionForMidiSysEx() { can_send_midi_sysex_ = true; }
|
|
|
| // Determine whether permission has been granted to commit |url|.
|
| bool CanCommitURL(const GURL& url) {
|
| @@ -238,21 +225,15 @@ class ChildProcessSecurityPolicyImpl::SecurityState {
|
| return origin_lock_ == site_gurl;
|
| }
|
|
|
| - void LockToOrigin(const GURL& gurl) {
|
| - origin_lock_ = gurl;
|
| - }
|
| + void LockToOrigin(const GURL& gurl) { origin_lock_ = gurl; }
|
|
|
| bool has_web_ui_bindings() const {
|
| return enabled_bindings_ & BINDINGS_POLICY_WEB_UI;
|
| }
|
|
|
| - bool can_read_raw_cookies() const {
|
| - return can_read_raw_cookies_;
|
| - }
|
| + bool can_read_raw_cookies() const { return can_read_raw_cookies_; }
|
|
|
| - bool can_send_midi_sysex() const {
|
| - return can_send_midi_sysex_;
|
| - }
|
| + bool can_send_midi_sysex() const { return can_send_midi_sysex_; }
|
|
|
| private:
|
| typedef std::map<std::string, bool> SchemeMap;
|
| @@ -294,7 +275,7 @@ class ChildProcessSecurityPolicyImpl::SecurityState {
|
| DISALLOW_COPY_AND_ASSIGN(SecurityState);
|
| };
|
|
|
| -ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() {
|
| +ChildProcessSecurityPolicyHelper::ChildProcessSecurityPolicyHelper() {
|
| // We know about these schemes and believe them to be safe.
|
| RegisterWebSafeScheme(url::kHttpScheme);
|
| RegisterWebSafeScheme(url::kHttpsScheme);
|
| @@ -310,7 +291,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() {
|
| RegisterPseudoScheme(kViewSourceScheme);
|
| }
|
|
|
| -ChildProcessSecurityPolicyImpl::~ChildProcessSecurityPolicyImpl() {
|
| +ChildProcessSecurityPolicyHelper::~ChildProcessSecurityPolicyHelper() {
|
| web_safe_schemes_.clear();
|
| pseudo_schemes_.clear();
|
| STLDeleteContainerPairSecondPointers(security_state_.begin(),
|
| @@ -320,26 +301,27 @@ ChildProcessSecurityPolicyImpl::~ChildProcessSecurityPolicyImpl() {
|
|
|
| // static
|
| ChildProcessSecurityPolicy* ChildProcessSecurityPolicy::GetInstance() {
|
| - return ChildProcessSecurityPolicyImpl::GetInstance();
|
| + return ChildProcessSecurityPolicyHelper::GetInstance();
|
| }
|
|
|
| -ChildProcessSecurityPolicyImpl* ChildProcessSecurityPolicyImpl::GetInstance() {
|
| - return base::Singleton<ChildProcessSecurityPolicyImpl>::get();
|
| +ChildProcessSecurityPolicyHelper*
|
| +ChildProcessSecurityPolicyHelper::GetInstance() {
|
| + return base::Singleton<ChildProcessSecurityPolicyHelper>::get();
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::Add(int child_id) {
|
| +void ChildProcessSecurityPolicyHelper::Add(int child_id) {
|
| base::AutoLock lock(lock_);
|
| AddChild(child_id);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::AddWorker(int child_id,
|
| - int main_render_process_id) {
|
| +void ChildProcessSecurityPolicyHelper::AddWorker(int child_id,
|
| + int main_render_process_id) {
|
| base::AutoLock lock(lock_);
|
| AddChild(child_id);
|
| worker_map_[child_id] = main_render_process_id;
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::Remove(int child_id) {
|
| +void ChildProcessSecurityPolicyHelper::Remove(int child_id) {
|
| base::AutoLock lock(lock_);
|
| SecurityStateMap::iterator it = security_state_.find(child_id);
|
| if (it == security_state_.end())
|
| @@ -350,7 +332,7 @@ void ChildProcessSecurityPolicyImpl::Remove(int child_id) {
|
| worker_map_.erase(child_id);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::RegisterWebSafeScheme(
|
| +void ChildProcessSecurityPolicyHelper::RegisterWebSafeScheme(
|
| const std::string& scheme) {
|
| base::AutoLock lock(lock_);
|
| DCHECK_EQ(0U, web_safe_schemes_.count(scheme)) << "Add schemes at most once.";
|
| @@ -360,14 +342,14 @@ void ChildProcessSecurityPolicyImpl::RegisterWebSafeScheme(
|
| web_safe_schemes_.insert(scheme);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::IsWebSafeScheme(
|
| +bool ChildProcessSecurityPolicyHelper::IsWebSafeScheme(
|
| const std::string& scheme) {
|
| base::AutoLock lock(lock_);
|
|
|
| return ContainsKey(web_safe_schemes_, scheme);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::RegisterPseudoScheme(
|
| +void ChildProcessSecurityPolicyHelper::RegisterPseudoScheme(
|
| const std::string& scheme) {
|
| base::AutoLock lock(lock_);
|
| DCHECK_EQ(0U, pseudo_schemes_.count(scheme)) << "Add schemes at most once.";
|
| @@ -377,16 +359,15 @@ void ChildProcessSecurityPolicyImpl::RegisterPseudoScheme(
|
| pseudo_schemes_.insert(scheme);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::IsPseudoScheme(
|
| +bool ChildProcessSecurityPolicyHelper::IsPseudoScheme(
|
| const std::string& scheme) {
|
| base::AutoLock lock(lock_);
|
|
|
| return ContainsKey(pseudo_schemes_, scheme);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantRequestURL(
|
| - int child_id, const GURL& url) {
|
| -
|
| +void ChildProcessSecurityPolicyHelper::GrantRequestURL(int child_id,
|
| + const GURL& url) {
|
| if (!url.is_valid())
|
| return; // Can't grant the capability to request invalid URLs.
|
|
|
| @@ -409,7 +390,7 @@ void ChildProcessSecurityPolicyImpl::GrantRequestURL(
|
| }
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantRequestSpecificFileURL(
|
| +void ChildProcessSecurityPolicyHelper::GrantRequestSpecificFileURL(
|
| int child_id,
|
| const GURL& url) {
|
| if (!url.SchemeIs(url::kFileScheme))
|
| @@ -429,28 +410,34 @@ void ChildProcessSecurityPolicyImpl::GrantRequestSpecificFileURL(
|
| }
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantReadFile(int child_id,
|
| - const base::FilePath& file) {
|
| +void ChildProcessSecurityPolicyHelper::GrantReadFile(
|
| + int child_id,
|
| + const base::FilePath& file) {
|
| GrantPermissionsForFile(child_id, file, READ_FILE_GRANT);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantCreateReadWriteFile(
|
| - int child_id, const base::FilePath& file) {
|
| +void ChildProcessSecurityPolicyHelper::GrantCreateReadWriteFile(
|
| + int child_id,
|
| + const base::FilePath& file) {
|
| GrantPermissionsForFile(child_id, file, CREATE_READ_WRITE_FILE_GRANT);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantCopyInto(int child_id,
|
| - const base::FilePath& dir) {
|
| +void ChildProcessSecurityPolicyHelper::GrantCopyInto(
|
| + int child_id,
|
| + const base::FilePath& dir) {
|
| GrantPermissionsForFile(child_id, dir, COPY_INTO_FILE_GRANT);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantDeleteFrom(
|
| - int child_id, const base::FilePath& dir) {
|
| +void ChildProcessSecurityPolicyHelper::GrantDeleteFrom(
|
| + int child_id,
|
| + const base::FilePath& dir) {
|
| GrantPermissionsForFile(child_id, dir, DELETE_FILE_GRANT);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantPermissionsForFile(
|
| - int child_id, const base::FilePath& file, int permissions) {
|
| +void ChildProcessSecurityPolicyHelper::GrantPermissionsForFile(
|
| + int child_id,
|
| + const base::FilePath& file,
|
| + int permissions) {
|
| base::AutoLock lock(lock_);
|
|
|
| SecurityStateMap::iterator state = security_state_.find(child_id);
|
| @@ -460,8 +447,9 @@ void ChildProcessSecurityPolicyImpl::GrantPermissionsForFile(
|
| state->second->GrantPermissionsForFile(file, permissions);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::RevokeAllPermissionsForFile(
|
| - int child_id, const base::FilePath& file) {
|
| +void ChildProcessSecurityPolicyHelper::RevokeAllPermissionsForFile(
|
| + int child_id,
|
| + const base::FilePath& file) {
|
| base::AutoLock lock(lock_);
|
|
|
| SecurityStateMap::iterator state = security_state_.find(child_id);
|
| @@ -471,38 +459,44 @@ void ChildProcessSecurityPolicyImpl::RevokeAllPermissionsForFile(
|
| state->second->RevokeAllPermissionsForFile(file);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantReadFileSystem(
|
| - int child_id, const std::string& filesystem_id) {
|
| +void ChildProcessSecurityPolicyHelper::GrantReadFileSystem(
|
| + int child_id,
|
| + const std::string& filesystem_id) {
|
| GrantPermissionsForFileSystem(child_id, filesystem_id, READ_FILE_GRANT);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantWriteFileSystem(
|
| - int child_id, const std::string& filesystem_id) {
|
| +void ChildProcessSecurityPolicyHelper::GrantWriteFileSystem(
|
| + int child_id,
|
| + const std::string& filesystem_id) {
|
| GrantPermissionsForFileSystem(child_id, filesystem_id, WRITE_FILE_GRANT);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantCreateFileForFileSystem(
|
| - int child_id, const std::string& filesystem_id) {
|
| +void ChildProcessSecurityPolicyHelper::GrantCreateFileForFileSystem(
|
| + int child_id,
|
| + const std::string& filesystem_id) {
|
| GrantPermissionsForFileSystem(child_id, filesystem_id, CREATE_NEW_FILE_GRANT);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantCreateReadWriteFileSystem(
|
| - int child_id, const std::string& filesystem_id) {
|
| - GrantPermissionsForFileSystem(
|
| - child_id, filesystem_id, CREATE_READ_WRITE_FILE_GRANT);
|
| +void ChildProcessSecurityPolicyHelper::GrantCreateReadWriteFileSystem(
|
| + int child_id,
|
| + const std::string& filesystem_id) {
|
| + GrantPermissionsForFileSystem(child_id, filesystem_id,
|
| + CREATE_READ_WRITE_FILE_GRANT);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantCopyIntoFileSystem(
|
| - int child_id, const std::string& filesystem_id) {
|
| +void ChildProcessSecurityPolicyHelper::GrantCopyIntoFileSystem(
|
| + int child_id,
|
| + const std::string& filesystem_id) {
|
| GrantPermissionsForFileSystem(child_id, filesystem_id, COPY_INTO_FILE_GRANT);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantDeleteFromFileSystem(
|
| - int child_id, const std::string& filesystem_id) {
|
| +void ChildProcessSecurityPolicyHelper::GrantDeleteFromFileSystem(
|
| + int child_id,
|
| + const std::string& filesystem_id) {
|
| GrantPermissionsForFileSystem(child_id, filesystem_id, DELETE_FILE_GRANT);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantSendMidiSysExMessage(int child_id) {
|
| +void ChildProcessSecurityPolicyHelper::GrantSendMidiSysExMessage(int child_id) {
|
| base::AutoLock lock(lock_);
|
|
|
| SecurityStateMap::iterator state = security_state_.find(child_id);
|
| @@ -512,8 +506,8 @@ void ChildProcessSecurityPolicyImpl::GrantSendMidiSysExMessage(int child_id) {
|
| state->second->GrantPermissionForMidiSysEx();
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantOrigin(int child_id,
|
| - const url::Origin& origin) {
|
| +void ChildProcessSecurityPolicyHelper::GrantOrigin(int child_id,
|
| + const url::Origin& origin) {
|
| base::AutoLock lock(lock_);
|
|
|
| SecurityStateMap::iterator state = security_state_.find(child_id);
|
| @@ -523,8 +517,8 @@ void ChildProcessSecurityPolicyImpl::GrantOrigin(int child_id,
|
| state->second->GrantOrigin(origin);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantScheme(int child_id,
|
| - const std::string& scheme) {
|
| +void ChildProcessSecurityPolicyHelper::GrantScheme(int child_id,
|
| + const std::string& scheme) {
|
| base::AutoLock lock(lock_);
|
|
|
| SecurityStateMap::iterator state = security_state_.find(child_id);
|
| @@ -534,7 +528,7 @@ void ChildProcessSecurityPolicyImpl::GrantScheme(int child_id,
|
| state->second->GrantScheme(scheme);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantWebUIBindings(int child_id) {
|
| +void ChildProcessSecurityPolicyHelper::GrantWebUIBindings(int child_id) {
|
| base::AutoLock lock(lock_);
|
|
|
| SecurityStateMap::iterator state = security_state_.find(child_id);
|
| @@ -550,7 +544,7 @@ void ChildProcessSecurityPolicyImpl::GrantWebUIBindings(int child_id) {
|
| state->second->GrantScheme(url::kFileScheme);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantReadRawCookies(int child_id) {
|
| +void ChildProcessSecurityPolicyHelper::GrantReadRawCookies(int child_id) {
|
| base::AutoLock lock(lock_);
|
|
|
| SecurityStateMap::iterator state = security_state_.find(child_id);
|
| @@ -560,7 +554,7 @@ void ChildProcessSecurityPolicyImpl::GrantReadRawCookies(int child_id) {
|
| state->second->GrantReadRawCookies();
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::RevokeReadRawCookies(int child_id) {
|
| +void ChildProcessSecurityPolicyHelper::RevokeReadRawCookies(int child_id) {
|
| base::AutoLock lock(lock_);
|
|
|
| SecurityStateMap::iterator state = security_state_.find(child_id);
|
| @@ -570,8 +564,8 @@ void ChildProcessSecurityPolicyImpl::RevokeReadRawCookies(int child_id) {
|
| state->second->RevokeReadRawCookies();
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanRequestURL(
|
| - int child_id, const GURL& url) {
|
| +bool ChildProcessSecurityPolicyHelper::CanRequestURL(int child_id,
|
| + const GURL& url) {
|
| if (!url.is_valid())
|
| return false; // Can't request invalid URLs.
|
|
|
| @@ -595,8 +589,8 @@ bool ChildProcessSecurityPolicyImpl::CanRequestURL(
|
| !net::URLRequest::IsHandledURL(url);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanCommitURL(int child_id,
|
| - const GURL& url) {
|
| +bool ChildProcessSecurityPolicyHelper::CanCommitURL(int child_id,
|
| + const GURL& url) {
|
| if (!url.is_valid())
|
| return false; // Can't commit invalid URLs.
|
|
|
| @@ -624,12 +618,12 @@ bool ChildProcessSecurityPolicyImpl::CanCommitURL(int child_id,
|
| }
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanReadFile(int child_id,
|
| - const base::FilePath& file) {
|
| +bool ChildProcessSecurityPolicyHelper::CanReadFile(int child_id,
|
| + const base::FilePath& file) {
|
| return HasPermissionsForFile(child_id, file, READ_FILE_GRANT);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanReadAllFiles(
|
| +bool ChildProcessSecurityPolicyHelper::CanReadAllFiles(
|
| int child_id,
|
| const std::vector<base::FilePath>& files) {
|
| return std::all_of(files.begin(), files.end(),
|
| @@ -638,37 +632,43 @@ bool ChildProcessSecurityPolicyImpl::CanReadAllFiles(
|
| });
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanCreateReadWriteFile(
|
| +bool ChildProcessSecurityPolicyHelper::CanCreateReadWriteFile(
|
| int child_id,
|
| const base::FilePath& file) {
|
| return HasPermissionsForFile(child_id, file, CREATE_READ_WRITE_FILE_GRANT);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanReadFileSystem(
|
| - int child_id, const std::string& filesystem_id) {
|
| +bool ChildProcessSecurityPolicyHelper::CanReadFileSystem(
|
| + int child_id,
|
| + const std::string& filesystem_id) {
|
| return HasPermissionsForFileSystem(child_id, filesystem_id, READ_FILE_GRANT);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanReadWriteFileSystem(
|
| - int child_id, const std::string& filesystem_id) {
|
| +bool ChildProcessSecurityPolicyHelper::CanReadWriteFileSystem(
|
| + int child_id,
|
| + const std::string& filesystem_id) {
|
| return HasPermissionsForFileSystem(child_id, filesystem_id,
|
| READ_FILE_GRANT | WRITE_FILE_GRANT);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanCopyIntoFileSystem(
|
| - int child_id, const std::string& filesystem_id) {
|
| +bool ChildProcessSecurityPolicyHelper::CanCopyIntoFileSystem(
|
| + int child_id,
|
| + const std::string& filesystem_id) {
|
| return HasPermissionsForFileSystem(child_id, filesystem_id,
|
| COPY_INTO_FILE_GRANT);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanDeleteFromFileSystem(
|
| - int child_id, const std::string& filesystem_id) {
|
| +bool ChildProcessSecurityPolicyHelper::CanDeleteFromFileSystem(
|
| + int child_id,
|
| + const std::string& filesystem_id) {
|
| return HasPermissionsForFileSystem(child_id, filesystem_id,
|
| DELETE_FILE_GRANT);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::HasPermissionsForFile(
|
| - int child_id, const base::FilePath& file, int permissions) {
|
| +bool ChildProcessSecurityPolicyHelper::HasPermissionsForFile(
|
| + int child_id,
|
| + const base::FilePath& file,
|
| + int permissions) {
|
| base::AutoLock lock(lock_);
|
| bool result = ChildProcessHasPermissionsForFile(child_id, file, permissions);
|
| if (!result) {
|
| @@ -676,15 +676,14 @@ bool ChildProcessSecurityPolicyImpl::HasPermissionsForFile(
|
| // let's check that its renderer process has access to that file instead.
|
| WorkerToMainProcessMap::iterator iter = worker_map_.find(child_id);
|
| if (iter != worker_map_.end() && iter->second != 0) {
|
| - result = ChildProcessHasPermissionsForFile(iter->second,
|
| - file,
|
| - permissions);
|
| + result =
|
| + ChildProcessHasPermissionsForFile(iter->second, file, permissions);
|
| }
|
| }
|
| return result;
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::HasPermissionsForFileSystemFile(
|
| +bool ChildProcessSecurityPolicyHelper::HasPermissionsForFileSystemFile(
|
| int child_id,
|
| const storage::FileSystemURL& url,
|
| int permissions) {
|
| @@ -704,8 +703,8 @@ bool ChildProcessSecurityPolicyImpl::HasPermissionsForFileSystemFile(
|
| // When Isolated filesystems is overlayed on top of another filesystem,
|
| // its per-filesystem permission overrides the underlying filesystem
|
| // permissions).
|
| - return HasPermissionsForFileSystem(
|
| - child_id, url.mount_filesystem_id(), permissions);
|
| + return HasPermissionsForFileSystem(child_id, url.mount_filesystem_id(),
|
| + permissions);
|
| }
|
|
|
| FileSystemPermissionPolicyMap::iterator found =
|
| @@ -727,44 +726,44 @@ bool ChildProcessSecurityPolicyImpl::HasPermissionsForFileSystemFile(
|
| return false;
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanReadFileSystemFile(
|
| +bool ChildProcessSecurityPolicyHelper::CanReadFileSystemFile(
|
| int child_id,
|
| const storage::FileSystemURL& url) {
|
| return HasPermissionsForFileSystemFile(child_id, url, READ_FILE_GRANT);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanWriteFileSystemFile(
|
| +bool ChildProcessSecurityPolicyHelper::CanWriteFileSystemFile(
|
| int child_id,
|
| const storage::FileSystemURL& url) {
|
| return HasPermissionsForFileSystemFile(child_id, url, WRITE_FILE_GRANT);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanCreateFileSystemFile(
|
| +bool ChildProcessSecurityPolicyHelper::CanCreateFileSystemFile(
|
| int child_id,
|
| const storage::FileSystemURL& url) {
|
| return HasPermissionsForFileSystemFile(child_id, url, CREATE_NEW_FILE_GRANT);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanCreateReadWriteFileSystemFile(
|
| +bool ChildProcessSecurityPolicyHelper::CanCreateReadWriteFileSystemFile(
|
| int child_id,
|
| const storage::FileSystemURL& url) {
|
| return HasPermissionsForFileSystemFile(child_id, url,
|
| CREATE_READ_WRITE_FILE_GRANT);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanCopyIntoFileSystemFile(
|
| +bool ChildProcessSecurityPolicyHelper::CanCopyIntoFileSystemFile(
|
| int child_id,
|
| const storage::FileSystemURL& url) {
|
| return HasPermissionsForFileSystemFile(child_id, url, COPY_INTO_FILE_GRANT);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanDeleteFileSystemFile(
|
| +bool ChildProcessSecurityPolicyHelper::CanDeleteFileSystemFile(
|
| int child_id,
|
| const storage::FileSystemURL& url) {
|
| return HasPermissionsForFileSystemFile(child_id, url, DELETE_FILE_GRANT);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::HasWebUIBindings(int child_id) {
|
| +bool ChildProcessSecurityPolicyHelper::HasWebUIBindings(int child_id) {
|
| base::AutoLock lock(lock_);
|
|
|
| SecurityStateMap::iterator state = security_state_.find(child_id);
|
| @@ -774,7 +773,7 @@ bool ChildProcessSecurityPolicyImpl::HasWebUIBindings(int child_id) {
|
| return state->second->has_web_ui_bindings();
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanReadRawCookies(int child_id) {
|
| +bool ChildProcessSecurityPolicyHelper::CanReadRawCookies(int child_id) {
|
| base::AutoLock lock(lock_);
|
|
|
| SecurityStateMap::iterator state = security_state_.find(child_id);
|
| @@ -784,7 +783,7 @@ bool ChildProcessSecurityPolicyImpl::CanReadRawCookies(int child_id) {
|
| return state->second->can_read_raw_cookies();
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::AddChild(int child_id) {
|
| +void ChildProcessSecurityPolicyHelper::AddChild(int child_id) {
|
| if (security_state_.count(child_id) != 0) {
|
| NOTREACHED() << "Add child process at most once.";
|
| return;
|
| @@ -793,16 +792,19 @@ void ChildProcessSecurityPolicyImpl::AddChild(int child_id) {
|
| security_state_[child_id] = new SecurityState();
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::ChildProcessHasPermissionsForFile(
|
| - int child_id, const base::FilePath& file, int permissions) {
|
| +bool ChildProcessSecurityPolicyHelper::ChildProcessHasPermissionsForFile(
|
| + int child_id,
|
| + const base::FilePath& file,
|
| + int permissions) {
|
| SecurityStateMap::iterator state = security_state_.find(child_id);
|
| if (state == security_state_.end())
|
| return false;
|
| return state->second->HasPermissionsForFile(file, permissions);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanAccessDataForOrigin(int child_id,
|
| - const GURL& gurl) {
|
| +bool ChildProcessSecurityPolicyHelper::CanAccessDataForOrigin(
|
| + int child_id,
|
| + const GURL& gurl) {
|
| base::AutoLock lock(lock_);
|
| SecurityStateMap::iterator state = security_state_.find(child_id);
|
| if (state == security_state_.end()) {
|
| @@ -813,8 +815,8 @@ bool ChildProcessSecurityPolicyImpl::CanAccessDataForOrigin(int child_id,
|
| return state->second->CanAccessDataForOrigin(gurl);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::LockToOrigin(int child_id,
|
| - const GURL& gurl) {
|
| +void ChildProcessSecurityPolicyHelper::LockToOrigin(int child_id,
|
| + const GURL& gurl) {
|
| // "gurl" can be currently empty in some cases, such as file://blah.
|
| DCHECK(SiteInstanceImpl::GetSiteForURL(NULL, gurl) == gurl);
|
| base::AutoLock lock(lock_);
|
| @@ -823,7 +825,7 @@ void ChildProcessSecurityPolicyImpl::LockToOrigin(int child_id,
|
| state->second->LockToOrigin(gurl);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::GrantPermissionsForFileSystem(
|
| +void ChildProcessSecurityPolicyHelper::GrantPermissionsForFileSystem(
|
| int child_id,
|
| const std::string& filesystem_id,
|
| int permission) {
|
| @@ -835,7 +837,7 @@ void ChildProcessSecurityPolicyImpl::GrantPermissionsForFileSystem(
|
| state->second->GrantPermissionsForFileSystem(filesystem_id, permission);
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::HasPermissionsForFileSystem(
|
| +bool ChildProcessSecurityPolicyHelper::HasPermissionsForFileSystem(
|
| int child_id,
|
| const std::string& filesystem_id,
|
| int permission) {
|
| @@ -847,14 +849,14 @@ bool ChildProcessSecurityPolicyImpl::HasPermissionsForFileSystem(
|
| return state->second->HasPermissionsForFileSystem(filesystem_id, permission);
|
| }
|
|
|
| -void ChildProcessSecurityPolicyImpl::RegisterFileSystemPermissionPolicy(
|
| +void ChildProcessSecurityPolicyHelper::RegisterFileSystemPermissionPolicy(
|
| storage::FileSystemType type,
|
| int policy) {
|
| base::AutoLock lock(lock_);
|
| file_system_policy_map_[type] = policy;
|
| }
|
|
|
| -bool ChildProcessSecurityPolicyImpl::CanSendMidiSysExMessage(int child_id) {
|
| +bool ChildProcessSecurityPolicyHelper::CanSendMidiSysExMessage(int child_id) {
|
| base::AutoLock lock(lock_);
|
|
|
| SecurityStateMap::iterator state = security_state_.find(child_id);
|
|
|