Commit 651fa124 authored by tzik's avatar tzik Committed by Commit bot

Refactor gmock_mutant.h

This CL contains:
 * Expose resulting type of Bind as MakeUnboundRunType.
 * Refactor testing::CreateFunctor using base::Bind.
 * Remove generate_gmock_mutant.py.
 * Change argument ordering of testing::CreateFunctor to align to
   base::Bind.
 * Remove LATE_OBJECT_BINDING support, which no one use.

BUG=554299

Review URL: https://codereview.chromium.org/1680643002

Cr-Commit-Position: refs/heads/master@{#374689}
parent a3a30cc2
......@@ -46,12 +46,26 @@
namespace base {
namespace internal {
// Don't use Alias Template directly here to avoid a compile error on MSVC2013.
template <typename Functor, typename... Args>
struct MakeUnboundRunTypeImpl {
using Type =
typename BindState<
typename FunctorTraits<Functor>::RunnableType,
typename FunctorTraits<Functor>::RunType,
typename std::decay<Args>::type...>::UnboundRunType;
};
} // namespace internal
template <typename Functor, typename... Args>
using MakeUnboundRunType =
typename internal::MakeUnboundRunTypeImpl<Functor, Args...>::Type;
template <typename Functor, typename... Args>
base::Callback<
typename internal::BindState<
typename internal::FunctorTraits<Functor>::RunnableType,
typename internal::FunctorTraits<Functor>::RunType,
typename std::decay<Args>::type...>::UnboundRunType>
base::Callback<MakeUnboundRunType<Functor, Args...>>
Bind(Functor functor, Args&&... args) {
// Type aliases for how to store and run the functor.
using RunnableType = typename internal::FunctorTraits<Functor>::RunnableType;
......
......@@ -23,11 +23,8 @@
#include "extensions/browser/extension_system.h"
#include "net/base/network_change_notifier.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
// Needed for CreateFunctor.
#define GMOCK_MUTANT_INCLUDE_LATE_OBJECT_BINDING
#include "testing/gmock_mutant.h"
#include "testing/gtest/include/gtest/gtest.h"
using ::testing::AnyNumber;
using ::testing::CreateFunctor;
......@@ -317,8 +314,8 @@ IN_PROC_BROWSER_TEST_F(TtsApiTest, PlatformSpeakError) {
EXPECT_CALL(mock_platform_impl_, Speak(_, "first try", _, _, _))
.WillOnce(DoAll(
InvokeWithoutArgs(
CreateFunctor(&mock_platform_impl_,
&MockTtsPlatformImpl::SetErrorToEpicFail)),
CreateFunctor(&MockTtsPlatformImpl::SetErrorToEpicFail,
base::Unretained(&mock_platform_impl_))),
Return(false)));
EXPECT_CALL(mock_platform_impl_, StopSpeaking())
.WillOnce(Return(true));
......
......@@ -239,7 +239,8 @@ TEST_P(QuicChromiumClientStreamTest, OnDataAvailable) {
EXPECT_CALL(delegate_, OnDataAvailable())
.WillOnce(testing::Invoke(
CreateFunctor(this, &QuicChromiumClientStreamTest::ReadData,
CreateFunctor(&QuicChromiumClientStreamTest::ReadData,
base::Unretained(this),
StringPiece(data, arraysize(data) - 1))));
base::MessageLoop::current()->RunUntilIdle();
......@@ -275,7 +276,8 @@ TEST_P(QuicChromiumClientStreamTest, OnDataAvailableWithError) {
/*offset=*/0, data));
EXPECT_CALL(delegate_, OnDataAvailable())
.WillOnce(testing::Invoke(CreateFunctor(
stream_, &QuicChromiumClientStream::Reset, QUIC_STREAM_CANCELLED)));
&QuicChromiumClientStream::Reset,
base::Unretained(stream_), QUIC_STREAM_CANCELLED)));
base::MessageLoop::current()->RunUntilIdle();
EXPECT_CALL(delegate_, OnClose(QUIC_NO_ERROR));
......
......@@ -441,13 +441,15 @@ TEST_P(QuicSessionTestServer, TestBatchedWrites) {
InSequence s;
EXPECT_CALL(*stream2, OnCanWrite())
.WillOnce(DoAll(testing::IgnoreResult(Invoke(CreateFunctor(
&session_, &TestSession::SendLargeFakeData,
&TestSession::SendLargeFakeData,
base::Unretained(&session_),
stream2->id(), 6000))),
Invoke(&stream2_blocker,
&StreamBlocker::MarkConnectionLevelWriteBlocked)));
EXPECT_CALL(*stream2, OnCanWrite())
.WillOnce(DoAll(testing::IgnoreResult(Invoke(CreateFunctor(
&session_, &TestSession::SendLargeFakeData,
&TestSession::SendLargeFakeData,
base::Unretained(&session_),
stream2->id(), 6000))),
Invoke(&stream2_blocker,
&StreamBlocker::MarkConnectionLevelWriteBlocked)));
......@@ -457,13 +459,15 @@ TEST_P(QuicSessionTestServer, TestBatchedWrites) {
// write quota and we move over to stream 4.
EXPECT_CALL(*stream2, OnCanWrite())
.WillOnce(DoAll(testing::IgnoreResult(Invoke(CreateFunctor(
&session_, &TestSession::SendLargeFakeData,
&TestSession::SendLargeFakeData,
base::Unretained(&session_),
stream2->id(), 6000))),
Invoke(&stream2_blocker,
&StreamBlocker::MarkConnectionLevelWriteBlocked)));
EXPECT_CALL(*stream4, OnCanWrite())
.WillOnce(DoAll(testing::IgnoreResult(Invoke(CreateFunctor(
&session_, &TestSession::SendLargeFakeData,
&TestSession::SendLargeFakeData,
base::Unretained(&session_),
stream4->id(), 6000))),
Invoke(&stream4_blocker,
&StreamBlocker::MarkConnectionLevelWriteBlocked)));
......@@ -475,7 +479,8 @@ TEST_P(QuicSessionTestServer, TestBatchedWrites) {
stream6->SetPriority(kHighestPriority);
EXPECT_CALL(*stream4, OnCanWrite())
.WillOnce(DoAll(testing::IgnoreResult(Invoke(CreateFunctor(
&session_, &TestSession::SendLargeFakeData,
&TestSession::SendLargeFakeData,
base::Unretained(&session_),
stream4->id(), 6000))),
Invoke(&stream4_blocker,
&StreamBlocker::MarkConnectionLevelWriteBlocked),
......@@ -483,20 +488,23 @@ TEST_P(QuicSessionTestServer, TestBatchedWrites) {
&StreamBlocker::MarkHighPriorityWriteBlocked)));
EXPECT_CALL(*stream6, OnCanWrite())
.WillOnce(testing::IgnoreResult(Invoke(CreateFunctor(
&session_, &TestSession::SendLargeFakeData, stream4->id(), 6000))));
&TestSession::SendLargeFakeData,
base::Unretained(&session_), stream4->id(), 6000))));
session_.OnCanWrite();
// Stream4 alread did 6k worth of writes, so after doing another 12k it should
// cede and 2 should resume.
EXPECT_CALL(*stream4, OnCanWrite())
.WillOnce(DoAll(testing::IgnoreResult(Invoke(CreateFunctor(
&session_, &TestSession::SendLargeFakeData,
&TestSession::SendLargeFakeData,
base::Unretained(&session_),
stream4->id(), 12000))),
Invoke(&stream4_blocker,
&StreamBlocker::MarkConnectionLevelWriteBlocked)));
EXPECT_CALL(*stream2, OnCanWrite())
.WillOnce(DoAll(testing::IgnoreResult(Invoke(CreateFunctor(
&session_, &TestSession::SendLargeFakeData,
&TestSession::SendLargeFakeData,
base::Unretained(&session_),
stream2->id(), 6000))),
Invoke(&stream2_blocker,
&StreamBlocker::MarkConnectionLevelWriteBlocked)));
......@@ -526,13 +534,18 @@ TEST_P(QuicSessionTestServer, OnCanWriteBundlesStreams) {
.WillRepeatedly(Return(kMaxPacketSize * 10));
EXPECT_CALL(*stream2, OnCanWrite())
.WillOnce(testing::IgnoreResult(Invoke(CreateFunctor(
&session_, &TestSession::SendStreamData, stream2->id()))));
&TestSession::SendStreamData,
base::Unretained(&session_), stream2->id()))));
EXPECT_CALL(*stream4, OnCanWrite())
.WillOnce(testing::IgnoreResult(Invoke(CreateFunctor(
&session_, &TestSession::SendStreamData, stream4->id()))));
&TestSession::SendStreamData,
base::Unretained(&session_),
stream4->id()))));
EXPECT_CALL(*stream6, OnCanWrite())
.WillOnce(testing::IgnoreResult(Invoke(CreateFunctor(
&session_, &TestSession::SendStreamData, stream6->id()))));
&TestSession::SendStreamData,
base::Unretained(&session_),
stream6->id()))));
// Expect that we only send one packet, the writes from different streams
// should be bundled together.
......
......@@ -182,7 +182,8 @@ INSTANTIATE_TEST_CASE_P(QuicStreamSequencerTests,
TEST_P(QuicStreamSequencerTest, RejectOldFrame) {
EXPECT_CALL(stream_, OnDataAvailable())
.WillOnce(testing::Invoke(
CreateFunctor(this, &QuicStreamSequencerTest::ConsumeData, 3)));
CreateFunctor(&QuicStreamSequencerTest::ConsumeData,
base::Unretained(this), 3)));
OnFrame(0, "abc");
......@@ -211,7 +212,8 @@ TEST_P(QuicStreamSequencerTest, RejectBufferedFrame) {
TEST_P(QuicStreamSequencerTest, FullFrameConsumed) {
EXPECT_CALL(stream_, OnDataAvailable())
.WillOnce(testing::Invoke(
CreateFunctor(this, &QuicStreamSequencerTest::ConsumeData, 3)));
CreateFunctor(&QuicStreamSequencerTest::ConsumeData,
base::Unretained(this), 3)));
OnFrame(0, "abc");
EXPECT_EQ(0u, NumBufferedBytes());
......@@ -227,14 +229,16 @@ TEST_P(QuicStreamSequencerTest, BlockedThenFullFrameConsumed) {
EXPECT_CALL(stream_, OnDataAvailable())
.WillOnce(testing::Invoke(
CreateFunctor(this, &QuicStreamSequencerTest::ConsumeData, 3)));
CreateFunctor(&QuicStreamSequencerTest::ConsumeData,
base::Unretained(this), 3)));
sequencer_->SetUnblocked();
EXPECT_EQ(0u, NumBufferedBytes());
EXPECT_EQ(3u, sequencer_->NumBytesConsumed());
EXPECT_CALL(stream_, OnDataAvailable())
.WillOnce(testing::Invoke(
CreateFunctor(this, &QuicStreamSequencerTest::ConsumeData, 3)));
CreateFunctor(&QuicStreamSequencerTest::ConsumeData,
base::Unretained(this), 3)));
EXPECT_FALSE(sequencer_->IsClosed());
OnFinFrame(3, "def");
EXPECT_TRUE(sequencer_->IsClosed());
......@@ -249,7 +253,8 @@ TEST_P(QuicStreamSequencerTest, BlockedThenFullFrameAndFinConsumed) {
EXPECT_CALL(stream_, OnDataAvailable())
.WillOnce(testing::Invoke(
CreateFunctor(this, &QuicStreamSequencerTest::ConsumeData, 3)));
CreateFunctor(&QuicStreamSequencerTest::ConsumeData,
base::Unretained(this), 3)));
EXPECT_FALSE(sequencer_->IsClosed());
sequencer_->SetUnblocked();
EXPECT_TRUE(sequencer_->IsClosed());
......@@ -275,7 +280,8 @@ TEST_P(QuicStreamSequencerTest, EmptyFinFrame) {
TEST_P(QuicStreamSequencerTest, PartialFrameConsumed) {
EXPECT_CALL(stream_, OnDataAvailable())
.WillOnce(testing::Invoke(
CreateFunctor(this, &QuicStreamSequencerTest::ConsumeData, 2)));
CreateFunctor(&QuicStreamSequencerTest::ConsumeData,
base::Unretained(this), 2)));
OnFrame(0, "abc");
EXPECT_EQ(1u, NumBufferedBytes());
......@@ -312,7 +318,8 @@ TEST_P(QuicStreamSequencerTest, OutOfOrderFrameProcessed) {
EXPECT_CALL(stream_, OnDataAvailable())
.WillOnce(testing::Invoke(
CreateFunctor(this, &QuicStreamSequencerTest::ConsumeData, 9)));
CreateFunctor(&QuicStreamSequencerTest::ConsumeData,
base::Unretained(this), 9)));
// Now process all of them at once.
OnFrame(0, "abc");
......@@ -327,7 +334,8 @@ TEST_P(QuicStreamSequencerTest, BasicHalfCloseOrdered) {
EXPECT_CALL(stream_, OnDataAvailable())
.WillOnce(testing::Invoke(
CreateFunctor(this, &QuicStreamSequencerTest::ConsumeData, 3)));
CreateFunctor(&QuicStreamSequencerTest::ConsumeData,
base::Unretained(this), 3)));
OnFinFrame(0, "abc");
EXPECT_EQ(3u, QuicStreamSequencerPeer::GetCloseOffset(sequencer_.get()));
......@@ -340,7 +348,8 @@ TEST_P(QuicStreamSequencerTest, BasicHalfCloseUnorderedWithFlush) {
OnFrame(3, "def");
EXPECT_CALL(stream_, OnDataAvailable())
.WillOnce(testing::Invoke(
CreateFunctor(this, &QuicStreamSequencerTest::ConsumeData, 6)));
CreateFunctor(&QuicStreamSequencerTest::ConsumeData,
base::Unretained(this), 6)));
EXPECT_FALSE(sequencer_->IsClosed());
OnFrame(0, "abc");
EXPECT_TRUE(sequencer_->IsClosed());
......@@ -352,7 +361,8 @@ TEST_P(QuicStreamSequencerTest, BasicHalfUnordered) {
EXPECT_CALL(stream_, OnDataAvailable())
.WillOnce(testing::Invoke(
CreateFunctor(this, &QuicStreamSequencerTest::ConsumeData, 3)));
CreateFunctor(&QuicStreamSequencerTest::ConsumeData,
base::Unretained(this), 3)));
EXPECT_FALSE(sequencer_->IsClosed());
OnFrame(0, "abc");
EXPECT_TRUE(sequencer_->IsClosed());
......
......@@ -132,7 +132,8 @@ TEST_F(It2MeConfirmationDialogProxyTest, Show) {
.WillOnce(
InvokeWithoutArgs(
CreateFunctor(
dialog(), &StubIt2MeConfirmationDialog::ReportResult,
&StubIt2MeConfirmationDialog::ReportResult,
base::Unretained(dialog()),
It2MeConfirmationDialog::Result::CANCEL)));
EXPECT_CALL(callback_target,
......
......@@ -424,7 +424,8 @@ TEST_F(WorkerProcessLauncherTest, Restart) {
EXPECT_CALL(server_listener_, OnChannelConnected(_))
.Times(2)
.WillOnce(InvokeWithoutArgs(CreateFunctor(
this, &WorkerProcessLauncherTest::TerminateWorker,
&WorkerProcessLauncherTest::TerminateWorker,
base::Unretained(this),
CONTROL_C_EXIT)))
.WillOnce(InvokeWithoutArgs(this,
&WorkerProcessLauncherTest::StopWorker));
......@@ -470,7 +471,8 @@ TEST_F(WorkerProcessLauncherTest, PermanentError) {
EXPECT_CALL(server_listener_, OnChannelConnected(_))
.Times(1)
.WillOnce(InvokeWithoutArgs(CreateFunctor(
this, &WorkerProcessLauncherTest::TerminateWorker,
&WorkerProcessLauncherTest::TerminateWorker,
base::Unretained(this),
kMinPermanentErrorExitCode)));
EXPECT_CALL(server_listener_, OnPermanentError(_))
.Times(1)
......@@ -498,7 +500,8 @@ TEST_F(WorkerProcessLauncherTest, Crash) {
EXPECT_CALL(client_listener_, OnCrash(_, _, _))
.Times(1)
.WillOnce(InvokeWithoutArgs(CreateFunctor(
this, &WorkerProcessLauncherTest::TerminateWorker,
&WorkerProcessLauncherTest::TerminateWorker,
base::Unretained(this),
EXCEPTION_BREAKPOINT)));
StartWorker();
......
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment