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

Side by Side Diff: content/child/blob_storage/webblobregistry_impl.cc

Issue 2717213004: Move SharedBitmapManager implementation out of content/ (Closed)
Patch Set: rebase Created 3 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "content/child/blob_storage/webblobregistry_impl.h" 5 #include "content/child/blob_storage/webblobregistry_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/guid.h" 9 #include "base/guid.h"
10 #include "base/location.h" 10 #include "base/location.h"
11 #include "base/memory/ptr_util.h" 11 #include "base/memory/ptr_util.h"
12 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 #include "base/memory/shared_memory.h" 13 #include "base/memory/shared_memory.h"
14 #include "base/message_loop/message_loop.h" 14 #include "base/message_loop/message_loop.h"
15 #include "base/metrics/histogram_macros.h" 15 #include "base/metrics/histogram_macros.h"
16 #include "base/numerics/safe_conversions.h" 16 #include "base/numerics/safe_conversions.h"
17 #include "base/trace_event/trace_event.h" 17 #include "base/trace_event/trace_event.h"
18 #include "components/display_compositor/child/child_shared_bitmap_manager.h"
18 #include "content/child/blob_storage/blob_consolidation.h" 19 #include "content/child/blob_storage/blob_consolidation.h"
19 #include "content/child/blob_storage/blob_transport_controller.h" 20 #include "content/child/blob_storage/blob_transport_controller.h"
20 #include "content/child/child_thread_impl.h" 21 #include "content/child/child_thread_impl.h"
21 #include "content/child/thread_safe_sender.h" 22 #include "content/child/thread_safe_sender.h"
22 #include "content/common/fileapi/webblob_messages.h" 23 #include "content/common/fileapi/webblob_messages.h"
23 #include "third_party/WebKit/public/platform/FilePathConversion.h" 24 #include "third_party/WebKit/public/platform/FilePathConversion.h"
24 #include "third_party/WebKit/public/platform/WebBlobData.h" 25 #include "third_party/WebKit/public/platform/WebBlobData.h"
25 #include "third_party/WebKit/public/platform/WebString.h" 26 #include "third_party/WebKit/public/platform/WebString.h"
26 #include "third_party/WebKit/public/platform/WebThreadSafeData.h" 27 #include "third_party/WebKit/public/platform/WebThreadSafeData.h"
27 #include "third_party/WebKit/public/platform/WebURL.h" 28 #include "third_party/WebKit/public/platform/WebURL.h"
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 if (length <= limits_.max_ipc_memory_size) { 146 if (length <= limits_.max_ipc_memory_size) {
146 DataElement item; 147 DataElement item;
147 item.SetToBytes(data, length); 148 item.SetToBytes(data, length);
148 sender_->Send(new StreamHostMsg_AppendBlobDataItem(url, item)); 149 sender_->Send(new StreamHostMsg_AppendBlobDataItem(url, item));
149 } else { 150 } else {
150 // We handle larger amounts of data via SharedMemory instead of 151 // We handle larger amounts of data via SharedMemory instead of
151 // writing it directly to the IPC channel. 152 // writing it directly to the IPC channel.
152 size_t shared_memory_size = 153 size_t shared_memory_size =
153 std::min(length, limits_.max_shared_memory_size); 154 std::min(length, limits_.max_shared_memory_size);
154 std::unique_ptr<base::SharedMemory> shared_memory( 155 std::unique_ptr<base::SharedMemory> shared_memory(
155 ChildThreadImpl::AllocateSharedMemory(shared_memory_size)); 156 display_compositor::ChildSharedBitmapManager::AllocateSharedMemory(
danakj 2017/02/28 20:34:57 I don't think this is right, because this method h
xlai (Olivia) 2017/03/01 20:02:45 This AllocateSharedMemory is currently attached in
danakj 2017/03/03 19:21:55 I don't think either is the right final state. cc/
157 shared_memory_size));
156 CHECK(shared_memory.get()); 158 CHECK(shared_memory.get());
157 if (!shared_memory->Map(shared_memory_size)) 159 if (!shared_memory->Map(shared_memory_size))
158 CHECK(false); 160 CHECK(false);
159 161
160 size_t remaining_bytes = length; 162 size_t remaining_bytes = length;
161 const char* current_ptr = data; 163 const char* current_ptr = data;
162 while (remaining_bytes) { 164 while (remaining_bytes) {
163 size_t chunk_size = std::min(remaining_bytes, shared_memory_size); 165 size_t chunk_size = std::min(remaining_bytes, shared_memory_size);
164 memcpy(shared_memory->memory(), current_ptr, chunk_size); 166 memcpy(shared_memory->memory(), current_ptr, chunk_size);
165 sender_->Send(new StreamHostMsg_SyncAppendSharedMemory( 167 sender_->Send(new StreamHostMsg_SyncAppendSharedMemory(
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 expected_modification_time); 239 expected_modification_time);
238 } 240 }
239 241
240 void WebBlobRegistryImpl::BuilderImpl::build() { 242 void WebBlobRegistryImpl::BuilderImpl::build() {
241 BlobTransportController::InitiateBlobTransfer( 243 BlobTransportController::InitiateBlobTransfer(
242 uuid_, content_type_, std::move(consolidation_), sender_, 244 uuid_, content_type_, std::move(consolidation_), sender_,
243 io_runner_.get(), main_runner_); 245 io_runner_.get(), main_runner_);
244 } 246 }
245 247
246 } // namespace content 248 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698