| Index: chrome/browser/chromeos/fileapi/external_file_url_request_job.cc
|
| diff --git a/chrome/browser/chromeos/drive/drive_url_request_job.cc b/chrome/browser/chromeos/fileapi/external_file_url_request_job.cc
|
| similarity index 79%
|
| rename from chrome/browser/chromeos/drive/drive_url_request_job.cc
|
| rename to chrome/browser/chromeos/fileapi/external_file_url_request_job.cc
|
| index be8e7ebb59bdcb69179c7a4d24e9efbc408dc7cc..ff54aff2d083e46c3d8922bda72a1a8df7e561b6 100644
|
| --- a/chrome/browser/chromeos/drive/drive_url_request_job.cc
|
| +++ b/chrome/browser/chromeos/fileapi/external_file_url_request_job.cc
|
| @@ -1,8 +1,8 @@
|
| -// Copyright 2013 The Chromium Authors. All rights reserved.
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "chrome/browser/chromeos/drive/drive_url_request_job.h"
|
| +#include "chrome/browser/chromeos/fileapi/external_file_url_request_job.h"
|
|
|
| #include <algorithm>
|
| #include <vector>
|
| @@ -12,6 +12,7 @@
|
| #include "base/memory/ref_counted.h"
|
| #include "chrome/browser/browser_process.h"
|
| #include "chrome/browser/chromeos/drive/file_system_util.h"
|
| +#include "chrome/browser/chromeos/fileapi/external_file_url_util.h"
|
| #include "chrome/browser/extensions/api/file_handlers/mime_util.h"
|
| #include "chrome/browser/profiles/profile_manager.h"
|
| #include "chrome/common/url_constants.h"
|
| @@ -30,7 +31,7 @@
|
|
|
| using content::BrowserThread;
|
|
|
| -namespace drive {
|
| +namespace chromeos {
|
| namespace {
|
|
|
| const char kMimeTypeForRFC822[] = "message/rfc822";
|
| @@ -40,11 +41,13 @@ const char kMimeTypeForMHTML[] = "multipart/related";
|
| bool IsValidURL(const storage::FileSystemURL& url) {
|
| switch (url.type()) {
|
| case storage::kFileSystemTypeDrive: {
|
| - const base::FilePath my_drive_path = util::GetDriveMyDriveRootPath();
|
| + const base::FilePath my_drive_path =
|
| + drive::util::GetDriveMyDriveRootPath();
|
| const base::FilePath drive_other_path =
|
| - util::GetDriveGrandRootPath().Append(util::kDriveOtherDirName);
|
| + drive::util::GetDriveGrandRootPath().Append(
|
| + drive::util::kDriveOtherDirName);
|
| const base::FilePath url_drive_path =
|
| - util::ExtractDrivePathFromFileSystemUrl(url);
|
| + drive::util::ExtractDrivePathFromFileSystemUrl(url);
|
| return my_drive_path == url_drive_path ||
|
| my_drive_path.IsParent(url_drive_path) ||
|
| drive_other_path.IsParent(url_drive_path);
|
| @@ -65,7 +68,7 @@ class URLHelper {
|
|
|
| URLHelper(void* profile_id,
|
| const GURL& url,
|
| - const DriveURLRequestJob::HelperCallback& callback)
|
| + const ExternalFileURLRequestJob::HelperCallback& callback)
|
| : profile_id_(profile_id), url_(url), callback_(callback) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| Lifetime lifetime(this);
|
| @@ -95,7 +98,7 @@ class URLHelper {
|
| // Obtain the absolute path in the file system.
|
| base::FilePath path = drive::util::GetDriveMountPointPath(profile);
|
| drive::util::GetDriveGrandRootPath().AppendRelativePath(
|
| - util::DriveURLToFilePath(url_), &path);
|
| + ExternalFileURLToFilePath(url_), &path);
|
|
|
| storage::ExternalFileSystemBackend* const backend =
|
| context->external_backend();
|
| @@ -110,9 +113,10 @@ class URLHelper {
|
|
|
| // Obtain the file system URL.
|
| // TODO(hirono): After removing MHTML support, stop to use the special
|
| +
|
| // drive: scheme and use filesystem: URL directly. crbug.com/415455
|
| file_system_url_ = context->CreateCrackedFileSystemURL(
|
| - GURL(std::string(chrome::kDriveScheme) + ":"),
|
| + GURL(std::string(chrome::kExternalFileScheme) + ":"),
|
| storage::kFileSystemTypeExternal,
|
| virtual_path);
|
| if (!IsValidURL(file_system_url_)) {
|
| @@ -155,7 +159,7 @@ class URLHelper {
|
|
|
| void* const profile_id_;
|
| const GURL url_;
|
| - const DriveURLRequestJob::HelperCallback callback_;
|
| + const ExternalFileURLRequestJob::HelperCallback callback_;
|
| scoped_refptr<storage::FileSystemContext> file_system_context_;
|
| storage::FileSystemURL file_system_url_;
|
| std::string mime_type_;
|
| @@ -165,16 +169,17 @@ class URLHelper {
|
|
|
| } // namespace
|
|
|
| -DriveURLRequestJob::DriveURLRequestJob(void* profile_id,
|
| - net::URLRequest* request,
|
| - net::NetworkDelegate* network_delegate)
|
| +ExternalFileURLRequestJob::ExternalFileURLRequestJob(
|
| + void* profile_id,
|
| + net::URLRequest* request,
|
| + net::NetworkDelegate* network_delegate)
|
| : net::URLRequestJob(request, network_delegate),
|
| profile_id_(profile_id),
|
| remaining_bytes_(0),
|
| weak_ptr_factory_(this) {
|
| }
|
|
|
| -void DriveURLRequestJob::SetExtraRequestHeaders(
|
| +void ExternalFileURLRequestJob::SetExtraRequestHeaders(
|
| const net::HttpRequestHeaders& headers) {
|
| std::string range_header;
|
| if (headers.GetHeader(net::HttpRequestHeaders::kRange, &range_header)) {
|
| @@ -185,29 +190,28 @@ void DriveURLRequestJob::SetExtraRequestHeaders(
|
| byte_range_ = ranges[0];
|
| } else {
|
| // Failed to parse Range: header, so notify the error.
|
| - NotifyDone(
|
| - net::URLRequestStatus(net::URLRequestStatus::FAILED,
|
| - net::ERR_REQUEST_RANGE_NOT_SATISFIABLE));
|
| + NotifyDone(net::URLRequestStatus(net::URLRequestStatus::FAILED,
|
| + net::ERR_REQUEST_RANGE_NOT_SATISFIABLE));
|
| }
|
| }
|
| }
|
|
|
| -void DriveURLRequestJob::Start() {
|
| +void ExternalFileURLRequestJob::Start() {
|
| DVLOG(1) << "Starting request";
|
| DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| DCHECK(!stream_reader_);
|
|
|
| // We only support GET request.
|
| if (request()->method() != "GET") {
|
| - LOG(WARNING) << "Failed to start request: "
|
| - << request()->method() << " method is not supported";
|
| + LOG(WARNING) << "Failed to start request: " << request()->method()
|
| + << " method is not supported";
|
| NotifyStartError(net::URLRequestStatus(net::URLRequestStatus::FAILED,
|
| net::ERR_METHOD_NOT_SUPPORTED));
|
| return;
|
| }
|
|
|
| // Check if the scheme is correct.
|
| - if (!request()->url().SchemeIs(chrome::kDriveScheme)) {
|
| + if (!request()->url().SchemeIs(chrome::kExternalFileScheme)) {
|
| NotifyStartError(net::URLRequestStatus(net::URLRequestStatus::FAILED,
|
| net::ERR_INVALID_URL));
|
| return;
|
| @@ -216,11 +220,11 @@ void DriveURLRequestJob::Start() {
|
| // Owned by itself.
|
| new URLHelper(profile_id_,
|
| request()->url(),
|
| - base::Bind(&DriveURLRequestJob::OnHelperResultObtained,
|
| + base::Bind(&ExternalFileURLRequestJob::OnHelperResultObtained,
|
| weak_ptr_factory_.GetWeakPtr()));
|
| }
|
|
|
| -void DriveURLRequestJob::OnHelperResultObtained(
|
| +void ExternalFileURLRequestJob::OnHelperResultObtained(
|
| net::Error error,
|
| const scoped_refptr<storage::FileSystemContext>& file_system_context,
|
| const storage::FileSystemURL& file_system_url,
|
| @@ -241,11 +245,12 @@ void DriveURLRequestJob::OnHelperResultObtained(
|
| // Check if the entry has a redirect URL.
|
| file_system_context_->external_backend()->GetRedirectURLForContents(
|
| file_system_url_,
|
| - base::Bind(&DriveURLRequestJob::OnRedirectURLObtained,
|
| + base::Bind(&ExternalFileURLRequestJob::OnRedirectURLObtained,
|
| weak_ptr_factory_.GetWeakPtr()));
|
| }
|
|
|
| -void DriveURLRequestJob::OnRedirectURLObtained(const GURL& redirect_url) {
|
| +void ExternalFileURLRequestJob::OnRedirectURLObtained(
|
| + const GURL& redirect_url) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| redirect_url_ = redirect_url;
|
| if (!redirect_url_.is_empty()) {
|
| @@ -256,12 +261,13 @@ void DriveURLRequestJob::OnRedirectURLObtained(const GURL& redirect_url) {
|
| // Obtain file system context.
|
| file_system_context_->operation_runner()->GetMetadata(
|
| file_system_url_,
|
| - base::Bind(&DriveURLRequestJob::OnFileInfoObtained,
|
| + base::Bind(&ExternalFileURLRequestJob::OnFileInfoObtained,
|
| weak_ptr_factory_.GetWeakPtr()));
|
| }
|
|
|
| -void DriveURLRequestJob::OnFileInfoObtained(base::File::Error result,
|
| - const base::File::Info& file_info) {
|
| +void ExternalFileURLRequestJob::OnFileInfoObtained(
|
| + base::File::Error result,
|
| + const base::File::Info& file_info) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
|
|
| if (result == base::File::FILE_ERROR_NOT_FOUND) {
|
| @@ -301,7 +307,7 @@ void DriveURLRequestJob::OnFileInfoObtained(base::File::Error result,
|
| NotifyHeadersComplete();
|
| }
|
|
|
| -void DriveURLRequestJob::Kill() {
|
| +void ExternalFileURLRequestJob::Kill() {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
|
|
| stream_reader_.reset();
|
| @@ -310,14 +316,14 @@ void DriveURLRequestJob::Kill() {
|
| weak_ptr_factory_.InvalidateWeakPtrs();
|
| }
|
|
|
| -bool DriveURLRequestJob::GetMimeType(std::string* mime_type) const {
|
| +bool ExternalFileURLRequestJob::GetMimeType(std::string* mime_type) const {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| mime_type->assign(mime_type_);
|
| return !mime_type->empty();
|
| }
|
|
|
| -bool DriveURLRequestJob::IsRedirectResponse(
|
| - GURL* location, int* http_status_code) {
|
| +bool ExternalFileURLRequestJob::IsRedirectResponse(GURL* location,
|
| + int* http_status_code) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| if (redirect_url_.is_empty())
|
| return false;
|
| @@ -329,8 +335,9 @@ bool DriveURLRequestJob::IsRedirectResponse(
|
| return true;
|
| }
|
|
|
| -bool DriveURLRequestJob::ReadRawData(
|
| - net::IOBuffer* buf, int buf_size, int* bytes_read) {
|
| +bool ExternalFileURLRequestJob::ReadRawData(net::IOBuffer* buf,
|
| + int buf_size,
|
| + int* bytes_read) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| DCHECK(stream_reader_);
|
|
|
| @@ -339,11 +346,11 @@ bool DriveURLRequestJob::ReadRawData(
|
| return true;
|
| }
|
|
|
| - const int result =
|
| - stream_reader_->Read(buf,
|
| - std::min<int64>(buf_size, remaining_bytes_),
|
| - base::Bind(&DriveURLRequestJob::OnReadCompleted,
|
| - weak_ptr_factory_.GetWeakPtr()));
|
| + const int result = stream_reader_->Read(
|
| + buf,
|
| + std::min<int64>(buf_size, remaining_bytes_),
|
| + base::Bind(&ExternalFileURLRequestJob::OnReadCompleted,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
|
|
| if (result == net::ERR_IO_PENDING) {
|
| // The data is not yet available.
|
| @@ -362,16 +369,16 @@ bool DriveURLRequestJob::ReadRawData(
|
| return true;
|
| }
|
|
|
| -DriveURLRequestJob::~DriveURLRequestJob() {
|
| +ExternalFileURLRequestJob::~ExternalFileURLRequestJob() {
|
| }
|
|
|
| -void DriveURLRequestJob::OnReadCompleted(int read_result) {
|
| +void ExternalFileURLRequestJob::OnReadCompleted(int read_result) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
|
|
| if (read_result < 0) {
|
| DCHECK_NE(read_result, net::ERR_IO_PENDING);
|
| - NotifyDone(net::URLRequestStatus(net::URLRequestStatus::FAILED,
|
| - read_result));
|
| + NotifyDone(
|
| + net::URLRequestStatus(net::URLRequestStatus::FAILED, read_result));
|
| }
|
|
|
| remaining_bytes_ -= read_result;
|
| @@ -379,4 +386,4 @@ void DriveURLRequestJob::OnReadCompleted(int read_result) {
|
| NotifyReadComplete(read_result);
|
| }
|
|
|
| -} // namespace drive
|
| +} // namespace chromeos
|
|
|