Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(851)

Unified Diff: storage/common/fileapi/blob_item_bytes_request.h

Issue 1098853003: [BlobAsync] Patch 4: Browser Classes & Logic. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix for template ambiguity Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: storage/common/fileapi/blob_item_bytes_request.h
diff --git a/storage/common/fileapi/blob_item_bytes_request.h b/storage/common/fileapi/blob_item_bytes_request.h
new file mode 100644
index 0000000000000000000000000000000000000000..317434b3730c67f66008e3d142e55d4787b35906
--- /dev/null
+++ b/storage/common/fileapi/blob_item_bytes_request.h
@@ -0,0 +1,125 @@
+// 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_FILEAPI_BLOB_ITEM_BYTES_REQUEST_H_
+#define STORAGE_COMMON_FILEAPI_BLOB_ITEM_BYTES_REQUEST_H_
+
+#include <stdint.h>
+
+#include "base/basictypes.h"
+
+namespace storage {
+
+enum IPCBlobItemRequestStrategy {
+ IPC_BLOB_ITEM_REQUEST_STRATEGY_UNKNOWN = 0,
+ IPC_BLOB_ITEM_REQUEST_STRATEGY_IPC,
+ IPC_BLOB_ITEM_REQUEST_STRATEGY_SHARED_MEMORY,
+ IPC_BLOB_ITEM_REQUEST_STRATEGY_FILE
+};
+
+enum IPCBlobCreationCancelCode {
kinuko 2015/05/25 08:32:03 Not yet used?
dmurph 2015/06/13 00:13:10 No not yet, this is for the IPC messages that will
+ IPC_BLOB_CREATION_CANCEL_UNKNOWN = 0,
+ IPC_BLOB_CREATION_CANCEL_OUT_OF_MEMORY,
+ IPC_BLOB_CREATION_CANCEL_FILE_WRITE_FAILED
+};
+
+// This class is serialized over IPC to request bytes from a blob item.
+struct 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,
+ uint64_t renderer_item_offset,
+ uint64_t size) {
+ return BlobItemBytesRequest(
+ request_number, IPC_BLOB_ITEM_REQUEST_STRATEGY_IPC, renderer_item_index,
+ renderer_item_offset, size, kInvalidIndex, kInvalidSize);
+ }
+
+ static BlobItemBytesRequest CreateSharedMemoryRequest(
+ 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) {
+ return BlobItemBytesRequest(request_number,
+ IPC_BLOB_ITEM_REQUEST_STRATEGY_SHARED_MEMORY,
+ renderer_item_index, renderer_item_offset, size,
+ handle_index, 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) {
+ return BlobItemBytesRequest(request_number,
+ IPC_BLOB_ITEM_REQUEST_STRATEGY_FILE,
+ renderer_item_index, renderer_item_offset, size,
+ handle_index, handle_offset);
+ }
+
+ BlobItemBytesRequest()
+ : request_number(kInvalidIndex),
+ transport_strategy(IPC_BLOB_ITEM_REQUEST_STRATEGY_UNKNOWN),
+ renderer_item_index(kInvalidIndex),
+ renderer_item_offset(kInvalidSize),
+ size(kInvalidSize),
+ handle_index(kInvalidIndex),
+ handle_offset(kInvalidSize) {}
+ ~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)
+ : request_number(request_number),
+ transport_strategy(transport_strategy),
+ renderer_item_index(renderer_item_index),
+ renderer_item_offset(renderer_item_offset),
+ size(size),
+ handle_index(handle_index),
+ handle_offset(handle_offset) {}
+
+ 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;
+};
+
+#if defined(UNIT_TEST)
+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;
+}
+
+inline bool operator!=(const BlobItemBytesRequest& a,
+ const BlobItemBytesRequest& b) {
+ return !(a == b);
+}
+
+inline ::std::ostream& operator<<(::std::ostream& os,
+ const BlobItemBytesRequest& request) {
+ return os << "{ request_number: " << request.request_number
+ << ", transport_strategy: " << request.transport_strategy
+ << ", renderer_item_index: " << request.renderer_item_index
+ << ", renderer_item_offset: " << request.renderer_item_offset
+ << ", size: " << request.size
+ << ", handle_index: " << request.handle_index
+ << ", handle_offset: " << request.handle_offset << " }";
+}
+#endif // defined(UNIT_TEST)
+
+} // namespace storage
+
+#endif // STORAGE_COMMON_FILEAPI_BLOB_ITEM_BYTES_REQUEST_H_

Powered by Google App Engine
This is Rietveld 408576698