| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/browser/renderer_host/resource_message_filter.h" | 5 #include "chrome/browser/renderer_host/resource_message_filter.h" |
| 6 | 6 |
| 7 #include "app/clipboard/clipboard.h" | 7 #include "app/clipboard/clipboard.h" |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #if defined(OS_POSIX) | 10 #if defined(OS_POSIX) |
| (...skipping 1431 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1442 net::HttpNetworkLayer::EnableSpdy("npn,force-alt-protocols"); | 1442 net::HttpNetworkLayer::EnableSpdy("npn,force-alt-protocols"); |
| 1443 } else { | 1443 } else { |
| 1444 net::HttpNetworkLayer::EnableSpdy("npn-http"); | 1444 net::HttpNetworkLayer::EnableSpdy("npn-http"); |
| 1445 } | 1445 } |
| 1446 } | 1446 } |
| 1447 | 1447 |
| 1448 void ResourceMessageFilter::OnGetFileSize(const FilePath& path, | 1448 void ResourceMessageFilter::OnGetFileSize(const FilePath& path, |
| 1449 IPC::Message* reply_msg) { | 1449 IPC::Message* reply_msg) { |
| 1450 // Get file size only when the child process has been granted permission to | 1450 // Get file size only when the child process has been granted permission to |
| 1451 // upload the file. | 1451 // upload the file. |
| 1452 if (!ChildProcessSecurityPolicy::GetInstance()->CanUploadFile(id(), path)) { | 1452 if (!ChildProcessSecurityPolicy::GetInstance()->CanReadFile(id(), path)) { |
| 1453 ViewHostMsg_GetFileSize::WriteReplyParams( | 1453 ViewHostMsg_GetFileSize::WriteReplyParams( |
| 1454 reply_msg, static_cast<int64>(-1)); | 1454 reply_msg, static_cast<int64>(-1)); |
| 1455 Send(reply_msg); | 1455 Send(reply_msg); |
| 1456 return; | 1456 return; |
| 1457 } | 1457 } |
| 1458 | 1458 |
| 1459 // Getting file size could take long time if it lives on a network share, | 1459 // Getting file size could take long time if it lives on a network share, |
| 1460 // so run it on FILE thread. | 1460 // so run it on FILE thread. |
| 1461 ChromeThread::PostTask( | 1461 ChromeThread::PostTask( |
| 1462 ChromeThread::FILE, FROM_HERE, | 1462 ChromeThread::FILE, FROM_HERE, |
| 1463 NewRunnableMethod( | 1463 NewRunnableMethod( |
| 1464 this, &ResourceMessageFilter::OnGetFileInfoOnFileThread, path, | 1464 this, &ResourceMessageFilter::OnGetFileInfoOnFileThread, path, |
| 1465 reply_msg, &WriteFileSize)); | 1465 reply_msg, &WriteFileSize)); |
| 1466 } | 1466 } |
| 1467 | 1467 |
| 1468 void ResourceMessageFilter::OnGetFileModificationTime(const FilePath& path, | 1468 void ResourceMessageFilter::OnGetFileModificationTime(const FilePath& path, |
| 1469 IPC::Message* reply_msg) { | 1469 IPC::Message* reply_msg) { |
| 1470 // Get file modification time only when the child process has been granted | 1470 // Get file modification time only when the child process has been granted |
| 1471 // permission to upload the file. | 1471 // permission to upload the file. |
| 1472 if (!ChildProcessSecurityPolicy::GetInstance()->CanUploadFile(id(), path)) { | 1472 if (!ChildProcessSecurityPolicy::GetInstance()->CanReadFile(id(), path)) { |
| 1473 ViewHostMsg_GetFileModificationTime::WriteReplyParams(reply_msg, | 1473 ViewHostMsg_GetFileModificationTime::WriteReplyParams(reply_msg, |
| 1474 base::Time()); | 1474 base::Time()); |
| 1475 Send(reply_msg); | 1475 Send(reply_msg); |
| 1476 return; | 1476 return; |
| 1477 } | 1477 } |
| 1478 | 1478 |
| 1479 // Getting file modification time could take a long time if it lives on a | 1479 // Getting file modification time could take a long time if it lives on a |
| 1480 // network share, so run it on the FILE thread. | 1480 // network share, so run it on the FILE thread. |
| 1481 ChromeThread::PostTask( | 1481 ChromeThread::PostTask( |
| 1482 ChromeThread::FILE, FROM_HERE, | 1482 ChromeThread::FILE, FROM_HERE, |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1501 ChromeThread::IO, FROM_HERE, | 1501 ChromeThread::IO, FROM_HERE, |
| 1502 NewRunnableMethod(this, &ResourceMessageFilter::Send, reply_msg)); | 1502 NewRunnableMethod(this, &ResourceMessageFilter::Send, reply_msg)); |
| 1503 } | 1503 } |
| 1504 | 1504 |
| 1505 void ResourceMessageFilter::OnOpenFile(const FilePath& path, | 1505 void ResourceMessageFilter::OnOpenFile(const FilePath& path, |
| 1506 int mode, | 1506 int mode, |
| 1507 IPC::Message* reply_msg) { | 1507 IPC::Message* reply_msg) { |
| 1508 // Open the file only when the child process has been granted permission to | 1508 // Open the file only when the child process has been granted permission to |
| 1509 // upload the file. | 1509 // upload the file. |
| 1510 // TODO(jianli): Do we need separate permission to control opening the file? | 1510 // TODO(jianli): Do we need separate permission to control opening the file? |
| 1511 if (!ChildProcessSecurityPolicy::GetInstance()->CanUploadFile(id(), path)) { | 1511 if (!ChildProcessSecurityPolicy::GetInstance()->CanReadFile(id(), path)) { |
| 1512 ViewHostMsg_OpenFile::WriteReplyParams( | 1512 ViewHostMsg_OpenFile::WriteReplyParams( |
| 1513 reply_msg, | 1513 reply_msg, |
| 1514 #if defined(OS_WIN) | 1514 #if defined(OS_WIN) |
| 1515 base::kInvalidPlatformFileValue | 1515 base::kInvalidPlatformFileValue |
| 1516 #elif defined(OS_POSIX) | 1516 #elif defined(OS_POSIX) |
| 1517 base::FileDescriptor(base::kInvalidPlatformFileValue, true) | 1517 base::FileDescriptor(base::kInvalidPlatformFileValue, true) |
| 1518 #endif | 1518 #endif |
| 1519 ); | 1519 ); |
| 1520 Send(reply_msg); | 1520 Send(reply_msg); |
| 1521 return; | 1521 return; |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1695 ChromeThread::IO, FROM_HERE, | 1695 ChromeThread::IO, FROM_HERE, |
| 1696 NewRunnableMethod(this, &ResourceMessageFilter::Send, reply_msg)); | 1696 NewRunnableMethod(this, &ResourceMessageFilter::Send, reply_msg)); |
| 1697 } | 1697 } |
| 1698 | 1698 |
| 1699 void ResourceMessageFilter::OnAsyncOpenFile(const IPC::Message& msg, | 1699 void ResourceMessageFilter::OnAsyncOpenFile(const IPC::Message& msg, |
| 1700 const FilePath& path, | 1700 const FilePath& path, |
| 1701 int flags, | 1701 int flags, |
| 1702 int message_id) { | 1702 int message_id) { |
| 1703 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO)); | 1703 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO)); |
| 1704 | 1704 |
| 1705 if (!ChildProcessSecurityPolicy::GetInstance()->CanUploadFile(id(), path)) { | 1705 if (!ChildProcessSecurityPolicy::GetInstance()->CanReadFile(id(), path)) { |
| 1706 IPC::Message* reply = new ViewMsg_AsyncOpenFile_ACK( | 1706 IPC::Message* reply = new ViewMsg_AsyncOpenFile_ACK( |
| 1707 msg.routing_id(), base::PLATFORM_FILE_ERROR_ACCESS_DENIED, | 1707 msg.routing_id(), base::PLATFORM_FILE_ERROR_ACCESS_DENIED, |
| 1708 IPC::InvalidPlatformFileForTransit(), message_id); | 1708 IPC::InvalidPlatformFileForTransit(), message_id); |
| 1709 Send(reply); | 1709 Send(reply); |
| 1710 return; | 1710 return; |
| 1711 } | 1711 } |
| 1712 | 1712 |
| 1713 // TODO(dumi): update this check once we have a security attribute | 1713 // TODO(dumi): update this check once we have a security attribute |
| 1714 // that allows renderers to modify files. | 1714 // that allows renderers to modify files. |
| 1715 int allowed_flags = | 1715 int allowed_flags = |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1832 | 1832 |
| 1833 ViewHostMsg_GetRawCookies::WriteReplyParams(reply_msg_, cookies); | 1833 ViewHostMsg_GetRawCookies::WriteReplyParams(reply_msg_, cookies); |
| 1834 filter_->Send(reply_msg_); | 1834 filter_->Send(reply_msg_); |
| 1835 delete this; | 1835 delete this; |
| 1836 } | 1836 } |
| 1837 } | 1837 } |
| 1838 | 1838 |
| 1839 void GetCookiesCompletion::set_cookie_store(CookieStore* cookie_store) { | 1839 void GetCookiesCompletion::set_cookie_store(CookieStore* cookie_store) { |
| 1840 cookie_store_ = cookie_store; | 1840 cookie_store_ = cookie_store; |
| 1841 } | 1841 } |
| OLD | NEW |