| Index: storage/common/blob_storage/blob_item_bytes_request.h
 | 
| diff --git a/storage/common/blob_storage/blob_item_bytes_request.h b/storage/common/blob_storage/blob_item_bytes_request.h
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..4031309fcacc0167a7080e0f30df4bd93daf95a0
 | 
| --- /dev/null
 | 
| +++ b/storage/common/blob_storage/blob_item_bytes_request.h
 | 
| @@ -0,0 +1,86 @@
 | 
| +// Copyright 2015 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.
 | 
| +
 | 
| +#ifndef STORAGE_COMMON_BLOB_STORAGE_BLOB_ITEM_BYTES_REQUEST_H_
 | 
| +#define STORAGE_COMMON_BLOB_STORAGE_BLOB_ITEM_BYTES_REQUEST_H_
 | 
| +
 | 
| +#include <stdint.h>
 | 
| +#include <ostream>
 | 
| +
 | 
| +#include "base/basictypes.h"
 | 
| +#include "storage/common/blob_storage/blob_storage_constants.h"
 | 
| +#include "storage/common/storage_common_export.h"
 | 
| +
 | 
| +namespace storage {
 | 
| +
 | 
| +// This class is serialized over IPC to request bytes from a blob item.
 | 
| +struct STORAGE_COMMON_EXPORT BlobItemBytesRequest {
 | 
| +  // Not using std::numeric_limits<T>::max() because of non-C++11 builds.
 | 
| +  static const size_t kInvalidIndex = SIZE_MAX;
 | 
| +  static const uint64_t kInvalidSize = kuint64max;
 | 
| +
 | 
| +  static BlobItemBytesRequest CreateIPCRequest(size_t request_number,
 | 
| +                                               size_t renderer_item_index,
 | 
| +                                               size_t renderer_item_offset,
 | 
| +                                               size_t size);
 | 
| +
 | 
| +  static BlobItemBytesRequest CreateSharedMemoryRequest(
 | 
| +      size_t request_number,
 | 
| +      size_t renderer_item_index,
 | 
| +      size_t renderer_item_offset,
 | 
| +      size_t size,
 | 
| +      size_t handle_index,
 | 
| +      uint64_t handle_offset);
 | 
| +
 | 
| +  static BlobItemBytesRequest CreateFileRequest(size_t request_number,
 | 
| +                                                size_t renderer_item_index,
 | 
| +                                                uint64_t renderer_item_offset,
 | 
| +                                                uint64_t size,
 | 
| +                                                size_t handle_index,
 | 
| +                                                uint64_t handle_offset);
 | 
| +
 | 
| +  BlobItemBytesRequest();
 | 
| +  BlobItemBytesRequest(size_t request_number,
 | 
| +                       IPCBlobItemRequestStrategy transport_strategy,
 | 
| +                       size_t renderer_item_index,
 | 
| +                       uint64_t renderer_item_offset,
 | 
| +                       uint64_t size,
 | 
| +                       size_t handle_index,
 | 
| +                       uint64_t handle_offset);
 | 
| +  ~BlobItemBytesRequest();
 | 
| +
 | 
| +  // The request number uniquely identifies the memory request. We can't use
 | 
| +  // the renderer item index or browser item index as there can be multiple
 | 
| +  // requests for both (as segmentation boundaries can exist in both).
 | 
| +  size_t request_number;
 | 
| +  IPCBlobItemRequestStrategy transport_strategy;
 | 
| +  size_t renderer_item_index;
 | 
| +  uint64_t renderer_item_offset;
 | 
| +  uint64_t size;
 | 
| +  size_t handle_index;
 | 
| +  uint64_t handle_offset;
 | 
| +};
 | 
| +
 | 
| +STORAGE_COMMON_EXPORT void PrintTo(const BlobItemBytesRequest& request,
 | 
| +                                   std::ostream* os);
 | 
| +
 | 
| +#if defined(UNIT_TEST)
 | 
| +STORAGE_COMMON_EXPORT inline bool operator==(const BlobItemBytesRequest& a,
 | 
| +                                             const BlobItemBytesRequest& b) {
 | 
| +  return a.request_number == b.request_number &&
 | 
| +         a.transport_strategy == b.transport_strategy &&
 | 
| +         a.renderer_item_index == b.renderer_item_index &&
 | 
| +         a.renderer_item_offset == b.renderer_item_offset && a.size == b.size &&
 | 
| +         a.handle_index == b.handle_index && a.handle_offset == b.handle_offset;
 | 
| +}
 | 
| +
 | 
| +STORAGE_COMMON_EXPORT inline bool operator!=(const BlobItemBytesRequest& a,
 | 
| +                                             const BlobItemBytesRequest& b) {
 | 
| +  return !(a == b);
 | 
| +}
 | 
| +#endif  // defined(UNIT_TEST)
 | 
| +
 | 
| +}  // namespace storage
 | 
| +
 | 
| +#endif  // STORAGE_COMMON_BLOB_STORAGE_BLOB_ITEM_BYTES_REQUEST_H_
 | 
| 
 |