| Index: storage/browser/blob/blob_storage_context.cc
 | 
| diff --git a/storage/browser/blob/blob_storage_context.cc b/storage/browser/blob/blob_storage_context.cc
 | 
| index 66f67ea1d2f54726fe8510e65c0997eba2279e69..d08ccb368131fbe557af24a64c270b2817df552f 100644
 | 
| --- a/storage/browser/blob/blob_storage_context.cc
 | 
| +++ b/storage/browser/blob/blob_storage_context.cc
 | 
| @@ -16,6 +16,7 @@
 | 
|  #include "base/thread_task_runner_handle.h"
 | 
|  #include "base/trace_event/trace_event.h"
 | 
|  #include "storage/browser/blob/blob_data_builder.h"
 | 
| +#include "storage/browser/blob/shareable_file_reference.h"
 | 
|  #include "url/gurl.h"
 | 
|  
 | 
|  namespace storage {
 | 
| @@ -283,6 +284,9 @@ scoped_refptr<BlobDataItem> BlobStorageContext::AllocateBlobItem(
 | 
|                                ipc_data.length());
 | 
|        blob_item = new BlobDataItem(element.Pass());
 | 
|        break;
 | 
| +    case DataElement::TYPE_DISK_CACHE_ENTRY:  // This type can't be sent by IPC.
 | 
| +      NOTREACHED();
 | 
| +      break;
 | 
|      default:
 | 
|        NOTREACHED();
 | 
|        break;
 | 
| @@ -365,6 +369,13 @@ bool BlobStorageContext::AppendAllocatedBlobItem(
 | 
|        }
 | 
|        break;
 | 
|      }
 | 
| +    case DataElement::TYPE_DISK_CACHE_ENTRY: {
 | 
| +      UMA_HISTOGRAM_COUNTS("Storage.BlobItemSize.CacheEntry",
 | 
| +                           (length - offset) / 1024);
 | 
| +      target_blob_builder->AppendSharedBlobItem(
 | 
| +          new ShareableBlobDataItem(target_blob_uuid, blob_item));
 | 
| +      break;
 | 
| +    }
 | 
|      default:
 | 
|        NOTREACHED();
 | 
|        break;
 | 
| @@ -440,7 +451,7 @@ bool BlobStorageContext::AppendBlob(
 | 
|                                      item.expected_modification_time());
 | 
|          target_blob_builder->AppendSharedBlobItem(new ShareableBlobDataItem(
 | 
|              target_blob_uuid,
 | 
| -            new BlobDataItem(element.Pass(), item.file_handle_)));
 | 
| +            new BlobDataItem(element.Pass(), item.data_handle_)));
 | 
|        } break;
 | 
|        case DataElement::TYPE_FILE_FILESYSTEM: {
 | 
|          UMA_HISTOGRAM_COUNTS("Storage.BlobItemSize.BlobSlice.FileSystem",
 | 
| @@ -452,6 +463,16 @@ bool BlobStorageContext::AppendBlob(
 | 
|          target_blob_builder->AppendSharedBlobItem(new ShareableBlobDataItem(
 | 
|              target_blob_uuid, new BlobDataItem(element.Pass())));
 | 
|        } break;
 | 
| +      case DataElement::TYPE_DISK_CACHE_ENTRY: {
 | 
| +        scoped_ptr<DataElement> element(new DataElement());
 | 
| +        element->SetToDiskCacheEntryRange(item.offset() + offset,
 | 
| +                                          new_length);
 | 
| +        target_blob_builder->AppendSharedBlobItem(new ShareableBlobDataItem(
 | 
| +            target_blob_uuid,
 | 
| +            new BlobDataItem(element.Pass(), item.data_handle_,
 | 
| +                             item.disk_cache_entry(),
 | 
| +                             item.disk_cache_stream_index())));
 | 
| +      } break;
 | 
|        default:
 | 
|          CHECK(false) << "Illegal blob item type: " << item.type();
 | 
|      }
 | 
| 
 |