Index: blimp/net/blob_channel/blob_channel_integration_test.cc |
diff --git a/blimp/net/blob_channel/blob_channel_integration_test.cc b/blimp/net/blob_channel/blob_channel_integration_test.cc |
index fe5b54d52e76a384fcb1188df824cc28b733d24d..3ef93393a64ece98abadbce75dd29260289f38d0 100644 |
--- a/blimp/net/blob_channel/blob_channel_integration_test.cc |
+++ b/blimp/net/blob_channel/blob_channel_integration_test.cc |
@@ -12,6 +12,7 @@ |
#include "blimp/common/blob_cache/test_util.h" |
#include "blimp/net/blob_channel/blob_channel_receiver.h" |
#include "blimp/net/blob_channel/blob_channel_sender.h" |
+#include "blimp/net/blob_channel/mock_blob_channel_receiver.h" |
#include "blimp/net/test_common.h" |
#include "testing/gtest/include/gtest/gtest.h" |
@@ -29,30 +30,19 @@ const char kBlobPayload[] = "bar1"; |
// after |this| is deleted. |
class SenderDelegateProxy : public BlobChannelSender::Delegate { |
public: |
- SenderDelegateProxy() {} |
+ explicit SenderDelegateProxy(BlobChannelReceiver* receiver) |
+ : receiver_(receiver) {} |
~SenderDelegateProxy() override {} |
- // Returns a receiver object that will receive proxied calls sent to |this|. |
- std::unique_ptr<BlobChannelReceiver::Delegate> GetReceiverDelegate() { |
- DCHECK(!receiver_); |
- receiver_ = new ReceiverDelegate; |
- return base::WrapUnique(receiver_); |
- } |
- |
private: |
- class ReceiverDelegate : public BlobChannelReceiver::Delegate { |
- public: |
- using BlobChannelReceiver::Delegate::OnBlobReceived; |
- }; |
- |
// BlobChannelSender implementation. |
void DeliverBlob(const BlobId& id, BlobDataPtr data) override { |
base::MessageLoop::current()->PostTask( |
- FROM_HERE, base::Bind(&ReceiverDelegate::OnBlobReceived, |
+ FROM_HERE, base::Bind(&BlobChannelReceiver::OnBlobReceived, |
base::Unretained(receiver_), id, data)); |
} |
- ReceiverDelegate* receiver_ = nullptr; |
+ BlobChannelReceiver* receiver_; |
DISALLOW_COPY_AND_ASSIGN(SenderDelegateProxy); |
}; |
@@ -62,18 +52,28 @@ class SenderDelegateProxy : public BlobChannelSender::Delegate { |
class BlobChannelIntegrationTest : public testing::Test { |
public: |
BlobChannelIntegrationTest() { |
- std::unique_ptr<SenderDelegateProxy> sender_delegate( |
- new SenderDelegateProxy); |
- receiver_.reset( |
- new BlobChannelReceiver(base::WrapUnique(new InMemoryBlobCache), |
- sender_delegate->GetReceiverDelegate())); |
- sender_.reset(new BlobChannelSender(base::WrapUnique(new InMemoryBlobCache), |
- std::move(sender_delegate))); |
+ BlobChannelReceiver* stored_receiver; |
+ std::unique_ptr<MockBlobChannelReceiverDelegate> receiver_delegate( |
+ new MockBlobChannelReceiverDelegate); |
+ receiver_delegate_ = receiver_delegate.get(); |
+ |
+ EXPECT_CALL(*receiver_delegate, SetReceiver(_)) |
+ .WillOnce(SaveArg<0>(&stored_receiver)); |
+ |
+ receiver_ = BlobChannelReceiver::Create( |
+ base::WrapUnique(new InMemoryBlobCache), std::move(receiver_delegate)); |
+ |
+ EXPECT_EQ(receiver_.get(), stored_receiver); |
+ |
+ sender_.reset(new BlobChannelSender( |
+ base::WrapUnique(new InMemoryBlobCache), |
+ base::WrapUnique(new SenderDelegateProxy(receiver_.get())))); |
} |
~BlobChannelIntegrationTest() override {} |
protected: |
+ MockBlobChannelReceiverDelegate* receiver_delegate_; |
std::unique_ptr<BlobChannelReceiver> receiver_; |
std::unique_ptr<BlobChannelSender> sender_; |
base::MessageLoop message_loop_; |