| 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/renderer_host/render_view_host_impl.h" | 5 #include "content/browser/renderer_host/render_view_host_impl.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 505 const int renderer_id = GetProcess()->GetID(); | 505 const int renderer_id = GetProcess()->GetID(); |
| 506 ChildProcessSecurityPolicyImpl* policy = | 506 ChildProcessSecurityPolicyImpl* policy = |
| 507 ChildProcessSecurityPolicyImpl::GetInstance(); | 507 ChildProcessSecurityPolicyImpl::GetInstance(); |
| 508 | 508 |
| 509 // The URL could have been cobbled together from any highlighted text string, | 509 // The URL could have been cobbled together from any highlighted text string, |
| 510 // and can't be interpreted as a capability. | 510 // and can't be interpreted as a capability. |
| 511 WebDropData filtered_data(drop_data); | 511 WebDropData filtered_data(drop_data); |
| 512 FilterURL(policy, renderer_id, true, &filtered_data.url); | 512 FilterURL(policy, renderer_id, true, &filtered_data.url); |
| 513 | 513 |
| 514 // The filenames vector, on the other hand, does represent a capability to | 514 // The filenames vector, on the other hand, does represent a capability to |
| 515 // read the given files (but not to navigate to any file:// scheme URL), | 515 // access the given files. |
| 516 std::set<FilePath> filesets; | 516 std::set<FilePath> filesets; |
| 517 for (std::vector<WebDropData::FileInfo>::const_iterator iter( | 517 for (std::vector<WebDropData::FileInfo>::const_iterator iter( |
| 518 filtered_data.filenames.begin()); | 518 filtered_data.filenames.begin()); |
| 519 iter != filtered_data.filenames.end(); ++iter) { | 519 iter != filtered_data.filenames.end(); ++iter) { |
| 520 FilePath path = FilePath::FromUTF8Unsafe(UTF16ToUTF8(iter->path)); | 520 FilePath path = FilePath::FromUTF8Unsafe(UTF16ToUTF8(iter->path)); |
| 521 policy->GrantRequestURL(renderer_id, net::FilePathToFileURL(path)); |
| 521 | 522 |
| 522 // If the renderer already has permission to read these paths, we don't need | 523 // If the renderer already has permission to read these paths, we don't need |
| 523 // to re-grant them. This prevents problems with DnD for files in the CrOS | 524 // to re-grant them. This prevents problems with DnD for files in the CrOS |
| 524 // file manager--the file manager already had read/write access to those | 525 // file manager--the file manager already had read/write access to those |
| 525 // directories, but dragging a file would cause the read/write access to be | 526 // directories, but dragging a file would cause the read/write access to be |
| 526 // overwritten with read-only access, making them impossible to delete or | 527 // overwritten with read-only access, making them impossible to delete or |
| 527 // rename until the renderer was killed. | 528 // rename until the renderer was killed. |
| 528 if (!policy->CanReadFile(renderer_id, path)) { | 529 if (!policy->CanReadFile(renderer_id, path)) { |
| 529 policy->GrantReadFile(renderer_id, path); | 530 policy->GrantReadFile(renderer_id, path); |
| 530 // Allow dragged directories to be enumerated by the child process. | 531 // Allow dragged directories to be enumerated by the child process. |
| (...skipping 1298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1829 // can cause navigations to be ignored in OnMsgNavigate. | 1830 // can cause navigations to be ignored in OnMsgNavigate. |
| 1830 is_waiting_for_beforeunload_ack_ = false; | 1831 is_waiting_for_beforeunload_ack_ = false; |
| 1831 is_waiting_for_unload_ack_ = false; | 1832 is_waiting_for_unload_ack_ = false; |
| 1832 } | 1833 } |
| 1833 | 1834 |
| 1834 void RenderViewHostImpl::ClearPowerSaveBlockers() { | 1835 void RenderViewHostImpl::ClearPowerSaveBlockers() { |
| 1835 STLDeleteValues(&power_save_blockers_); | 1836 STLDeleteValues(&power_save_blockers_); |
| 1836 } | 1837 } |
| 1837 | 1838 |
| 1838 } // namespace content | 1839 } // namespace content |
| OLD | NEW |