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

Unified Diff: content/browser/blob_storage/blob_dispatcher_host_unittest.cc

Issue 1853333003: [BlobAsync] Faster shortcuttin, make renderer controller leaky & alive. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comment Created 4 years, 8 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: content/browser/blob_storage/blob_dispatcher_host_unittest.cc
diff --git a/content/browser/blob_storage/blob_dispatcher_host_unittest.cc b/content/browser/blob_storage/blob_dispatcher_host_unittest.cc
index a9b7707949b56fca64b5fdb1a6e44fb15edb1100..3b409aa06ffe455e8a0aa00c389e813ced4a0a44 100644
--- a/content/browser/blob_storage/blob_dispatcher_host_unittest.cc
+++ b/content/browser/blob_storage/blob_dispatcher_host_unittest.cc
@@ -295,6 +295,46 @@ TEST_F(BlobDispatcherHostTest, RegularTransfer) {
ExpectHandleEqualsData(handle.get(), elements);
}
+TEST_F(BlobDispatcherHostTest, MultipleTransfers) {
+ const std::string kId = "uuid";
+ const int kNumIters = 10;
+ for (int i = 0; i < kNumIters; i++) {
+ std::string id = kId;
+ id += ('0' + i);
+ ExpectBlobNotExist(id);
+ host_->OnRegisterBlobUUID(id, std::string(kContentType),
+ std::string(kContentDisposition),
+ std::set<std::string>());
+ EXPECT_FALSE(host_->shutdown_for_bad_message_);
+ }
+ sink_.ClearMessages();
+ for (int i = 0; i < kNumIters; i++) {
+ std::string id = kId;
+ id += ('0' + i);
+ DataElement element;
+ element.SetToBytesDescription(kDataSize);
+ std::vector<DataElement> elements = {element};
+ host_->OnStartBuildingBlob(id, elements);
+ EXPECT_FALSE(host_->shutdown_for_bad_message_);
+ // Expect our request.
+ std::vector<BlobItemBytesRequest> expected_requests = {
+ BlobItemBytesRequest::CreateIPCRequest(0, 0, 0, kDataSize)};
+ ExpectRequest(id, expected_requests);
+ sink_.ClearMessages();
+ }
+ for (int i = 0; i < kNumIters; i++) {
+ std::string id = kId;
+ id += ('0' + i);
+ // Send results;
+ BlobItemBytesResponse response(0);
+ std::memcpy(response.allocate_mutable_data(kDataSize), kData, kDataSize);
+ std::vector<BlobItemBytesResponse> responses = {response};
+ host_->OnMemoryItemResponse(id, responses);
+ ExpectDone(id);
+ sink_.ClearMessages();
+ }
+}
+
TEST_F(BlobDispatcherHostTest, SharedMemoryTransfer) {
const std::string kId = "uuid1";
const size_t kLargeSize = kTestBlobStorageMaxSharedMemoryBytes * 2;
@@ -304,6 +344,7 @@ TEST_F(BlobDispatcherHostTest, SharedMemoryTransfer) {
host_->OnRegisterBlobUUID(kId, std::string(kContentType),
std::string(kContentDisposition),
std::set<std::string>());
+
// Grab the handle.
scoped_ptr<BlobDataHandle> blob_data_handle =
context_->GetBlobDataFromUUID(kId);
@@ -421,6 +462,7 @@ TEST_F(BlobDispatcherHostTest, OnCancelBuildingBlob) {
// Get rid of it in the host.
host_->OnDecrementBlobRefCount(kId);
+ EXPECT_FALSE(host_->shutdown_for_bad_message_);
ExpectBlobNotExist(kId);
// Create blob again to verify we don't have any old construction state lying

Powered by Google App Engine
This is Rietveld 408576698