| 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 "chrome/browser/chromeos/drive/download_handler.h" | 5 #include "chrome/browser/chromeos/drive/download_handler.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 9 #include "base/supports_user_data.h" | 9 #include "base/supports_user_data.h" |
| 10 #include "chrome/browser/chromeos/drive/drive.pb.h" | 10 #include "chrome/browser/chromeos/drive/drive.pb.h" |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 SetDownloadParams(drive_path, download); | 140 SetDownloadParams(drive_path, download); |
| 141 | 141 |
| 142 if (util::IsUnderDriveMountPoint(drive_path)) { | 142 if (util::IsUnderDriveMountPoint(drive_path)) { |
| 143 // Can't access drive if the directory does not exist on Drive. | 143 // Can't access drive if the directory does not exist on Drive. |
| 144 // We set off a chain of callbacks as follows: | 144 // We set off a chain of callbacks as follows: |
| 145 // FileSystem::GetResourceEntryByPath | 145 // FileSystem::GetResourceEntryByPath |
| 146 // OnEntryFound calls FileSystem::CreateDirectory (if necessary) | 146 // OnEntryFound calls FileSystem::CreateDirectory (if necessary) |
| 147 // OnCreateDirectory calls SubstituteDriveDownloadPathInternal | 147 // OnCreateDirectory calls SubstituteDriveDownloadPathInternal |
| 148 const base::FilePath drive_dir_path = | 148 const base::FilePath drive_dir_path = |
| 149 util::ExtractDrivePath(drive_path.DirName()); | 149 util::ExtractDrivePath(drive_path.DirName()); |
| 150 // Ensure the directory exists. This also forces FileSystem to | 150 // Check if the directory exists, and create it if the directory does not |
| 151 // initialize DriveRootDirectory. | 151 // exist. |
| 152 file_system_->GetResourceEntryByPath( | 152 file_system_->GetResourceEntryByPath( |
| 153 drive_dir_path, | 153 drive_dir_path, |
| 154 base::Bind(&DownloadHandler::OnEntryFound, | 154 base::Bind(&DownloadHandler::OnEntryFound, |
| 155 weak_ptr_factory_.GetWeakPtr(), | 155 weak_ptr_factory_.GetWeakPtr(), |
| 156 drive_dir_path, | 156 drive_dir_path, |
| 157 callback)); | 157 callback)); |
| 158 } else { | 158 } else { |
| 159 callback.Run(drive_path); | 159 callback.Run(drive_path); |
| 160 } | 160 } |
| 161 } | 161 } |
| (...skipping 19 matching lines...) Expand all Loading... |
| 181 const DownloadItem* download) { | 181 const DownloadItem* download) { |
| 182 const DriveUserData* data = GetDriveUserData(download); | 182 const DriveUserData* data = GetDriveUserData(download); |
| 183 // If data is NULL, we've somehow lost the drive path selected by the file | 183 // If data is NULL, we've somehow lost the drive path selected by the file |
| 184 // picker. | 184 // picker. |
| 185 DCHECK(data); | 185 DCHECK(data); |
| 186 return data ? data->file_path() : base::FilePath(); | 186 return data ? data->file_path() : base::FilePath(); |
| 187 } | 187 } |
| 188 | 188 |
| 189 bool DownloadHandler::IsDriveDownload(const DownloadItem* download) { | 189 bool DownloadHandler::IsDriveDownload(const DownloadItem* download) { |
| 190 // We use the existence of the DriveUserData object in download as a | 190 // We use the existence of the DriveUserData object in download as a |
| 191 // signal that this is a DriveDownload. | 191 // signal that this is a download to Drive. |
| 192 return GetDriveUserData(download) != NULL; | 192 return GetDriveUserData(download) != NULL; |
| 193 } | 193 } |
| 194 | 194 |
| 195 void DownloadHandler::CheckForFileExistence( | 195 void DownloadHandler::CheckForFileExistence( |
| 196 const DownloadItem* download, | 196 const DownloadItem* download, |
| 197 const content::CheckForFileExistenceCallback& callback) { | 197 const content::CheckForFileExistenceCallback& callback) { |
| 198 file_system_->GetResourceEntryByPath( | 198 file_system_->GetResourceEntryByPath( |
| 199 util::ExtractDrivePath(GetTargetPath(download)), | 199 util::ExtractDrivePath(GetTargetPath(download)), |
| 200 base::Bind(&ContinueCheckingForFileExistence, | 200 base::Bind(&ContinueCheckingForFileExistence, |
| 201 callback)); | 201 callback)); |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 } | 296 } |
| 297 | 297 |
| 298 void DownloadHandler::UploadDownloadItem(DownloadItem* download) { | 298 void DownloadHandler::UploadDownloadItem(DownloadItem* download) { |
| 299 DCHECK(download->IsComplete()); | 299 DCHECK(download->IsComplete()); |
| 300 file_write_helper_->PrepareWritableFileAndRun( | 300 file_write_helper_->PrepareWritableFileAndRun( |
| 301 util::ExtractDrivePath(GetTargetPath(download)), | 301 util::ExtractDrivePath(GetTargetPath(download)), |
| 302 base::Bind(&MoveDownloadedFile, download->GetTargetFilePath())); | 302 base::Bind(&MoveDownloadedFile, download->GetTargetFilePath())); |
| 303 } | 303 } |
| 304 | 304 |
| 305 } // namespace drive | 305 } // namespace drive |
| OLD | NEW |