| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/child_process_security_policy_impl.h" | 5 #include "content/browser/child_process_security_policy_impl.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 471 void ChildProcessSecurityPolicyImpl::GrantWriteFileSystem( | 471 void ChildProcessSecurityPolicyImpl::GrantWriteFileSystem( |
| 472 int child_id, const std::string& filesystem_id) { | 472 int child_id, const std::string& filesystem_id) { |
| 473 GrantPermissionsForFileSystem(child_id, filesystem_id, WRITE_FILE_GRANT); | 473 GrantPermissionsForFileSystem(child_id, filesystem_id, WRITE_FILE_GRANT); |
| 474 } | 474 } |
| 475 | 475 |
| 476 void ChildProcessSecurityPolicyImpl::GrantCreateFileForFileSystem( | 476 void ChildProcessSecurityPolicyImpl::GrantCreateFileForFileSystem( |
| 477 int child_id, const std::string& filesystem_id) { | 477 int child_id, const std::string& filesystem_id) { |
| 478 GrantPermissionsForFileSystem(child_id, filesystem_id, CREATE_NEW_FILE_GRANT); | 478 GrantPermissionsForFileSystem(child_id, filesystem_id, CREATE_NEW_FILE_GRANT); |
| 479 } | 479 } |
| 480 | 480 |
| 481 void ChildProcessSecurityPolicyImpl::GrantCreateReadWriteFileSystem( |
| 482 int child_id, const std::string& filesystem_id) { |
| 483 GrantPermissionsForFileSystem( |
| 484 child_id, filesystem_id, CREATE_READ_WRITE_FILE_GRANT); |
| 485 } |
| 486 |
| 481 void ChildProcessSecurityPolicyImpl::GrantCopyIntoFileSystem( | 487 void ChildProcessSecurityPolicyImpl::GrantCopyIntoFileSystem( |
| 482 int child_id, const std::string& filesystem_id) { | 488 int child_id, const std::string& filesystem_id) { |
| 483 GrantPermissionsForFileSystem(child_id, filesystem_id, COPY_INTO_FILE_GRANT); | 489 GrantPermissionsForFileSystem(child_id, filesystem_id, COPY_INTO_FILE_GRANT); |
| 484 } | 490 } |
| 485 | 491 |
| 486 void ChildProcessSecurityPolicyImpl::GrantDeleteFromFileSystem( | 492 void ChildProcessSecurityPolicyImpl::GrantDeleteFromFileSystem( |
| 487 int child_id, const std::string& filesystem_id) { | 493 int child_id, const std::string& filesystem_id) { |
| 488 GrantPermissionsForFileSystem(child_id, filesystem_id, DELETE_FILE_GRANT); | 494 GrantPermissionsForFileSystem(child_id, filesystem_id, DELETE_FILE_GRANT); |
| 489 } | 495 } |
| 490 | 496 |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 636 return HasPermissionsForFileSystem(child_id, filesystem_id, | 642 return HasPermissionsForFileSystem(child_id, filesystem_id, |
| 637 COPY_INTO_FILE_GRANT); | 643 COPY_INTO_FILE_GRANT); |
| 638 } | 644 } |
| 639 | 645 |
| 640 bool ChildProcessSecurityPolicyImpl::CanDeleteFromFileSystem( | 646 bool ChildProcessSecurityPolicyImpl::CanDeleteFromFileSystem( |
| 641 int child_id, const std::string& filesystem_id) { | 647 int child_id, const std::string& filesystem_id) { |
| 642 return HasPermissionsForFileSystem(child_id, filesystem_id, | 648 return HasPermissionsForFileSystem(child_id, filesystem_id, |
| 643 DELETE_FILE_GRANT); | 649 DELETE_FILE_GRANT); |
| 644 } | 650 } |
| 645 | 651 |
| 646 void ChildProcessSecurityPolicyImpl::GrantCreateReadWriteFileSystem( | |
| 647 int child_id, const std::string& filesystem_id) { | |
| 648 GrantPermissionsForFileSystem( | |
| 649 child_id, filesystem_id, CREATE_READ_WRITE_FILE_GRANT); | |
| 650 } | |
| 651 | |
| 652 bool ChildProcessSecurityPolicyImpl::HasPermissionsForFile( | 652 bool ChildProcessSecurityPolicyImpl::HasPermissionsForFile( |
| 653 int child_id, const base::FilePath& file, int permissions) { | 653 int child_id, const base::FilePath& file, int permissions) { |
| 654 base::AutoLock lock(lock_); | 654 base::AutoLock lock(lock_); |
| 655 bool result = ChildProcessHasPermissionsForFile(child_id, file, permissions); | 655 bool result = ChildProcessHasPermissionsForFile(child_id, file, permissions); |
| 656 if (!result) { | 656 if (!result) { |
| 657 // If this is a worker thread that has no access to a given file, | 657 // If this is a worker thread that has no access to a given file, |
| 658 // let's check that its renderer process has access to that file instead. | 658 // let's check that its renderer process has access to that file instead. |
| 659 WorkerToMainProcessMap::iterator iter = worker_map_.find(child_id); | 659 WorkerToMainProcessMap::iterator iter = worker_map_.find(child_id); |
| 660 if (iter != worker_map_.end() && iter->second != 0) { | 660 if (iter != worker_map_.end() && iter->second != 0) { |
| 661 result = ChildProcessHasPermissionsForFile(iter->second, | 661 result = ChildProcessHasPermissionsForFile(iter->second, |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 855 base::AutoLock lock(lock_); | 855 base::AutoLock lock(lock_); |
| 856 | 856 |
| 857 SecurityStateMap::iterator state = security_state_.find(child_id); | 857 SecurityStateMap::iterator state = security_state_.find(child_id); |
| 858 if (state == security_state_.end()) | 858 if (state == security_state_.end()) |
| 859 return false; | 859 return false; |
| 860 | 860 |
| 861 return state->second->can_send_midi_sysex(); | 861 return state->second->can_send_midi_sysex(); |
| 862 } | 862 } |
| 863 | 863 |
| 864 } // namespace content | 864 } // namespace content |
| OLD | NEW |