mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 05:40:42 +01:00

This reverts commit3f87250a4f
. Reason for revert: Downstream is fixed Original change's description: > Revert "Remove RTC_DISALLOW_COPY_AND_ASSIGN usages completely" > > This reverts commit5f0eb93d2a
. > > Reason for revert: Breaks downstream project. I'm going to fix that one and create a reland of this CL after. > > Original change's description: > > Remove RTC_DISALLOW_COPY_AND_ASSIGN usages completely > > > > Bug: webrtc:13555, webrtc:13082 > > Change-Id: Iff2cda6f516739419e97e975e03f77a98f74be03 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/249260 > > Reviewed-by: Harald Alvestrand <hta@webrtc.org> > > Reviewed-by: Artem Titov <titovartem@webrtc.org> > > Commit-Queue: (Daniel.L) Byoungchan Lee <daniel.l@hpcnt.com> > > Cr-Commit-Position: refs/heads/main@{#35805} > > TBR=hta@webrtc.org,titovartem@webrtc.org,daniel.l@hpcnt.com,webrtc-scoped@luci-project-accounts.iam.gserviceaccount.com > > Change-Id: I33d497f1132adfe6d151023195a388d9b7d548f9 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: webrtc:13555, webrtc:13082 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/249364 > Reviewed-by: Artem Titov <titovartem@webrtc.org> > Owners-Override: Artem Titov <titovartem@webrtc.org> > Reviewed-by: Andrey Logvin <landrey@webrtc.org> > Reviewed-by: Björn Terelius <terelius@webrtc.org> > Commit-Queue: Artem Titov <titovartem@webrtc.org> > Cr-Commit-Position: refs/heads/main@{#35807} # Not skipping CQ checks because this is a reland. Bug: webrtc:13555, webrtc:13082 Change-Id: I7ef1ef3b6e3c41b1a96014aa75f003c0fcf33949 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/249365 Reviewed-by: Harald Alvestrand <hta@webrtc.org> Commit-Queue: Artem Titov <titovartem@webrtc.org> Cr-Commit-Position: refs/heads/main@{#35814}
102 lines
3.2 KiB
Text
Executable file
102 lines
3.2 KiB
Text
Executable file
/*
|
|
* Copyright 2014 The WebRTC Project Authors. All rights reserved.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license
|
|
* that can be found in the LICENSE file in the root of the source
|
|
* tree. An additional intellectual property rights grant can be found
|
|
* in the file PATENTS. All contributing project authors may
|
|
* be found in the AUTHORS file in the root of the source tree.
|
|
*/
|
|
|
|
#ifndef RTC_BASE_SIGSLOTTESTER_H_
|
|
#define RTC_BASE_SIGSLOTTESTER_H_
|
|
|
|
// To generate sigslottester.h from sigslottester.h.pump, execute:
|
|
// /home/build/google3/third_party/gtest/scripts/pump.py sigslottester.h.pump
|
|
|
|
|
|
// SigslotTester(s) are utility classes to check if signals owned by an
|
|
// object are being invoked at the right time and with the right arguments.
|
|
// They are meant to be used in tests. Tests must provide "capture" pointers
|
|
// (i.e. address of variables) where the arguments from the signal callback
|
|
// can be stored.
|
|
//
|
|
// Example:
|
|
// /* Some signal */
|
|
// sigslot::signal1<const std::string&> foo;
|
|
//
|
|
// /* We want to monitor foo in some test. Note how signal argument is
|
|
// const std::string&, but capture-type is std::string. Capture type
|
|
// must be type that can be assigned to. */
|
|
// std::string capture;
|
|
// SigslotTester1<const std::string&, std::string> slot(&foo, &capture);
|
|
// foo.emit("hello");
|
|
// EXPECT_EQ(1, slot.callback_count());
|
|
// EXPECT_EQ("hello", capture);
|
|
// /* See unit-tests for more examples */
|
|
|
|
#include "rtc_base/third_party/sigslot/sigslot.h"
|
|
|
|
namespace rtc {
|
|
|
|
// Base version for testing signals that passes no arguments.
|
|
class SigslotTester0 : public sigslot::has_slots<> {
|
|
public:
|
|
explicit SigslotTester0(sigslot::signal0<>* signal) : callback_count_(0) {
|
|
signal->connect(this, &SigslotTester0::OnSignalCallback);
|
|
}
|
|
|
|
SigslotTester0(const SigslotTester0&) = delete;
|
|
SigslotTester0& operator=(const SigslotTester0&) = delete;
|
|
|
|
int callback_count() const { return callback_count_; }
|
|
|
|
private:
|
|
void OnSignalCallback() { callback_count_++; }
|
|
int callback_count_;
|
|
};
|
|
|
|
// Versions below are for testing signals that pass arguments. For all the
|
|
// templates below:
|
|
// - A1-A5 is the type of the argument i in the callback. Signals may and often
|
|
// do use const-references here for efficiency.
|
|
// - C1-C5 is the type of the variable to capture argument i. These should be
|
|
// non-const value types suitable for use as lvalues.
|
|
|
|
$var n = 5
|
|
$range i 1..n
|
|
$for i [[
|
|
$range j 1..i
|
|
|
|
template <$for j , [[class A$j]], $for j , [[class C$j]]>
|
|
class SigslotTester$i : public sigslot::has_slots<> {
|
|
public:
|
|
SigslotTester$i(sigslot::signal$i<$for j , [[A$j]]>* signal,
|
|
$for j , [[C$j* capture$j]])
|
|
: callback_count_(0),
|
|
$for j , [[capture$j[[]]_(capture$j)]] {
|
|
signal->connect(this, &SigslotTester$i::OnSignalCallback);
|
|
}
|
|
|
|
SigslotTester$i(const SigslotTester$i&) = delete;
|
|
SigslotTester$i& operator=(const SigslotTester$i&) = delete;
|
|
|
|
int callback_count() const { return callback_count_; }
|
|
|
|
private:
|
|
void OnSignalCallback($for j , [[A$j arg$j]]) {
|
|
callback_count_++;$for j [[
|
|
|
|
*capture$j[[]]_ = arg$j;]]
|
|
|
|
}
|
|
|
|
int callback_count_;$for j [[
|
|
|
|
C$j* capture$j[[]]_;]]
|
|
};
|
|
|
|
]]
|
|
} // namespace rtc
|
|
|
|
#endif // RTC_BASE_SIGSLOTTESTER_H_
|