| OLD | NEW | 
|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "storage/browser/blob/blob_url_request_job_factory.h" | 5 #include "storage/browser/blob/blob_url_request_job_factory.h" | 
| 6 | 6 | 
|  | 7 #include <utility> | 
|  | 8 | 
| 7 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" | 
| 8 #include "net/base/request_priority.h" | 10 #include "net/base/request_priority.h" | 
| 9 #include "net/url_request/url_request_context.h" | 11 #include "net/url_request/url_request_context.h" | 
| 10 #include "storage/browser/blob/blob_data_handle.h" | 12 #include "storage/browser/blob/blob_data_handle.h" | 
| 11 #include "storage/browser/blob/blob_storage_context.h" | 13 #include "storage/browser/blob/blob_storage_context.h" | 
| 12 #include "storage/browser/blob/blob_url_request_job.h" | 14 #include "storage/browser/blob/blob_url_request_job.h" | 
| 13 #include "storage/browser/fileapi/file_system_context.h" | 15 #include "storage/browser/fileapi/file_system_context.h" | 
| 14 | 16 | 
| 15 namespace storage { | 17 namespace storage { | 
| 16 | 18 | 
| 17 namespace { | 19 namespace { | 
| 18 | 20 | 
| 19 int kUserDataKey;  // The value is not important, the addr is a key. | 21 int kUserDataKey;  // The value is not important, the addr is a key. | 
| 20 | 22 | 
| 21 }  // namespace | 23 }  // namespace | 
| 22 | 24 | 
| 23 // static | 25 // static | 
| 24 scoped_ptr<net::URLRequest> BlobProtocolHandler::CreateBlobRequest( | 26 scoped_ptr<net::URLRequest> BlobProtocolHandler::CreateBlobRequest( | 
| 25     scoped_ptr<BlobDataHandle> blob_data_handle, | 27     scoped_ptr<BlobDataHandle> blob_data_handle, | 
| 26     const net::URLRequestContext* request_context, | 28     const net::URLRequestContext* request_context, | 
| 27     net::URLRequest::Delegate* request_delegate) { | 29     net::URLRequest::Delegate* request_delegate) { | 
| 28   const GURL kBlobUrl("blob://see_user_data/"); | 30   const GURL kBlobUrl("blob://see_user_data/"); | 
| 29   scoped_ptr<net::URLRequest> request = request_context->CreateRequest( | 31   scoped_ptr<net::URLRequest> request = request_context->CreateRequest( | 
| 30       kBlobUrl, net::DEFAULT_PRIORITY, request_delegate); | 32       kBlobUrl, net::DEFAULT_PRIORITY, request_delegate); | 
| 31   SetRequestedBlobDataHandle(request.get(), blob_data_handle.Pass()); | 33   SetRequestedBlobDataHandle(request.get(), std::move(blob_data_handle)); | 
| 32   return request.Pass(); | 34   return request; | 
| 33 } | 35 } | 
| 34 | 36 | 
| 35 // static | 37 // static | 
| 36 void BlobProtocolHandler::SetRequestedBlobDataHandle( | 38 void BlobProtocolHandler::SetRequestedBlobDataHandle( | 
| 37     net::URLRequest* request, | 39     net::URLRequest* request, | 
| 38     scoped_ptr<BlobDataHandle> blob_data_handle) { | 40     scoped_ptr<BlobDataHandle> blob_data_handle) { | 
| 39   request->SetUserData(&kUserDataKey, blob_data_handle.release()); | 41   request->SetUserData(&kUserDataKey, blob_data_handle.release()); | 
| 40 } | 42 } | 
| 41 | 43 | 
| 42 // static | 44 // static | 
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 77   // TODO(michaeln): Replace this use case and others like it with a BlobReader | 79   // TODO(michaeln): Replace this use case and others like it with a BlobReader | 
| 78   // impl that does not depend on urlfetching to perform this function. | 80   // impl that does not depend on urlfetching to perform this function. | 
| 79   const std::string kPrefix("blob:uuid/"); | 81   const std::string kPrefix("blob:uuid/"); | 
| 80   if (!base::StartsWith(request->url().spec(), kPrefix, | 82   if (!base::StartsWith(request->url().spec(), kPrefix, | 
| 81                         base::CompareCase::SENSITIVE)) | 83                         base::CompareCase::SENSITIVE)) | 
| 82     return NULL; | 84     return NULL; | 
| 83   std::string uuid = request->url().spec().substr(kPrefix.length()); | 85   std::string uuid = request->url().spec().substr(kPrefix.length()); | 
| 84   scoped_ptr<BlobDataHandle> handle = context_->GetBlobDataFromUUID(uuid); | 86   scoped_ptr<BlobDataHandle> handle = context_->GetBlobDataFromUUID(uuid); | 
| 85   BlobDataHandle* handle_ptr = handle.get(); | 87   BlobDataHandle* handle_ptr = handle.get(); | 
| 86   if (handle) { | 88   if (handle) { | 
| 87     SetRequestedBlobDataHandle(request, handle.Pass()); | 89     SetRequestedBlobDataHandle(request, std::move(handle)); | 
| 88   } | 90   } | 
| 89   return handle_ptr; | 91   return handle_ptr; | 
| 90 } | 92 } | 
| 91 | 93 | 
| 92 }  // namespace storage | 94 }  // namespace storage | 
| OLD | NEW | 
|---|