| Index: chrome/browser/chromeos/drive/drive_protocol_handler.cc
|
| diff --git a/chrome/browser/chromeos/drive/drive_protocol_handler.cc b/chrome/browser/chromeos/drive/drive_protocol_handler.cc
|
| index be7a67ff950f6f38022692f42f3a6b3154a2a363..78be17317ed0c6bf658644140d113532db4753fa 100644
|
| --- a/chrome/browser/chromeos/drive/drive_protocol_handler.cc
|
| +++ b/chrome/browser/chromeos/drive/drive_protocol_handler.cc
|
| @@ -23,7 +23,6 @@
|
| #include "chrome/browser/google_apis/drive_service_interface.h"
|
| #include "chrome/browser/google_apis/gdata_errorcode.h"
|
| #include "chrome/browser/google_apis/time_util.h"
|
| -#include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/profiles/profile_manager.h"
|
| #include "chrome/common/url_constants.h"
|
| #include "content/public/browser/browser_thread.h"
|
| @@ -92,20 +91,21 @@ bool ParseDriveUrl(const std::string& path, std::string* resource_id) {
|
| }
|
|
|
| // Helper function to get DriveSystemService from Profile.
|
| -DriveSystemService* GetSystemService() {
|
| +DriveSystemService* GetSystemService(Profile* profile) {
|
| return DriveSystemServiceFactory::GetForProfile(
|
| - ProfileManager::GetDefaultProfile());
|
| + profile ? profile : ProfileManager::GetDefaultProfile());
|
| }
|
|
|
| // Helper function to get DriveFileSystem from Profile on UI thread.
|
| -DriveFileSystemInterface* GetFileSystemOnUIThread() {
|
| - DriveSystemService* system_service = GetSystemService();
|
| +DriveFileSystemInterface* GetFileSystemOnUIThread(Profile* profile) {
|
| + DriveSystemService* system_service = GetSystemService(profile);
|
| return system_service ? system_service->file_system() : NULL;
|
| }
|
|
|
| // Helper function to cancel Drive download operation on UI thread.
|
| -void CancelDriveDownloadOnUIThread(const FilePath& drive_file_path) {
|
| - DriveSystemService* system_service = GetSystemService();
|
| +void CancelDriveDownloadOnUIThread(
|
| + Profile* profile, const FilePath& drive_file_path) {
|
| + DriveSystemService* system_service = GetSystemService(profile);
|
| if (system_service)
|
| system_service->drive_service()->CancelForFilePath(drive_file_path);
|
| }
|
| @@ -115,7 +115,8 @@ void CancelDriveDownloadOnUIThread(const FilePath& drive_file_path) {
|
| // formatted as drive://<resource-id>.
|
| class DriveURLRequestJob : public net::URLRequestJob {
|
| public:
|
| - DriveURLRequestJob(net::URLRequest* request,
|
| + DriveURLRequestJob(Profile* profile,
|
| + net::URLRequest* request,
|
| net::NetworkDelegate* network_delegate);
|
|
|
| // net::URLRequestJob overrides:
|
| @@ -188,6 +189,9 @@ class DriveURLRequestJob : public net::URLRequestJob {
|
| // Helper method to close |stream_|.
|
| void CloseFileStream();
|
|
|
| + // If |profile_| is NULL, the profile from ProfileManager::GetDefaultProfile()
|
| + // will be used.
|
| + Profile* profile_;
|
| DriveFileSystemInterface* file_system_;
|
|
|
| bool error_; // True if we've encountered an error.
|
| @@ -211,9 +215,11 @@ class DriveURLRequestJob : public net::URLRequestJob {
|
| DISALLOW_COPY_AND_ASSIGN(DriveURLRequestJob);
|
| };
|
|
|
| -DriveURLRequestJob::DriveURLRequestJob(net::URLRequest* request,
|
| +DriveURLRequestJob::DriveURLRequestJob(Profile* profile,
|
| + net::URLRequest* request,
|
| net::NetworkDelegate* network_delegate)
|
| : net::URLRequestJob(request, network_delegate),
|
| + profile_(profile),
|
| file_system_(NULL),
|
| error_(false),
|
| headers_set_(false),
|
| @@ -292,7 +298,7 @@ void DriveURLRequestJob::Start() {
|
| BrowserThread::PostTaskAndReplyWithResult(
|
| BrowserThread::UI,
|
| FROM_HERE,
|
| - base::Bind(&GetFileSystemOnUIThread),
|
| + base::Bind(&GetFileSystemOnUIThread, profile_),
|
| base::Bind(&DriveURLRequestJob::StartAsync,
|
| weak_ptr_factory_.GetWeakPtr()));
|
| }
|
| @@ -321,6 +327,7 @@ void DriveURLRequestJob::Kill() {
|
| BrowserThread::UI,
|
| FROM_HERE,
|
| base::Bind(&CancelDriveDownloadOnUIThread,
|
| + profile_,
|
| drive_file_path_));
|
| }
|
|
|
| @@ -909,7 +916,8 @@ void DriveURLRequestJob::HeadersCompleted(int status_code,
|
| ///////////////////////////////////////////////////////////////////////////////
|
| // DriveProtocolHandler class
|
|
|
| -DriveProtocolHandler::DriveProtocolHandler() {
|
| +DriveProtocolHandler::DriveProtocolHandler(Profile* profile)
|
| + : profile_(profile) {
|
| }
|
|
|
| DriveProtocolHandler::~DriveProtocolHandler() {
|
| @@ -918,7 +926,10 @@ DriveProtocolHandler::~DriveProtocolHandler() {
|
| net::URLRequestJob* DriveProtocolHandler::MaybeCreateJob(
|
| net::URLRequest* request, net::NetworkDelegate* network_delegate) const {
|
| DVLOG(1) << "Handling url: " << request->url().spec();
|
| - return new DriveURLRequestJob(request, network_delegate);
|
| + return new DriveURLRequestJob(
|
| + profile_,
|
| + request,
|
| + network_delegate);
|
| }
|
|
|
| } // namespace drive
|
|
|