xref: /aosp_15_r20/external/webrtc/pc/proxy_unittest.cc (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1*d9f75844SAndroid Build Coastguard Worker /*
2*d9f75844SAndroid Build Coastguard Worker  *  Copyright 2013 The WebRTC project authors. All Rights Reserved.
3*d9f75844SAndroid Build Coastguard Worker  *
4*d9f75844SAndroid Build Coastguard Worker  *  Use of this source code is governed by a BSD-style license
5*d9f75844SAndroid Build Coastguard Worker  *  that can be found in the LICENSE file in the root of the source
6*d9f75844SAndroid Build Coastguard Worker  *  tree. An additional intellectual property rights grant can be found
7*d9f75844SAndroid Build Coastguard Worker  *  in the file PATENTS.  All contributing project authors may
8*d9f75844SAndroid Build Coastguard Worker  *  be found in the AUTHORS file in the root of the source tree.
9*d9f75844SAndroid Build Coastguard Worker  */
10*d9f75844SAndroid Build Coastguard Worker 
11*d9f75844SAndroid Build Coastguard Worker #include "pc/proxy.h"
12*d9f75844SAndroid Build Coastguard Worker 
13*d9f75844SAndroid Build Coastguard Worker #include <memory>
14*d9f75844SAndroid Build Coastguard Worker #include <string>
15*d9f75844SAndroid Build Coastguard Worker 
16*d9f75844SAndroid Build Coastguard Worker #include "api/make_ref_counted.h"
17*d9f75844SAndroid Build Coastguard Worker #include "rtc_base/gunit.h"
18*d9f75844SAndroid Build Coastguard Worker #include "rtc_base/ref_count.h"
19*d9f75844SAndroid Build Coastguard Worker #include "test/gmock.h"
20*d9f75844SAndroid Build Coastguard Worker 
21*d9f75844SAndroid Build Coastguard Worker using ::testing::_;
22*d9f75844SAndroid Build Coastguard Worker using ::testing::DoAll;
23*d9f75844SAndroid Build Coastguard Worker using ::testing::Exactly;
24*d9f75844SAndroid Build Coastguard Worker using ::testing::InvokeWithoutArgs;
25*d9f75844SAndroid Build Coastguard Worker using ::testing::Return;
26*d9f75844SAndroid Build Coastguard Worker 
27*d9f75844SAndroid Build Coastguard Worker namespace webrtc {
28*d9f75844SAndroid Build Coastguard Worker 
29*d9f75844SAndroid Build Coastguard Worker // Interface used for testing here.
30*d9f75844SAndroid Build Coastguard Worker class FakeInterface : public rtc::RefCountInterface {
31*d9f75844SAndroid Build Coastguard Worker  public:
32*d9f75844SAndroid Build Coastguard Worker   virtual void VoidMethod0() = 0;
33*d9f75844SAndroid Build Coastguard Worker   virtual std::string Method0() = 0;
34*d9f75844SAndroid Build Coastguard Worker   virtual std::string ConstMethod0() const = 0;
35*d9f75844SAndroid Build Coastguard Worker   virtual std::string Method1(std::string s) = 0;
36*d9f75844SAndroid Build Coastguard Worker   virtual std::string ConstMethod1(std::string s) const = 0;
37*d9f75844SAndroid Build Coastguard Worker   virtual std::string Method2(std::string s1, std::string s2) = 0;
38*d9f75844SAndroid Build Coastguard Worker 
39*d9f75844SAndroid Build Coastguard Worker  protected:
~FakeInterface()40*d9f75844SAndroid Build Coastguard Worker   virtual ~FakeInterface() {}
41*d9f75844SAndroid Build Coastguard Worker };
42*d9f75844SAndroid Build Coastguard Worker 
43*d9f75844SAndroid Build Coastguard Worker // Implementation of the test interface.
44*d9f75844SAndroid Build Coastguard Worker class Fake : public FakeInterface {
45*d9f75844SAndroid Build Coastguard Worker  public:
Create()46*d9f75844SAndroid Build Coastguard Worker   static rtc::scoped_refptr<Fake> Create() {
47*d9f75844SAndroid Build Coastguard Worker     return rtc::make_ref_counted<Fake>();
48*d9f75844SAndroid Build Coastguard Worker   }
49*d9f75844SAndroid Build Coastguard Worker   // Used to verify destructor is called on the correct thread.
50*d9f75844SAndroid Build Coastguard Worker   MOCK_METHOD(void, Destroy, ());
51*d9f75844SAndroid Build Coastguard Worker 
52*d9f75844SAndroid Build Coastguard Worker   MOCK_METHOD(void, VoidMethod0, (), (override));
53*d9f75844SAndroid Build Coastguard Worker   MOCK_METHOD(std::string, Method0, (), (override));
54*d9f75844SAndroid Build Coastguard Worker   MOCK_METHOD(std::string, ConstMethod0, (), (const, override));
55*d9f75844SAndroid Build Coastguard Worker 
56*d9f75844SAndroid Build Coastguard Worker   MOCK_METHOD(std::string, Method1, (std::string), (override));
57*d9f75844SAndroid Build Coastguard Worker   MOCK_METHOD(std::string, ConstMethod1, (std::string), (const, override));
58*d9f75844SAndroid Build Coastguard Worker 
59*d9f75844SAndroid Build Coastguard Worker   MOCK_METHOD(std::string, Method2, (std::string, std::string), (override));
60*d9f75844SAndroid Build Coastguard Worker 
61*d9f75844SAndroid Build Coastguard Worker  protected:
Fake()62*d9f75844SAndroid Build Coastguard Worker   Fake() {}
~Fake()63*d9f75844SAndroid Build Coastguard Worker   ~Fake() { Destroy(); }
64*d9f75844SAndroid Build Coastguard Worker };
65*d9f75844SAndroid Build Coastguard Worker 
66*d9f75844SAndroid Build Coastguard Worker // Proxies for the test interface.
67*d9f75844SAndroid Build Coastguard Worker BEGIN_PROXY_MAP(Fake)
68*d9f75844SAndroid Build Coastguard Worker PROXY_SECONDARY_THREAD_DESTRUCTOR()
69*d9f75844SAndroid Build Coastguard Worker PROXY_METHOD0(void, VoidMethod0)
70*d9f75844SAndroid Build Coastguard Worker PROXY_METHOD0(std::string, Method0)
71*d9f75844SAndroid Build Coastguard Worker PROXY_CONSTMETHOD0(std::string, ConstMethod0)
72*d9f75844SAndroid Build Coastguard Worker PROXY_SECONDARY_METHOD1(std::string, Method1, std::string)
73*d9f75844SAndroid Build Coastguard Worker PROXY_CONSTMETHOD1(std::string, ConstMethod1, std::string)
74*d9f75844SAndroid Build Coastguard Worker PROXY_SECONDARY_METHOD2(std::string, Method2, std::string, std::string)
75*d9f75844SAndroid Build Coastguard Worker END_PROXY_MAP(Fake)
76*d9f75844SAndroid Build Coastguard Worker 
77*d9f75844SAndroid Build Coastguard Worker // Preprocessor hack to get a proxy class a name different than FakeProxy.
78*d9f75844SAndroid Build Coastguard Worker #define FakeProxy FakeSignalingProxy
79*d9f75844SAndroid Build Coastguard Worker #define FakeProxyWithInternal FakeSignalingProxyWithInternal
80*d9f75844SAndroid Build Coastguard Worker BEGIN_PRIMARY_PROXY_MAP(Fake)
81*d9f75844SAndroid Build Coastguard Worker PROXY_PRIMARY_THREAD_DESTRUCTOR()
82*d9f75844SAndroid Build Coastguard Worker PROXY_METHOD0(void, VoidMethod0)
83*d9f75844SAndroid Build Coastguard Worker PROXY_METHOD0(std::string, Method0)
84*d9f75844SAndroid Build Coastguard Worker PROXY_CONSTMETHOD0(std::string, ConstMethod0)
85*d9f75844SAndroid Build Coastguard Worker PROXY_METHOD1(std::string, Method1, std::string)
86*d9f75844SAndroid Build Coastguard Worker PROXY_CONSTMETHOD1(std::string, ConstMethod1, std::string)
87*d9f75844SAndroid Build Coastguard Worker PROXY_METHOD2(std::string, Method2, std::string, std::string)
88*d9f75844SAndroid Build Coastguard Worker END_PROXY_MAP(Fake)
89*d9f75844SAndroid Build Coastguard Worker #undef FakeProxy
90*d9f75844SAndroid Build Coastguard Worker 
91*d9f75844SAndroid Build Coastguard Worker class SignalingProxyTest : public ::testing::Test {
92*d9f75844SAndroid Build Coastguard Worker  public:
93*d9f75844SAndroid Build Coastguard Worker   // Checks that the functions are called on the right thread.
CheckSignalingThread()94*d9f75844SAndroid Build Coastguard Worker   void CheckSignalingThread() { EXPECT_TRUE(signaling_thread_->IsCurrent()); }
95*d9f75844SAndroid Build Coastguard Worker 
96*d9f75844SAndroid Build Coastguard Worker  protected:
SetUp()97*d9f75844SAndroid Build Coastguard Worker   void SetUp() override {
98*d9f75844SAndroid Build Coastguard Worker     signaling_thread_ = rtc::Thread::Create();
99*d9f75844SAndroid Build Coastguard Worker     ASSERT_TRUE(signaling_thread_->Start());
100*d9f75844SAndroid Build Coastguard Worker     fake_ = Fake::Create();
101*d9f75844SAndroid Build Coastguard Worker     fake_signaling_proxy_ =
102*d9f75844SAndroid Build Coastguard Worker         FakeSignalingProxy::Create(signaling_thread_.get(), fake_);
103*d9f75844SAndroid Build Coastguard Worker   }
104*d9f75844SAndroid Build Coastguard Worker 
105*d9f75844SAndroid Build Coastguard Worker  protected:
106*d9f75844SAndroid Build Coastguard Worker   std::unique_ptr<rtc::Thread> signaling_thread_;
107*d9f75844SAndroid Build Coastguard Worker   rtc::scoped_refptr<FakeInterface> fake_signaling_proxy_;
108*d9f75844SAndroid Build Coastguard Worker   rtc::scoped_refptr<Fake> fake_;
109*d9f75844SAndroid Build Coastguard Worker };
110*d9f75844SAndroid Build Coastguard Worker 
TEST_F(SignalingProxyTest,SignalingThreadDestructor)111*d9f75844SAndroid Build Coastguard Worker TEST_F(SignalingProxyTest, SignalingThreadDestructor) {
112*d9f75844SAndroid Build Coastguard Worker   EXPECT_CALL(*fake_, Destroy())
113*d9f75844SAndroid Build Coastguard Worker       .Times(Exactly(1))
114*d9f75844SAndroid Build Coastguard Worker       .WillOnce(
115*d9f75844SAndroid Build Coastguard Worker           InvokeWithoutArgs(this, &SignalingProxyTest::CheckSignalingThread));
116*d9f75844SAndroid Build Coastguard Worker   fake_ = nullptr;
117*d9f75844SAndroid Build Coastguard Worker   fake_signaling_proxy_ = nullptr;
118*d9f75844SAndroid Build Coastguard Worker }
119*d9f75844SAndroid Build Coastguard Worker 
TEST_F(SignalingProxyTest,VoidMethod0)120*d9f75844SAndroid Build Coastguard Worker TEST_F(SignalingProxyTest, VoidMethod0) {
121*d9f75844SAndroid Build Coastguard Worker   EXPECT_CALL(*fake_, VoidMethod0())
122*d9f75844SAndroid Build Coastguard Worker       .Times(Exactly(1))
123*d9f75844SAndroid Build Coastguard Worker       .WillOnce(
124*d9f75844SAndroid Build Coastguard Worker           InvokeWithoutArgs(this, &SignalingProxyTest::CheckSignalingThread));
125*d9f75844SAndroid Build Coastguard Worker   fake_signaling_proxy_->VoidMethod0();
126*d9f75844SAndroid Build Coastguard Worker }
127*d9f75844SAndroid Build Coastguard Worker 
TEST_F(SignalingProxyTest,Method0)128*d9f75844SAndroid Build Coastguard Worker TEST_F(SignalingProxyTest, Method0) {
129*d9f75844SAndroid Build Coastguard Worker   EXPECT_CALL(*fake_, Method0())
130*d9f75844SAndroid Build Coastguard Worker       .Times(Exactly(1))
131*d9f75844SAndroid Build Coastguard Worker       .WillOnce(DoAll(
132*d9f75844SAndroid Build Coastguard Worker           InvokeWithoutArgs(this, &SignalingProxyTest::CheckSignalingThread),
133*d9f75844SAndroid Build Coastguard Worker           Return("Method0")));
134*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("Method0", fake_signaling_proxy_->Method0());
135*d9f75844SAndroid Build Coastguard Worker }
136*d9f75844SAndroid Build Coastguard Worker 
TEST_F(SignalingProxyTest,ConstMethod0)137*d9f75844SAndroid Build Coastguard Worker TEST_F(SignalingProxyTest, ConstMethod0) {
138*d9f75844SAndroid Build Coastguard Worker   EXPECT_CALL(*fake_, ConstMethod0())
139*d9f75844SAndroid Build Coastguard Worker       .Times(Exactly(1))
140*d9f75844SAndroid Build Coastguard Worker       .WillOnce(DoAll(
141*d9f75844SAndroid Build Coastguard Worker           InvokeWithoutArgs(this, &SignalingProxyTest::CheckSignalingThread),
142*d9f75844SAndroid Build Coastguard Worker           Return("ConstMethod0")));
143*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("ConstMethod0", fake_signaling_proxy_->ConstMethod0());
144*d9f75844SAndroid Build Coastguard Worker }
145*d9f75844SAndroid Build Coastguard Worker 
TEST_F(SignalingProxyTest,Method1)146*d9f75844SAndroid Build Coastguard Worker TEST_F(SignalingProxyTest, Method1) {
147*d9f75844SAndroid Build Coastguard Worker   const std::string arg1 = "arg1";
148*d9f75844SAndroid Build Coastguard Worker   EXPECT_CALL(*fake_, Method1(arg1))
149*d9f75844SAndroid Build Coastguard Worker       .Times(Exactly(1))
150*d9f75844SAndroid Build Coastguard Worker       .WillOnce(DoAll(
151*d9f75844SAndroid Build Coastguard Worker           InvokeWithoutArgs(this, &SignalingProxyTest::CheckSignalingThread),
152*d9f75844SAndroid Build Coastguard Worker           Return("Method1")));
153*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("Method1", fake_signaling_proxy_->Method1(arg1));
154*d9f75844SAndroid Build Coastguard Worker }
155*d9f75844SAndroid Build Coastguard Worker 
TEST_F(SignalingProxyTest,ConstMethod1)156*d9f75844SAndroid Build Coastguard Worker TEST_F(SignalingProxyTest, ConstMethod1) {
157*d9f75844SAndroid Build Coastguard Worker   const std::string arg1 = "arg1";
158*d9f75844SAndroid Build Coastguard Worker   EXPECT_CALL(*fake_, ConstMethod1(arg1))
159*d9f75844SAndroid Build Coastguard Worker       .Times(Exactly(1))
160*d9f75844SAndroid Build Coastguard Worker       .WillOnce(DoAll(
161*d9f75844SAndroid Build Coastguard Worker           InvokeWithoutArgs(this, &SignalingProxyTest::CheckSignalingThread),
162*d9f75844SAndroid Build Coastguard Worker           Return("ConstMethod1")));
163*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("ConstMethod1", fake_signaling_proxy_->ConstMethod1(arg1));
164*d9f75844SAndroid Build Coastguard Worker }
165*d9f75844SAndroid Build Coastguard Worker 
TEST_F(SignalingProxyTest,Method2)166*d9f75844SAndroid Build Coastguard Worker TEST_F(SignalingProxyTest, Method2) {
167*d9f75844SAndroid Build Coastguard Worker   const std::string arg1 = "arg1";
168*d9f75844SAndroid Build Coastguard Worker   const std::string arg2 = "arg2";
169*d9f75844SAndroid Build Coastguard Worker   EXPECT_CALL(*fake_, Method2(arg1, arg2))
170*d9f75844SAndroid Build Coastguard Worker       .Times(Exactly(1))
171*d9f75844SAndroid Build Coastguard Worker       .WillOnce(DoAll(
172*d9f75844SAndroid Build Coastguard Worker           InvokeWithoutArgs(this, &SignalingProxyTest::CheckSignalingThread),
173*d9f75844SAndroid Build Coastguard Worker           Return("Method2")));
174*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("Method2", fake_signaling_proxy_->Method2(arg1, arg2));
175*d9f75844SAndroid Build Coastguard Worker }
176*d9f75844SAndroid Build Coastguard Worker 
177*d9f75844SAndroid Build Coastguard Worker class ProxyTest : public ::testing::Test {
178*d9f75844SAndroid Build Coastguard Worker  public:
179*d9f75844SAndroid Build Coastguard Worker   // Checks that the functions are called on the right thread.
CheckSignalingThread()180*d9f75844SAndroid Build Coastguard Worker   void CheckSignalingThread() { EXPECT_TRUE(signaling_thread_->IsCurrent()); }
CheckWorkerThread()181*d9f75844SAndroid Build Coastguard Worker   void CheckWorkerThread() { EXPECT_TRUE(worker_thread_->IsCurrent()); }
182*d9f75844SAndroid Build Coastguard Worker 
183*d9f75844SAndroid Build Coastguard Worker  protected:
SetUp()184*d9f75844SAndroid Build Coastguard Worker   void SetUp() override {
185*d9f75844SAndroid Build Coastguard Worker     signaling_thread_ = rtc::Thread::Create();
186*d9f75844SAndroid Build Coastguard Worker     worker_thread_ = rtc::Thread::Create();
187*d9f75844SAndroid Build Coastguard Worker     ASSERT_TRUE(signaling_thread_->Start());
188*d9f75844SAndroid Build Coastguard Worker     ASSERT_TRUE(worker_thread_->Start());
189*d9f75844SAndroid Build Coastguard Worker     fake_ = Fake::Create();
190*d9f75844SAndroid Build Coastguard Worker     fake_proxy_ =
191*d9f75844SAndroid Build Coastguard Worker         FakeProxy::Create(signaling_thread_.get(), worker_thread_.get(), fake_);
192*d9f75844SAndroid Build Coastguard Worker   }
193*d9f75844SAndroid Build Coastguard Worker 
194*d9f75844SAndroid Build Coastguard Worker  protected:
195*d9f75844SAndroid Build Coastguard Worker   std::unique_ptr<rtc::Thread> signaling_thread_;
196*d9f75844SAndroid Build Coastguard Worker   std::unique_ptr<rtc::Thread> worker_thread_;
197*d9f75844SAndroid Build Coastguard Worker   rtc::scoped_refptr<FakeInterface> fake_proxy_;
198*d9f75844SAndroid Build Coastguard Worker   rtc::scoped_refptr<Fake> fake_;
199*d9f75844SAndroid Build Coastguard Worker };
200*d9f75844SAndroid Build Coastguard Worker 
TEST_F(ProxyTest,WorkerThreadDestructor)201*d9f75844SAndroid Build Coastguard Worker TEST_F(ProxyTest, WorkerThreadDestructor) {
202*d9f75844SAndroid Build Coastguard Worker   EXPECT_CALL(*fake_, Destroy())
203*d9f75844SAndroid Build Coastguard Worker       .Times(Exactly(1))
204*d9f75844SAndroid Build Coastguard Worker       .WillOnce(InvokeWithoutArgs(this, &ProxyTest::CheckWorkerThread));
205*d9f75844SAndroid Build Coastguard Worker   fake_ = nullptr;
206*d9f75844SAndroid Build Coastguard Worker   fake_proxy_ = nullptr;
207*d9f75844SAndroid Build Coastguard Worker }
208*d9f75844SAndroid Build Coastguard Worker 
TEST_F(ProxyTest,VoidMethod0)209*d9f75844SAndroid Build Coastguard Worker TEST_F(ProxyTest, VoidMethod0) {
210*d9f75844SAndroid Build Coastguard Worker   EXPECT_CALL(*fake_, VoidMethod0())
211*d9f75844SAndroid Build Coastguard Worker       .Times(Exactly(1))
212*d9f75844SAndroid Build Coastguard Worker       .WillOnce(InvokeWithoutArgs(this, &ProxyTest::CheckSignalingThread));
213*d9f75844SAndroid Build Coastguard Worker   fake_proxy_->VoidMethod0();
214*d9f75844SAndroid Build Coastguard Worker }
215*d9f75844SAndroid Build Coastguard Worker 
TEST_F(ProxyTest,Method0)216*d9f75844SAndroid Build Coastguard Worker TEST_F(ProxyTest, Method0) {
217*d9f75844SAndroid Build Coastguard Worker   EXPECT_CALL(*fake_, Method0())
218*d9f75844SAndroid Build Coastguard Worker       .Times(Exactly(1))
219*d9f75844SAndroid Build Coastguard Worker       .WillOnce(DoAll(InvokeWithoutArgs(this, &ProxyTest::CheckSignalingThread),
220*d9f75844SAndroid Build Coastguard Worker                       Return("Method0")));
221*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("Method0", fake_proxy_->Method0());
222*d9f75844SAndroid Build Coastguard Worker }
223*d9f75844SAndroid Build Coastguard Worker 
TEST_F(ProxyTest,ConstMethod0)224*d9f75844SAndroid Build Coastguard Worker TEST_F(ProxyTest, ConstMethod0) {
225*d9f75844SAndroid Build Coastguard Worker   EXPECT_CALL(*fake_, ConstMethod0())
226*d9f75844SAndroid Build Coastguard Worker       .Times(Exactly(1))
227*d9f75844SAndroid Build Coastguard Worker       .WillOnce(DoAll(InvokeWithoutArgs(this, &ProxyTest::CheckSignalingThread),
228*d9f75844SAndroid Build Coastguard Worker                       Return("ConstMethod0")));
229*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("ConstMethod0", fake_proxy_->ConstMethod0());
230*d9f75844SAndroid Build Coastguard Worker }
231*d9f75844SAndroid Build Coastguard Worker 
TEST_F(ProxyTest,WorkerMethod1)232*d9f75844SAndroid Build Coastguard Worker TEST_F(ProxyTest, WorkerMethod1) {
233*d9f75844SAndroid Build Coastguard Worker   const std::string arg1 = "arg1";
234*d9f75844SAndroid Build Coastguard Worker   EXPECT_CALL(*fake_, Method1(arg1))
235*d9f75844SAndroid Build Coastguard Worker       .Times(Exactly(1))
236*d9f75844SAndroid Build Coastguard Worker       .WillOnce(DoAll(InvokeWithoutArgs(this, &ProxyTest::CheckWorkerThread),
237*d9f75844SAndroid Build Coastguard Worker                       Return("Method1")));
238*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("Method1", fake_proxy_->Method1(arg1));
239*d9f75844SAndroid Build Coastguard Worker }
240*d9f75844SAndroid Build Coastguard Worker 
TEST_F(ProxyTest,ConstMethod1)241*d9f75844SAndroid Build Coastguard Worker TEST_F(ProxyTest, ConstMethod1) {
242*d9f75844SAndroid Build Coastguard Worker   const std::string arg1 = "arg1";
243*d9f75844SAndroid Build Coastguard Worker   EXPECT_CALL(*fake_, ConstMethod1(arg1))
244*d9f75844SAndroid Build Coastguard Worker       .Times(Exactly(1))
245*d9f75844SAndroid Build Coastguard Worker       .WillOnce(DoAll(InvokeWithoutArgs(this, &ProxyTest::CheckSignalingThread),
246*d9f75844SAndroid Build Coastguard Worker                       Return("ConstMethod1")));
247*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("ConstMethod1", fake_proxy_->ConstMethod1(arg1));
248*d9f75844SAndroid Build Coastguard Worker }
249*d9f75844SAndroid Build Coastguard Worker 
TEST_F(ProxyTest,WorkerMethod2)250*d9f75844SAndroid Build Coastguard Worker TEST_F(ProxyTest, WorkerMethod2) {
251*d9f75844SAndroid Build Coastguard Worker   const std::string arg1 = "arg1";
252*d9f75844SAndroid Build Coastguard Worker   const std::string arg2 = "arg2";
253*d9f75844SAndroid Build Coastguard Worker   EXPECT_CALL(*fake_, Method2(arg1, arg2))
254*d9f75844SAndroid Build Coastguard Worker       .Times(Exactly(1))
255*d9f75844SAndroid Build Coastguard Worker       .WillOnce(DoAll(InvokeWithoutArgs(this, &ProxyTest::CheckWorkerThread),
256*d9f75844SAndroid Build Coastguard Worker                       Return("Method2")));
257*d9f75844SAndroid Build Coastguard Worker   EXPECT_EQ("Method2", fake_proxy_->Method2(arg1, arg2));
258*d9f75844SAndroid Build Coastguard Worker }
259*d9f75844SAndroid Build Coastguard Worker 
260*d9f75844SAndroid Build Coastguard Worker }  // namespace webrtc
261