416 Commits

Author SHA1 Message Date
guoweis
318166bed7 Revert of Convert internal representation of Srtp cryptos from string to int. (patchset #10 id:180001 of https://codereview.webrtc.org/1416673006/ )
Reason for revert:
Broke chromium fyi build.

Original issue's description:
> Convert internal representation of Srtp cryptos from string to int.
>
> Note that the coversion from int to string happens in 3 places
> 1) SDP layer from int to external names. mediasession.cc GetSupportedSuiteNames.
> 2) for SSL_CTX_set_tlsext_use_srtp(), converting from int to internal names.
> 3) stats collection also needs external names.
>
> External names are like AES_CM_128_HMAC_SHA1_80, specified in sslstreamadapter.cc.
> Internal names are like SRTP_AES128_CM_SHA1_80, specified in opensslstreamadapter.cc.
>
> The conversion from string to int happens in one place only, SDP layer, SrtpFilter::ApplyParams().
>
> BUG=webrtc:5043
>
> Committed: https://crrev.com/2764e1027a08a5543e04b854a27a520801faf6eb
> Cr-Commit-Position: refs/heads/master@{#10701}

TBR=juberti@webrtc.org,pthatcher@webrtc.org,juberti@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:5043

Review URL: https://codereview.webrtc.org/1455233005

Cr-Commit-Position: refs/heads/master@{#10702}
2015-11-19 03:03:46 +00:00
guoweis
2764e1027a Convert internal representation of Srtp cryptos from string to int.
Note that the coversion from int to string happens in 3 places
1) SDP layer from int to external names. mediasession.cc GetSupportedSuiteNames.
2) for SSL_CTX_set_tlsext_use_srtp(), converting from int to internal names.
3) stats collection also needs external names.

External names are like AES_CM_128_HMAC_SHA1_80, specified in sslstreamadapter.cc.
Internal names are like SRTP_AES128_CM_SHA1_80, specified in opensslstreamadapter.cc.

The conversion from string to int happens in one place only, SDP layer, SrtpFilter::ApplyParams().

BUG=webrtc:5043

Review URL: https://codereview.webrtc.org/1416673006

Cr-Commit-Position: refs/heads/master@{#10701}
2015-11-19 02:02:40 +00:00
davidben
c073615d56 Update references to TLS1_CK_ECDHE_RSA_CHACHA20_POLY1305, etc.
In preparation for implementing the standardized variant of CHACHA20_POLY1305
(it changed slightly in the standardization process),
TLS1_CK_ECDHE_RSA_CHACHA20_POLY1305 and TLS1_CK_ECDHE_ECDSA_CHACHA20_POLY1305
were renamed to have an _OLD suffix with compatibility unsuffixed #defines
temporarily available.

Update references to include the _OLD suffixed ones. Once we've cycled through
the few consumers of the unsuffixed names (just WebRTC and QUIC), the unsuffixed
names can refer to the to-be-implemented standardized variant and eventually
the draft version will be removed.

(This has no effect on upstream OpenSSL compatibility as OpenSSL never defined
these symbols to begin with. Though probably they will once standardization is
done.)

BUG=none

Review URL: https://codereview.webrtc.org/1412803010

Cr-Commit-Position: refs/heads/master@{#10681}
2015-11-17 20:58:17 +00:00
henrika
fd614c2149 Adding thread timeout for audio recorer thread in Java
BUG=NONE

Review URL: https://codereview.webrtc.org/1444313002

Cr-Commit-Position: refs/heads/master@{#10671}
2015-11-17 12:28:33 +00:00
pbos
3c12f4dadb Revert of Create rtc::AtomicInt POD struct. (patchset #12 id:220001 of https://codereview.webrtc.org/1420043008/ )
Reason for revert:
Caused static initializers.

BUG=chromium:556866
TBR=tommi@webrtc.org

Original issue's description:
> Create rtc::AtomicInt POD struct.
>
> Prevents accidental non-atomic reads, increments and stores since
> "volatile int" doesn't enforce atomic usage.
>
> BUG=
> R=kwiberg@webrtc.org, tommi@webrtc.org
>
> Committed: https://crrev.com/b27f590ece487819c3d1fda400315e582fb975b6
> Cr-Commit-Position: refs/heads/master@{#10657}

TBR=kwiberg@webrtc.org,tommi@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

Review URL: https://codereview.webrtc.org/1453093002

Cr-Commit-Position: refs/heads/master@{#10669}
2015-11-17 11:21:07 +00:00
pbos
b27f590ece Create rtc::AtomicInt POD struct.
Prevents accidental non-atomic reads, increments and stores since
"volatile int" doesn't enforce atomic usage.

BUG=
R=kwiberg@webrtc.org, tommi@webrtc.org

Review URL: https://codereview.webrtc.org/1420043008

Cr-Commit-Position: refs/heads/master@{#10657}
2015-11-16 19:03:06 +00:00
nisse
d9b75bef5d Fix a data race in the thread unit tests.
The flag used in thread_unittest.cc:FunctorB is subject to a (mostly
harmless) data race. In a tsan build, reproduce using

  out/Release/rtc_unittests --gtest_filter=AsyncInvokeTest.FireAndForget

There are additional tsan warnings, not all deterministic, when
running all the rtc_unittets: Some data races related to destructors,
and a locking-order-inversion warning. Hence applying this patch does
not make the unit tests tsan-clean.

I should also add that this is my very first cl, so I'm not at all
familiar with the process.

Review URL: https://codereview.webrtc.org/1439613004

Cr-Commit-Position: refs/heads/master@{#10645}
2015-11-16 08:54:10 +00:00
tfarina
fa5d0dbd1e cleanup: get rid of basicdefs.h include
The ARRAY_SIZE macro it defines is not used anymore, as all the usages
were converted to arraysize macro from arraysize.h.

BUG=None
R=tommi@webrtc.org

Review URL: https://codereview.webrtc.org/1443273002

Cr-Commit-Position: refs/heads/master@{#10640}
2015-11-13 22:37:43 +00:00
Guo-wei Shieh
e03cab94c1 When running this code in chromium on a machine with IPv6 disabled, the RTC_DCHECK fails and in release build, it could leak to further crash in chromium's rtc_peer_connection_hanlder.cc.
Here is the right fix.

BUG=webrtc:5061
R=pthatcher@google.com
TBR=pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/1437933002 .

Cr-Commit-Position: refs/heads/master@{#10607}
2015-11-11 19:11:28 +00:00
tfarina
5237aaf243 Convert usage of ARRAY_SIZE to arraysize.
ARRAY_SIZE is the old version of arraysize and does not cover
all the cases in C++, arraysize is a copy of Chromium's
version and thus have wider coverage.

BUG=None
R=tommi@webrtc.org

Review URL: https://codereview.webrtc.org/1405023016

Cr-Commit-Position: refs/heads/master@{#10594}
2015-11-11 07:44:39 +00:00
Tim Psiaki
ad13d2f817 Round Rate computations from RateTracker.
BUG=534221
R=asapersson@webrtc.org, pbos@webrtc.org, pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/1410533004 .

Cr-Commit-Position: refs/heads/master@{#10592}
2015-11-11 00:34:58 +00:00
Guo-wei Shieh
9af97f8910 WebRTC should generate default private address even when adapter enumeration is disabled.
Introduce a DefaultAddressProvider such that rtc::Network can't access other part of NetworkManager.

This also removes the hack of generating the loopback address. The dependency has been removed by https://codereview.chromium.org/1417023003/

BUG=webrtc:5061
R=pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/1411253008 .

Cr-Commit-Position: refs/heads/master@{#10590}
2015-11-10 22:47:49 +00:00
Karl Wiberg
be57983f4b Rename Maybe to Optional
And add examples of good and bad usage to the documentation.

R=aluebs@webrtc.org, henrik.lundin@webrtc.org, pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/1432553007 .

Cr-Commit-Position: refs/heads/master@{#10588}
2015-11-10 21:34:32 +00:00
brucedawson
952892a28a Fix a 64-bit pointer truncation bug found by VC++ 2015
When converting from void* to unsigned long long it is dangerous to go
through unsigned long because for VC++ 64-bit builds this will be 32
bits. When casting a pointer to an integral type the safest type to
choose for the integral cast is always intptr_t or uintptr_t.

BUG=440500
NOPRESUBMIT=true

Review URL: https://codereview.webrtc.org/1437433002

Cr-Commit-Position: refs/heads/master@{#10569}
2015-11-10 06:52:00 +00:00
kwiberg
288886b2ec Pass audio to AudioEncoder::Encode() in an ArrayView
Instead of in separate pointer and size arguments.

Review URL: https://codereview.webrtc.org/1418423010

Cr-Commit-Position: refs/heads/master@{#10535}
2015-11-06 09:21:39 +00:00
noahric
c21f0c04cc Remove WEBRTC_ANDROID from hardcoded gtest relative path usage.
BUG=

Review URL: https://codereview.webrtc.org/1429693005

Cr-Commit-Position: refs/heads/master@{#10501}
2015-11-04 07:47:46 +00:00
tfarina
20a3461908 Remove deprecated IsUnresolved() method from SocketAddress API.
This patch removes IsUnresolved() method and update the clients to use
IsUnresolvedIP() instead.

BUG=None
R=perkj@webrtc.org
TBR=glaznev@webrtc.org

Review URL: https://codereview.webrtc.org/1414793006

Cr-Commit-Position: refs/heads/master@{#10487}
2015-11-03 00:20:28 +00:00
Tommi
e502bbe138 Update webrtc/base/common.h after recent _DEBUG->!NDEBUG change.
R=tfarina@chromium.org
TBR=tfarina@chromium.org
BUG=

Review URL: https://codereview.webrtc.org/1410113007 .

Cr-Commit-Position: refs/heads/master@{#10470}
2015-10-31 21:41:44 +00:00
tfarina
a41ab9326c Switch usage of _DEBUG macro to NDEBUG.
http://stackoverflow.com/a/29253284/5237416

BUG=None
R=tommi@webrtc.org
NOPRESUBMIT=true

Review URL: https://codereview.webrtc.org/1429513004

Cr-Commit-Position: refs/heads/master@{#10468}
2015-10-30 23:08:54 +00:00
Henrik Kjellander
0be3e040f6 Disable PhysicalSocketTest.TestUdpReadyToSendIPv4 on Android.
The test didn't previously run on Android bots, but was enabled by
mistake in https://codereview.webrtc.org/1426643003/

It used to be long to the rtc_unittests target, which also don't run
on Android unfortunately. For now, let's just disable this one test
on Android to get the bots go green.

BUG=4364
TBR=pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/1419033007 .

Cr-Commit-Position: refs/heads/master@{#10464}
2015-10-30 20:21:11 +00:00
kwiberg
102c6a61bc Replace rtc:🦗:Settable with rtc::Maybe
The former is very similar to the latter, but less general (mostly in
naming).

This CL, which is the first to use Maybe at scale, also removes the implicit conversion from T to Maybe<T>, since it was agreed that the increased verbosity increased legibility.

Review URL: https://codereview.webrtc.org/1430433004

Cr-Commit-Position: refs/heads/master@{#10461}
2015-10-30 09:47:44 +00:00
Peter Boström
95192fbb1e Create a 'webrtc_nonparallel_tests' target.
Used for tests that cannot be run in parallel due to using non-virtual
resources such as filesystems and sockets. Initially moves socket
unittests from rtc_unittest since
PhysicalSocketTest.TestUdpReadyToSendIPv4 is one of the worst flake
offenders.

Future prospect targets are GTEST_DEATH tests that are flaky on Mac in
parallel for instance.

BUG=chromium:445880
R=kjellander@webrtc.org

Review URL: https://codereview.webrtc.org/1426643003 .

Cr-Commit-Position: refs/heads/master@{#10446}
2015-10-29 11:42:06 +00:00
Henrik Kjellander
98f53510b2 system_wrappers: rename interface -> include
BUG=webrtc:5095
R=tommi@webrtc.org

Review URL: https://codereview.webrtc.org/1413333002 .

Cr-Commit-Position: refs/heads/master@{#10438}
2015-10-28 17:17:50 +00:00
deadbeef
8f46c63f6f Revert of Adding the ability to create an RtpSender without a track. (patchset #8 id:140001 of https://codereview.webrtc.org/1413713003/ )
Reason for revert:
Causing a compiler warning, and causing WebRtcBrowserTest.CallAndModifyStream to fail.

Original issue's description:
> Adding the ability to create an RtpSender without a track.
>
> This CL also changes AddStream to immediately create a sender, rather
> than waiting until the track is seen in SDP. And the PeerConnection now
> builds the list of "send streams" from the list of senders, rather than
> the collection of local media streams.
>
> Committed: https://crrev.com/ac9d92ccbe2b29590c53f702e11dc625820480d5
> Cr-Commit-Position: refs/heads/master@{#10414}

TBR=pthatcher@webrtc.org,pthatcher@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.webrtc.org/1426443007

Cr-Commit-Position: refs/heads/master@{#10417}
2015-10-26 21:11:25 +00:00
Karl Wiberg
e2a83eee73 Introduce rtc::ArrayView<T>, which keeps track of an array that it doesn't own
The main intended use case is as a function argument, replacing the
harder-to-read and harder-to-use separate pointer and size arguments.
It's easier to read because it's just one argument instead of two, and
with clearly defined semantics; it's easier to use because it has
iterators, and will automatically figure out the size of arrays.

BUG=webrtc:5028
R=andrew@webrtc.org, solenberg@webrtc.org

Review URL: https://codereview.webrtc.org/1408403002 .

Cr-Commit-Position: refs/heads/master@{#10415}
2015-10-26 18:51:42 +00:00
deadbeef
ac9d92ccbe Adding the ability to create an RtpSender without a track.
This CL also changes AddStream to immediately create a sender, rather
than waiting until the track is seen in SDP. And the PeerConnection now
builds the list of "send streams" from the list of senders, rather than
the collection of local media streams.

Review URL: https://codereview.webrtc.org/1413713003

Cr-Commit-Position: refs/heads/master@{#10414}
2015-10-26 18:48:26 +00:00
noahric
5d9b92b53d Update Bind to match its comments and always capture by value. Also update the generated count to 9 args.
The existing comment is wrong, and the test even ensures it: Bind will capture reference values by reference. That makes it hard to use with AsyncInvoker, because you can't safely Bind to a function that takes (const) reference params.

The new version of this code strips references in the bound object, so it captures by value, but can bind against functions that take const references, they'll just be references to the copy.

As the class comment implies, actual by-reference args should be passed as pointers or things that safely share (e.g. scoped_refptr) and not references directly. A new test case ensures the pointer reference works. The new code will also give a compiler error if you try to bind
to a non-const reference.

BUG=

Review URL: https://codereview.webrtc.org/1291543006

Cr-Commit-Position: refs/heads/master@{#10397}
2015-10-24 18:14:52 +00:00
tfarina
90d67ddc1d Remove two more deprecated methods from SocketAddress API.
This patch removes IPToString and IPToSensitiveString static helper
methods, since there are class methods that replace them already, and
they aren't used by anyone anymore.

BUG=None
R=pthacher@webrtc.org

Review URL: https://codereview.webrtc.org/1408873005

Cr-Commit-Position: refs/heads/master@{#10391}
2015-10-23 18:22:06 +00:00
Peter Boström
225789d067 Move logging CriticalSection into implementation.
Prevents including platform headers from all files that include logging.
Also removes warn_slow_logs_delay_ which adds contention to the logging
critical section.

BUG=
R=tommi@webrtc.org

Review URL: https://codereview.webrtc.org/1416373004 .

Cr-Commit-Position: refs/heads/master@{#10388}
2015-10-23 13:21:10 +00:00
noahric
27dfe201a5 Remove final from rtc::Buffer.
With it removed, you can now use it with scoped_refptr by wrapping it in
an rtc::RefCountedObject<rtc::Buffer>.

BUG=

Review URL: https://codereview.webrtc.org/1414053003

Cr-Commit-Position: refs/heads/master@{#10386}
2015-10-23 13:01:14 +00:00
Karl Wiberg
6e587200db Introduce rtc::Maybe<T>, which either contains a T or not.
It's a simple std::experimental::optional-wannabe. For simplicity and
portability, it still secretly contains a (default-constructed) T when
it's supposedly empty. This restriction is fine for simple types.

One important application is for the return type of functions. For
example, a function which either returns a size_t or fails can return
rtc::Maybe<size_t>.

BUG=webrtc:5028
R=andrew@webrtc.org, mgraczyk@chromium.org

Review URL: https://codereview.webrtc.org/1413763003 .

Cr-Commit-Position: refs/heads/master@{#10353}
2015-10-21 10:44:17 +00:00
tommi
e4f96501fc Remove system_wrappers/interface/trace_event.h
BUG=

Review URL: https://codereview.webrtc.org/1417773002

Cr-Commit-Position: refs/heads/master@{#10346}
2015-10-21 06:00:57 +00:00
honghaiz
023f3ef029 Create network change notifier and pass the event to NetworkManager
BUG=

Review URL: https://codereview.webrtc.org/1391703003

Cr-Commit-Position: refs/heads/master@{#10325}
2015-10-19 16:39:38 +00:00
minyue
df200d1ef7 Suppressing TestUdpReadyToSendIPv4 on ASan.
The test is flaky on Asan.

BUG=webrtc:4958

Review URL: https://codereview.webrtc.org/1388203004

Cr-Commit-Position: refs/heads/master@{#10313}
2015-10-17 20:10:50 +00:00
tfarina
6ca1ac4283 Get rid of deprecated HttpClient fail_redirect accessors.
This patch removes set_fail_redirect()/fail_redirect() method accessors
from HttpClient class and converts their usage to
set_redirection_action/redirection_action where appropriate.

BUG=None
R=pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/1396683005

Cr-Commit-Position: refs/heads/master@{#10304}
2015-10-16 18:01:40 +00:00
stefan
c1aeaf0dc3 Wire up packet_id / send time callbacks to webrtc via libjingle.
BUG=webrtc:4173

Review URL: https://codereview.webrtc.org/1363573002

Cr-Commit-Position: refs/heads/master@{#10289}
2015-10-15 14:26:17 +00:00
dcheng
3402bcda56 Make the WARN_UNUSED_RESULT macro match the Chromium one.
BUG=none

Review URL: https://codereview.webrtc.org/1399313002

Cr-Commit-Position: refs/heads/master@{#10259}
2015-10-12 23:28:20 +00:00
Magnus Jedvert
fc950848e3 Fix: RefCountInterface: Make AddRef() and Release() const
The landed CL contained some unwanted changes.

TBR=tommi

Review URL: https://codereview.webrtc.org/1401743002 .

Cr-Commit-Position: refs/heads/master@{#10255}
2015-10-12 14:10:50 +00:00
Magnus Jedvert
1b40a9a8af RefCountInterface: Make AddRef() and Release() const
This CL makes AddRef() and Release() const member methods and the refcount integer mutable. This is reasonable, because they only manage the lifetime of the object, and this is also how it's done in Chromium.

The purpose is to be able to capture a const pointer in a scoped_refptr, which is currenty impossible. The practial problem this CL solves is this:

void Foo::Bar() const {}

rtc::Callback0<void> Foo::MakeClosure() const {
  return rtc::Bind(&Foo::Bar, this);
}

We currently capture |this| as const Foo*. With this CL, |this| will be captured as scoped_refptr<const Foo>.

A test is also added in bind_unittest to check this behaviour.

BUG=webrtc:5065
R=perkj@webrtc.org, tommi@webrtc.org

Review URL: https://codereview.webrtc.org/1403683004 .

Cr-Commit-Position: refs/heads/master@{#10253}
2015-10-12 13:50:50 +00:00
torbjorng
4e572470a3 Provide RSA2048 as per RFC
Original CL here:
https://codereview.webrtc.org/1329493005

That CL is in patch set #1 of this CL.
This CL resolves a method collision in Chrome.

BUG=webrtc:4972

Review URL: https://codereview.webrtc.org/1394223002

Cr-Commit-Position: refs/heads/master@{#10222}
2015-10-08 16:43:03 +00:00
tfarina
8ac544e811 Get rid of deprecated SocketAddress::IsAny() method.
This patch converts the usage of IsAny() to IsAnyIP() and removes the
deprecated method.

BUG=None
R=pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/1392153002

Cr-Commit-Position: refs/heads/master@{#10220}
2015-10-08 14:15:49 +00:00
torbjorng
335204c550 Revert of Provide RSA2048 as per RFC (patchset #9 id:200001 of https://codereview.webrtc.org/1329493005/ )
Reason for revert:
Breaks chrome.

Original issue's description:
> provide RSA2048 as per RFC
>
> BUG=webrtc:4972
>
> Committed: https://crrev.com/0df3eb03c9a6a8299d7e18c8c314ca58c2f0681e
> Cr-Commit-Position: refs/heads/master@{#10209}

TBR=hbos@webrtc.org,juberti@google.com,jbauch@webrtc.org,henrikg@webrtc.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:4972

Review URL: https://codereview.webrtc.org/1397703002

Cr-Commit-Position: refs/heads/master@{#10210}
2015-10-08 09:30:21 +00:00
torbjorng
0df3eb03c9 provide RSA2048 as per RFC
BUG=webrtc:4972

Review URL: https://codereview.webrtc.org/1329493005

Cr-Commit-Position: refs/heads/master@{#10209}
2015-10-08 09:06:20 +00:00
torbjorng
172f009be2 Get rid of SCHANNEL code.
BUG=webrtc:5045

Review URL: https://codereview.webrtc.org/1383253002

Cr-Commit-Position: refs/heads/master@{#10199}
2015-10-07 11:58:00 +00:00
Peter Boström
70a5e0ead6 Remove (u)int typedefs from basictypes.h.
BUG=webrtc:5024
R=henrikg@webrtc.org

Review URL: https://codereview.webrtc.org/1387413002 .

Cr-Commit-Position: refs/heads/master@{#10197}
2015-10-07 11:19:47 +00:00
Peter Boström
0c4e06b4c6 Use suffixed {uint,int}{8,16,32,64}_t types.
Removes the use of uint8, etc. in favor of uint8_t.

BUG=webrtc:5024
R=henrik.lundin@webrtc.org, henrikg@webrtc.org, perkj@webrtc.org, solenberg@webrtc.org, stefan@webrtc.org, tina.legrand@webrtc.org

Review URL: https://codereview.webrtc.org/1362503003 .

Cr-Commit-Position: refs/heads/master@{#10196}
2015-10-07 10:23:32 +00:00
brucedawson
a10492ff33 Fix VS 2015 warning by adding an additional cast
The OwningThread member of CRITICAL_SECTION is declared as having type
HANDLE but it is actually the thread's Thread ID which is a DWORD. When
doing 64-bit builds of Chromium with VS 2015 this triggers a warning
because of the suspicious conversion from 32-bit integer to 64-bit
pointer.

This change adds a cast (and some comments) to make the conversion
explicit and avoid the warning.

R=henrikg@webrtc.org
BUG=440500

Review URL: https://codereview.webrtc.org/1386183002

Cr-Commit-Position: refs/heads/master@{#10190}
2015-10-06 20:34:34 +00:00
deadbeef
0a6c4ca942 Catching more errors when parsing ICE server URLs.
Every malformed URL should now produce an error message in JS, rather than
silently failing and possibly printing a warning message to the console (and
possibly crashing).

Also added some unit tests, and made "ParseIceServers" public.

BUG=445002

Review URL: https://codereview.webrtc.org/1344143002

Cr-Commit-Position: refs/heads/master@{#10186}
2015-10-06 18:38:33 +00:00
Guo-wei Shieh
6caafbe5b6 Convert uint16_t to int for WebRTC cipher/crypto suite.
This is a follow up CL on https://codereview.webrtc.org/1337673002

BUG=
R=pthatcher@webrtc.org

Review URL: https://codereview.webrtc.org/1377733004 .

Cr-Commit-Position: refs/heads/master@{#10175}
2015-10-05 19:43:33 +00:00
jiayl
4cd053fe88 Only catch UnsatisfiedLinkError in Logging.java.
BUG=

Review URL: https://codereview.webrtc.org/1375913005

Cr-Commit-Position: refs/heads/master@{#10169}
2015-10-05 12:27:50 +00:00