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

Unified Diff: chrome/renderer/extensions/extension_localization_peer_unittest.cc

Issue 1103813002: Make WebURLLoader capable of retaining received buffers. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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: chrome/renderer/extensions/extension_localization_peer_unittest.cc
diff --git a/chrome/renderer/extensions/extension_localization_peer_unittest.cc b/chrome/renderer/extensions/extension_localization_peer_unittest.cc
index 2b6599ce9c7b3c087221a08f1e0af2c2f582967b..2893dbad4163835078832c05b0fc28ee953f0adc 100644
--- a/chrome/renderer/extensions/extension_localization_peer_unittest.cc
+++ b/chrome/renderer/extensions/extension_localization_peer_unittest.cc
@@ -4,6 +4,7 @@
#include <map>
#include <string>
+#include <vector>
#include "base/memory/scoped_ptr.h"
#include "chrome/renderer/extensions/extension_localization_peer.h"
@@ -16,11 +17,14 @@
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
+namespace {
+
using testing::_;
using testing::DoAll;
using testing::Invoke;
using testing::StrEq;
using testing::Return;
+using ReceivedData = content::RequestPeer::ReceivedData;
static const char* const kExtensionUrl_1 =
"chrome-extension://some_id/popup.css";
@@ -35,6 +39,26 @@ void MessageDeleter(IPC::Message* message) {
delete message;
}
+class FixedReceivedData final : public ReceivedData {
+ public:
+ FixedReceivedData(const char* payload, int length, int encoded_length)
+ : data_(&payload[0], &payload[length]), encoded_length_(encoded_length) {}
+ ~FixedReceivedData() override {}
+
+ const char* payload() const override {
+ // TODO(yhirano): Use |data_.data()| when we can use c++11.
+ return data_.empty() ? nullptr : &data_[0];
+ }
+ int length() const override { return data_.size(); }
+ int encoded_length() const override { return encoded_length_; }
+
+ private:
+ const std::vector<char> data_;
+ const int encoded_length_;
+
+ DISALLOW_COPY_AND_ASSIGN(FixedReceivedData);
+};
+
class MockIpcMessageSender : public IPC::Sender {
public:
MockIpcMessageSender() {
@@ -62,9 +86,14 @@ class MockRequestPeer : public content::RequestPeer {
MOCK_METHOD1(OnReceivedResponse,
void(const content::ResourceResponseInfo& info));
MOCK_METHOD2(OnDownloadedData, void(int len, int encoded_data_length));
- MOCK_METHOD3(OnReceivedData, void(const char* data,
- int data_length,
- int encoded_data_length));
+ void OnReceivedData(scoped_ptr<ReceivedData> data) override {
+ OnReceivedDataInternal(data->payload(), data->length(),
+ data->encoded_length());
+ }
+ MOCK_METHOD3(OnReceivedDataInternal,
+ void(const char* data,
+ int data_length,
+ int encoded_data_length));
MOCK_METHOD6(OnCompletedRequest, void(
int error_code,
bool was_ignored_by_handler,
@@ -77,6 +106,8 @@ class MockRequestPeer : public content::RequestPeer {
DISALLOW_COPY_AND_ASSIGN(MockRequestPeer);
};
+} // namespace
+
class ExtensionLocalizationPeerTest : public testing::Test {
protected:
void SetUp() override {
@@ -125,11 +156,13 @@ TEST_F(ExtensionLocalizationPeerTest, OnReceivedData) {
EXPECT_TRUE(GetData(filter_peer_.get()).empty());
const std::string data_chunk("12345");
- filter_peer_->OnReceivedData(data_chunk.c_str(), data_chunk.length(), -1);
+ filter_peer_->OnReceivedData(make_scoped_ptr(
+ new FixedReceivedData(data_chunk.c_str(), data_chunk.length(), -1)));
EXPECT_EQ(data_chunk, GetData(filter_peer_.get()));
- filter_peer_->OnReceivedData(data_chunk.c_str(), data_chunk.length(), -1);
+ filter_peer_->OnReceivedData(make_scoped_ptr(
+ new FixedReceivedData(data_chunk.c_str(), data_chunk.length(), -1)));
EXPECT_EQ(data_chunk + data_chunk, GetData(filter_peer_.get()));
}
@@ -151,7 +184,7 @@ TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestEmptyData) {
// It will self-delete once it exits OnCompletedRequest.
ExtensionLocalizationPeer* filter_peer = filter_peer_.release();
- EXPECT_CALL(*original_peer_, OnReceivedData(_, _, _)).Times(0);
+ EXPECT_CALL(*original_peer_, OnReceivedDataInternal(_, _, _)).Times(0);
EXPECT_CALL(*sender_, Send(_)).Times(0);
EXPECT_CALL(*original_peer_, OnReceivedResponse(_));
@@ -172,8 +205,8 @@ TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestNoCatalogs) {
std::string data = GetData(filter_peer);
EXPECT_CALL(*original_peer_,
- OnReceivedData(StrEq(data.data()), data.length(), -1)).Times(2);
-
+ OnReceivedDataInternal(StrEq(data.c_str()), data.length(), -1))
+ .Times(2);
EXPECT_CALL(*original_peer_, OnReceivedResponse(_)).Times(2);
EXPECT_CALL(*original_peer_, OnCompletedRequest(
net::OK, false, false, "", base::TimeTicks(), -1)).Times(2);
@@ -209,7 +242,7 @@ TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestWithCatalogs) {
// __MSG_text__ gets replaced with "new text".
std::string data("some new text");
EXPECT_CALL(*original_peer_,
- OnReceivedData(StrEq(data.data()), data.length(), -1));
+ OnReceivedDataInternal(StrEq(data.c_str()), data.length(), -1));
EXPECT_CALL(*original_peer_, OnReceivedResponse(_));
EXPECT_CALL(*original_peer_, OnCompletedRequest(
@@ -237,8 +270,8 @@ TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestReplaceMessagesFails) {
EXPECT_CALL(*sender_, Send(_)).Times(0);
// __MSG_missing_message__ is missing, so message stays the same.
- EXPECT_CALL(*original_peer_,
- OnReceivedData(StrEq(message.data()), message.length(), -1));
+ EXPECT_CALL(*original_peer_, OnReceivedDataInternal(StrEq(message.c_str()),
+ message.length(), -1));
EXPECT_CALL(*original_peer_, OnReceivedResponse(_));
EXPECT_CALL(*original_peer_, OnCompletedRequest(

Powered by Google App Engine
This is Rietveld 408576698