| 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(
|
|
|