216 Commits

Author SHA1 Message Date
tommi@webrtc.org
c7157da599 Use atomic operations for setting/reading the trace filter.
The filter is currently being set and read by a number of threads and tripping up tsan.

Original review: https://webrtc-codereview.appspot.com/47609004/

R=mflodman@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/47659004

Cr-Commit-Position: refs/heads/master@{#8789}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8789 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-19 09:30:45 +00:00
tommi@webrtc.org
25819b8294 Revert 8753 "Use atomic operations for setting/reading the trace..."
Caused VP9 test to fail on TSAN and doesn't build in some configuration due to
"../webrtc/base/criticalsection.h:181:12: error: cannot compile this atomic library call yet"
:-(

> Use atomic operations for setting/reading the trace filter.
> The filter is currently being set and read by a number of threads and tripping up tsan.
> 
> R=mflodman@webrtc.org
> BUG=
> 
> Review URL: https://webrtc-codereview.appspot.com/47609004

TBR=tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/51369004

Cr-Commit-Position: refs/heads/master@{#8759}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8759 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-17 15:35:41 +00:00
guoweis@webrtc.org
b91d0f5130 1. Have IPIsPrivate calling IPIsLinkLocal
2. Also check the Mac based IPv6
3. move the ip filtering into createnetwork. It shouldn't be done in IsIgnoredNetwork as the IP inside that could change later.

BUG=
R=juberti@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/48509004

Cr-Commit-Position: refs/heads/master@{#8758}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8758 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-17 14:43:42 +00:00
tommi@webrtc.org
7c64ed2e0c Move trace_event and associated files to webrtc/base.
Also starting to use TRACE_EVENT from thread.cc in webrtc/base, to track Invoke() calls.

BUG=
R=magjed@webrtc.org, tina.legrand@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/42769004

Cr-Commit-Position: refs/heads/master@{#8755}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8755 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-17 14:26:15 +00:00
tommi@webrtc.org
c383c24c2b Use atomic operations for setting/reading the trace filter.
The filter is currently being set and read by a number of threads and tripping up tsan.

R=mflodman@webrtc.org
BUG=

Review URL: https://webrtc-codereview.appspot.com/47609004

Cr-Commit-Position: refs/heads/master@{#8753}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8753 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-17 13:47:16 +00:00
perkj@webrtc.org
a78a94e838 Fix RateTracker to set an initial reference time when first updated.
BUG=4442
R=mflodman@webrtc.org, pbos@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/43829004

Cr-Commit-Position: refs/heads/master@{#8751}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8751 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-17 12:45:41 +00:00
kwiberg@webrtc.org
dad85aa53b Chromium build fix: Include new .cc files in rtc_base
r8656 added a couple of new .cc files to rtc_base. Two of them turned
out to mistakenly be in the set excluded from the Chromium build.

TBR=kjellander@webrtc.org, tommi@webrtc.org
BUG=163

Review URL: https://webrtc-codereview.appspot.com/44589004

Cr-Commit-Position: refs/heads/master@{#8659}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8659 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-10 01:00:17 +00:00
kwiberg@webrtc.org
67186fe00c Fix clang style warnings in webrtc/base
Mostly this consists of marking functions with override when
applicable, and moving function bodies from .h to .cc files.

Not inlining virtual functions with simple bodies such as

  { return false; }

strikes me as probably losing more in readability than we gain in
binary size and compilation time, but I guess it's just like any other
case where enabling a generally good warning forces us to write
slightly worse code in a couple of places.

BUG=163
R=kjellander@webrtc.org, tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/47429004

Cr-Commit-Position: refs/heads/master@{#8656}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8656 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-09 22:24:25 +00:00
tommi@webrtc.org
a32f064e97 Fix build configuration bug with debug builds.
The problem we were running into on the Mac 10.9 debug bot in Chrome turned out to be good ol'fashion memory corruption. Part of webrtc was being compiled with _DEBUG, another half without it. This caused the definition of some symbols to be out of sync (notably pthread_mutex_t) and would cause code built from common.gypi, to overwrite memory allocated via common types from base/base.gypi derived code.  Fun stuff to track down.  This was a problem in particular with base/criticalsection.h since it's inlined into multiple object files but will have different definitions of what a mutex is.

TBR=pbos,kjellander
BUG=

Review URL: https://webrtc-codereview.appspot.com/43659004

Cr-Commit-Position: refs/heads/master@{#8646}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8646 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-08 07:39:22 +00:00
tommi@webrtc.org
679d2f1352 Disable CS_TRACK_OWNER on Mac in debug mode.
Local testing indicates that the pthread_t member variable might be causing alignment problems on the Chromium bots.  After landing this (and once the Chromium tree is open again), I'll try a roll again to see if this has an effect.

R=magjed@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/48449004

Cr-Commit-Position: refs/heads/master@{#8644}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8644 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-07 20:15:24 +00:00
guoweis@webrtc.org
bbce5efaa6 Turn on IPv6 for WebRTC as default as required before ramping the experiment to 30%.
BUG=
R=juberti@webrtc.org

Committed: https://code.google.com/p/webrtc/source/detail?r=8582

Committed: https://code.google.com/p/webrtc/source/detail?r=8607

Review URL: https://webrtc-codereview.appspot.com/43529004

Cr-Commit-Position: refs/heads/master@{#8609}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8609 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-05 04:39:07 +00:00
guoweis@webrtc.org
d43b2c098d Revert "Turn on IPv6 for WebRTC as default as required before ramping the experiment to 30%."
This reverts commit 86c33e3a94f51f8e4b4f305708ec327786ad3794.

TBR=guoweis@webrtc.org

BUG=

Review URL: https://webrtc-codereview.appspot.com/47409004

Cr-Commit-Position: refs/heads/master@{#8608}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8608 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-05 04:03:44 +00:00
guoweis@webrtc.org
86c33e3a94 Turn on IPv6 for WebRTC as default as required before ramping the experiment to 30%.
BUG=
R=juberti@webrtc.org

Committed: https://code.google.com/p/webrtc/source/detail?r=8582

Review URL: https://webrtc-codereview.appspot.com/43529004

Cr-Commit-Position: refs/heads/master@{#8607}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8607 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-05 03:40:48 +00:00
tommi@webrtc.org
4a4e688438 Remove dependecy on win32.h in criticalsection.h. This was causing build errors that we haven't fully figured out yet but somehow this caused override files to include the files they're supposed to override, which in turn included webrtc build files that then conflict with Chromium's configuration.
TBR=magjed@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/45479004

Cr-Commit-Position: refs/heads/master@{#8601}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8601 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-04 20:10:37 +00:00
kjellander@webrtc.org
14665ff7d4 Roll chromium_revision e144d30..6fdb142 (318658:318841) + remove OVERRIDE macro
Clang version changed 223108:230914
Details: e144d30..6fdb142/tools/clang/scripts/update.sh

Removes the OVERRIDE macro defined in:
* webrtc/base/common.h
* webrtc/typedefs.h

The majority of the source changes were done by running this in src/:
perl -0pi -e "s/virtual\s([^({;]*(\([^({;]*\)[^({;]*))(OVERRIDE|override)/\1override/sg" `find {talk,webrtc} -name "*.h"  -o -name "*.cc*" -o -name "*.mm*"`

which converted all:
virtual Foo() OVERRIDE
functions to:
Foo() override

Then I manually edited:
* talk/media/webrtc/fakewebrtccommon.h
* webrtc/test/fake_common.h

Remaining uses of OVERRIDE was fixed by search+replace.

Manual edits were done to fix virtual destructors that were
overriding inherited ones.

Finally a build error related to the pure virtual definitions of
Read, Write and Rewind in common_types.h required a bit of
refactoring in:
* webrtc/common_types.cc
* webrtc/common_types.h
* webrtc/system_wrappers/interface/file_wrapper.h
* webrtc/system_wrappers/source/file_impl.cc

This roll should make it possible for us to finally re-enable deadlock
detection for TSan on the buildbots.

BUG=4106
R=pbos@webrtc.org, tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/41069004

Cr-Commit-Position: refs/heads/master@{#8596}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8596 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-04 13:04:54 +00:00
magjed@webrtc.org
487afc704d Always define RTC_NOTREACHED, not just in non-chromium builds
R=tommi@webrtc.org
TBR=tommi

Review URL: https://webrtc-codereview.appspot.com/40189004

Cr-Commit-Position: refs/heads/master@{#8592}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8592 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-04 11:26:19 +00:00
magjed@webrtc.org
9cd7c26d1a Rename NOTREACHED to RTC_NOTREACHED to avoid name conflict with Chromium
R=tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/45459004

Cr-Commit-Position: refs/heads/master@{#8591}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8591 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-04 10:21:19 +00:00
magjed@webrtc.org
c8895aa2f3 Unify underlying frame buffer in I420VideoFrame and WebRtcVideoFrame
Currently, I420VideoFrame uses three webrtc::Plane to store pixel data, and WebRtcVideoFrame uses WebRtcVideoFrame::FrameBuffer/webrtc::VideoFrame. The two subclasses WebRtcTextureVideoFrame and TextureVideoFrame use a NativeHandle to store pixel data, and there is also a class WebRtcVideoRenderFrame that wraps an I420VideoFrame.

This CL replaces these classes with a new interface VideoFrameBuffer that provides the common functionality. This makes it possible to remove deep frame copies between cricket::VideoFrame and I420VideoFrame.

Some additional minor changes are:
* Disallow creation of 0x0 texture frames.
* Remove the half-implemented ref count functions in I420VideoFrame.
* Remove the Alias functionality in WebRtcVideoFrame

The final goal is to eliminate all frame copies, but to limit the scope of this CL, some planned changes are postponed to follow-up CL:s (see planned changes in https://webrtc-codereview.appspot.com/38879004, or https://docs.google.com/document/d/1bxoJZNmlo-Z9GnQwIaWpEG6hDlL_W-bzka8Zb_K2NbA/preview). Specifically, this CL:
* Keeps empty subclasses WebRtcTextureVideoFrame and TextureVideoFrame, and just delegates the construction to the superclass.
* Keeps the deep copies from cricket::VideoFrame to I420VideoFrame.

BUG=1128
R=mflodman@webrtc.org, pbos@webrtc.org, perkj@webrtc.org, tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/42469004

Cr-Commit-Position: refs/heads/master@{#8580}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8580 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-03 21:22:26 +00:00
guoweis@webrtc.org
59ae5ff310 Filter logic for ip leak misses ::ffff:0.0.0.0
The current logic filtering out "any" address is incomplete in the case
when any address in IPv4 converted in IPv6 form is not filtered out.

BUG=
R=juberti@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/44429004

Cr-Commit-Position: refs/heads/master@{#8545}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8545 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-03-01 23:45:42 +00:00
pthatcher@webrtc.org
f7bb6e723b Use new API from BoringSSL to get RFC name of cipher.
This CL uses the new API "SSL_CIPHER_get_rfc_name" from BoringSSL to
get the RFC-compliant cipher name instead of having a custom hardcoded
list of cipher names.

BUG=none
R=juberti@webrtc.org, tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/40829004

Cr-Commit-Position: refs/heads/master@{#8541}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8541 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-28 01:41:49 +00:00
tommi@webrtc.org
d31250518a Test to try to track down the alignment problem on Mac 10.9.
There's no code change here, I'm rearranging member variables of the
trace class and adding a sizeof check to the CriticalSection
class + alignment attribute for the mutex, on Mac only.

TBR=pbos@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/38339004

Cr-Commit-Position: refs/heads/master@{#8540}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8540 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-28 00:01:56 +00:00
aluebs@webrtc.org
07dcf60ee0 Revert 8532 "Ensure only temporary IPv6 address is selected as t..."
> Ensure only temporary IPv6 address is selected as the best IP.
> 
> The current logic of IPv6 selection could still have a small chance for non-temporary address to be selected for candidate. The scenario is that when there is no non-deprecated temporary IP, the global ones could be selected.
> 
> Global ones don't necessarily carry MAC. However, instead of comparing whether it has the MAC in it (sometimes 5 out of 6 elements from a MAC are the same, only one diffs), we should just err on the safe side.
> 
> BUG=4348
> R=juberti@webrtc.org, pthatcher@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/38289004

TBR=guoweis@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/38319004

Cr-Commit-Position: refs/heads/master@{#8534}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8534 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-27 18:42:46 +00:00
guoweis@webrtc.org
385a7ceb1f Ensure only temporary IPv6 address is selected as the best IP.
The current logic of IPv6 selection could still have a small chance for non-temporary address to be selected for candidate. The scenario is that when there is no non-deprecated temporary IP, the global ones could be selected.

Global ones don't necessarily carry MAC. However, instead of comparing whether it has the MAC in it (sometimes 5 out of 6 elements from a MAC are the same, only one diffs), we should just err on the safe side.

BUG=4348
R=juberti@webrtc.org, pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/38289004

Cr-Commit-Position: refs/heads/master@{#8532}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8532 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-27 18:10:43 +00:00
kwiberg@webrtc.org
ac2d27d9ae Fix style violations in common_types.h and config.h
Mostly, it's about moving constructors and descructors to the .cc
files, so that they won't be inlined everywhere.

The reason this CL is so big is that a lot of code was using
common_types.h without declaring a dependency on webrtc_common, which
broke the build once common_types.h started to depend on
common_types.cc.

BUG=163
R=kjellander@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/26089004

Cr-Commit-Position: refs/heads/master@{#8516}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8516 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-26 14:01:28 +00:00
kjellander@webrtc.org
722739108a Roll chromium_revision b0c3ed3..2c3ffb2 (316737:317530)
Includes GN changes from
https://webrtc-codereview.appspot.com/39249004/

Android changes for JNI were required due to
https://codereview.chromium.org/843103003

Other relevant changes:
* src/buildtools: 5c5e924..93b3d0a
* src/third_party/boringssl/src: d306f16..b180ee9
* src/third_party/icu: 4e3266f..2081ee6
* src/third_party/libvpx: 5cdd302..33bbffe
* src/third_party/usrsctp/usrsctplib: 190c8cb..13718c7
* src/tools/gyp: 4d7c139..3464008
* src/tools/swarming_client: bdad118..1b7bfec
Details: b0c3ed3..2c3ffb2/DEPS

Clang version was not updated in this roll.

R=dpranke@chromium.org, phoglund@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/40079004

Cr-Commit-Position: refs/heads/master@{#8466}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8466 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-23 19:09:22 +00:00
magjed@webrtc.org
a43fce6e02 Add functions rtc::AtomicOps::Load and rtc::RefCountedObject::HasOneRef
R=tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/40819005

Cr-Commit-Position: refs/heads/master@{#8452}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8452 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-21 13:23:46 +00:00
decurtis@webrtc.org
2af3057b24 Revert "When clearing the priority message queue, don't copy an item to itself."
This reverts commit 2bffc3cb72e2250cbf6ed7e5f4b399395ca046cb.

BUG=4100
R=juberti@webrtc.org,pthatcher@webrtc.org
TBR=juberti@webrtc.org,pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/38189004

Cr-Commit-Position: refs/heads/master@{#8450}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8450 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-21 02:00:26 +00:00
decurtis@webrtc.org
2bffc3cb72 When clearing the priority message queue, don't copy an item to itself.
This avoids a memcpy to overlapping---in this case the same---memory locations.

BUG=4100
R=juberti@webrtc.org, pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/33019004

Cr-Commit-Position: refs/heads/master@{#8449}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8449 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-21 01:45:20 +00:00
guoweis@webrtc.org
9dfe7aac2e Fix WebRTC IP leaks.
WebRTC binds to individual NICs and listens for incoming Stun packets. Sending stun through this specific NIC binding could make OS route the packet differently hence exposing non-VPN public IP.

The fix here is
1. to bind to any address (0:0:0:0) instead. This way, the routing will be the same as how chrome/http is.
2. also, remove the any all 0s addresses which happens when we bind to all 0s.

BUG=4276
R=juberti@webrtc.org

Committed: https://code.google.com/p/webrtc/source/detail?r=8418

Committed: https://code.google.com/p/webrtc/source/detail?r=8419

Review URL: https://webrtc-codereview.appspot.com/39129004

Cr-Commit-Position: refs/heads/master@{#8420}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8420 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-18 20:27:45 +00:00
guoweis@webrtc.org
f358aea7bf Fix WebRTC IP leaks.
WebRTC binds to individual NICs and listens for incoming Stun packets. Sending stun through this specific NIC binding could make OS route the packet differently hence exposing non-VPN public IP.

The fix here is
1. to bind to any address (0:0:0:0) instead. This way, the routing will be the same as how chrome/http is.
2. also, remove the any all 0s addresses which happens when we bind to all 0s.

BUG=4276
R=juberti@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/39129004

Cr-Commit-Position: refs/heads/master@{#8418}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8418 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-18 18:44:14 +00:00
decurtis@webrtc.org
bfa3c7253f Don't call g_thread_init on glib >=2.31.0
g_thread_init() is deprecated in glib 2.31.0 and later. This will call
g_thread_ini() only when compiling against older versions of glib.

BUG=1971,chromium:253566
R=pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/40019004

Cr-Commit-Position: refs/heads/master@{#8400}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8400 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-17 21:23:13 +00:00
guoweis@webrtc.org
b08f4045ec Fix issue 4061.
Issue was that the longest 0 detection wasn't done when there is only one 0 octet. The purpose of this detection is to make sure we don't also compression 0 octet sequences which are not longest.

BUG=4061
R=juberti@webrtc.org, pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/33309004

Cr-Commit-Position: refs/heads/master@{#8397}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8397 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-17 19:01:14 +00:00
guoweis@webrtc.org
d3b453be17 Remove the incremental IP address behavior from virtualsocketserver
VirtualSocketServer, when binding to any address (all 0s), will assign a unique IP address by incrementing the IP address, resulted in 0.0.0.1. However, this breaks the testing of 4276 where we bind to all 0s and expect the local address should remain all 0s.

BUG=4276
R=pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/35189004

Cr-Commit-Position: refs/heads/master@{#8370}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8370 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-14 00:44:20 +00:00
andresp@webrtc.org
ff689be3c0 Use std::min and std::max instead of self-defined functions such as rtc::_min/_max.
R=tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/35079004

Cr-Commit-Position: refs/heads/master@{#8347}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8347 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-12 11:55:32 +00:00
phoglund@webrtc.org
006521d5bd Makes libjingle_peerconnection_android_unittest run on networkless devices.
PeerConnectionTest.java currently works, but only on a device with
network interfaces up. This is not a problem for desktop, but it is a
problem when running on Android devices since the devices in the lab
generally don't have network (due to the chaotic radio environment in
the device labs, devices are simply kept in flight mode).

The test does work if one modifies this line in the file
webrtc/base/network.cc:

bool ignored = ((cursor->ifa_flags & IFF_LOOPBACK) ||
                IsIgnoredNetwork(*network));

If we remove the IFF_LOOPBACK clause, the test starts working on
an Android device in flight mode. This is nice - we're running the
call and packets interact with the OS network stack, which is good
for this end-to-end test. We can't just remove the clause though since
having loopback is undesirable for everyone except the test (right)?
so we need to make this behavior configurable.

This CL takes a stab at a complete solution where we pass a boolean
all the way through the Java PeerConnectionFactory down to the
BasicNetworkManager. This comes as a heavy price in interface
changes though. It's pretty out of proportion, but fundamentally we
need some way of telling the network manager that it is on Android
and in test mode. Passing the boolean all the way through is one way.

Another way might be to put the loopback filter behind an ifdef and
link a custom libjingle_peerconnection.so with the test. That is hacky
but doesn't pollute the interfaces. Not sure how to solve that in GYP
but it could mean some duplication between the production and
test .so files.

It would have been perfect to use flags here, but then we need to
hook up gflags parsing to some main() somewhere to make sure the
flag gets parsed, and make sure to pass that flag in our tests.
I'm not sure how that can be done.

Making the loopback filtering conditional is exactly how we solved the
equivalent problem in content_browsertests in Chrome, and it worked
great.

That's all I could think of.

BUG=4181
R=perkj@webrtc.org, pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/36769004

Cr-Commit-Position: refs/heads/master@{#8344}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8344 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-12 09:24:25 +00:00
pthatcher@webrtc.org
3ee4fe5a94 Re-land: Add API to get negotiated SSL ciphers
This CL adds an API to the SSL stream adapters and transport channels to get the SSL cipher that was negotiated with the remote peer.

The previously approved CL https://webrtc-codereview.appspot.com/26009004/ was reverted in https://webrtc-codereview.appspot.com/40689004/ due to compilation issues while rolling into Chromium.
As the new method has landed in Chromium in https://crrev.com/bc321c76ace6e1d5a03440e554ccb207159802ec, this should be safe to land here now.

BUG=3976
R=pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/37209004

Cr-Commit-Position: refs/heads/master@{#8343}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8343 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-11 22:35:30 +00:00
kwiberg@webrtc.org
11426dc719 Don't rely on webrtc/base/scoped_ptr.h to include stuff for you
webrtc/base/scoped_ptr.h doesn't need to include webrtc/base/common.h
anymore, but a couple of its users were relying on it to pull in other
things for them. Fix that, and remove the now really unnecessary
webrtc/base/common.h include.

R=andrew@webrtc.org, pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/37169004

Cr-Commit-Position: refs/heads/master@{#8333}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8333 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-11 14:31:19 +00:00
kwiberg@webrtc.org
d7472b52d6 base/arraysize.h: We use size_t, so need to include stddef.h
R=andrew@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/39029004

Cr-Commit-Position: refs/heads/master@{#8317}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8317 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-10 22:47:14 +00:00
tommi@webrtc.org
1a072f93eb Address comments from previous review round for rtc::Event.
R=andresp@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/35049004

Cr-Commit-Position: refs/heads/master@{#8313}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8313 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-10 12:28:12 +00:00
andresp@webrtc.org
53d9012faf Clean kForever from basictypes and move it to the interfaces that actually have it.
R=tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/33269004

Cr-Commit-Position: refs/heads/master@{#8296}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8296 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-09 14:19:39 +00:00
tommi@webrtc.org
4c0fd965ce Move rtc::Event to rtc_base_approved. We need an event implementation in WebRTC that allows us to specify whether it's manually reset or automatically. EventWrapper currently doesn't support it and it adds a heap allocation + vtable, so rtc::Event is the lighter of the two.
I'm also tidying rtc::Event up a bit. Removing member variable that's not needed on all platforms and moving the mutex itself up in the member list given the recent alignment scare on Mac.

R=pbos@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/38999004

Cr-Commit-Position: refs/heads/master@{#8292}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8292 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-09 10:23:39 +00:00
pbos@webrtc.org
8cf9bdb3fa Remove USE_WEBRTC_DEV_BRANCH.
talk/ and webrtc/ are hosted in the same repository and it no longer
makes sense to support building talk/ without the corresponding webrtc/
catalog.

R=bjornv@webrtc.org, juberti@webrtc.org
BUG=

Review URL: https://webrtc-codereview.appspot.com/39849004

Cr-Commit-Position: refs/heads/master@{#8291}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8291 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-09 10:17:12 +00:00
jlmiller@webrtc.org
ec499beaf5 Increase testclient timeout from 1 to 5 seconds
BUG=4182
R=pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/38839004

Cr-Commit-Position: refs/heads/master@{#8285}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8285 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-07 22:38:16 +00:00
tommi@webrtc.org
fe19699a20 Revert 8260 "Base RWLockWrapper on rtc::SharedExclusiveLock."
Unfortunately this caused channel teardown to hang.
More details in email(s).

> Base RWLockWrapper on rtc::SharedExclusiveLock.
>
> Also moves rtc::Event and rtc::SharedExclusiveLock to rtc_base_approved.
>
> R=tommi@webrtc.org
> BUG=
>
> Review URL: https://webrtc-codereview.appspot.com/38889004

TBR=pbos@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/34999005

Cr-Commit-Position: refs/heads/master@{#8284}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8284 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-07 22:36:19 +00:00
tommi@webrtc.org
2eb1660791 Switch ThreadCheckerImpl over to using PlatformThreadRef.
Like PlatformThreadId, this type is borrowed from Chromium.
The difference between the two is that PlatformThreadRef is pthread_t on posix platforms.
On Windows PlatformThreadRef and PlatformThreadId are the same thing.

The reason for this switch is pretty crazy.  On Chromium's "Mac 10.9 dbg" bot,
we have been seeing the following code:

ThreadCheckerImpl::ThreadCheckerImpl() : valid_thread_(CurrentThreadId()) {
  fprintf(stderr, "*** valid=%d\n", valid_thread_);
  valid_thread_ = CurrentThreadId();
  fprintf(stderr, "*** valid after=%d\n", valid_thread_);
}

print this:

*** valid=946872320
*** valid after=5647

This is for the same thread checker instance.

What's worse is that printing out what CurrentThreadId was returning, yielded that it was always returning 5647.

After switching over to pthread_t on Mac, this stopped happening.
So, to remove the current hack, reinstate the class on Mac and take a look at the next problem, I'm switching to pthread_t.
Really looking forward to truly getting to the bottom of this.

Tbr-ing since the build is essentially broken (we can't roll).

TBR=pbos@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/37199004

Cr-Commit-Position: refs/heads/master@{#8283}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8283 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-07 19:18:16 +00:00
tommi@webrtc.org
2bf0e90c9d Revert 8275 "This CL adds an API to the SSL stream adapters and ..."
I'm reverting the patch due to compilation issues. It would be great if we could make sure Chromium is ready for the patch before we land it in WebRTC.
As is, we're trying to roll webrtc into Chromium and we can't (this is not the only reason though).  I might reland this after the roll, depending on how that goes though.
Here's an example failure:

e:\b\build\slave\win_gn\build\src\jingle\glue\channel_socket_adapter_unittest.cc(77) : error C2259: 'jingle_glue::MockTransportChannel' : cannot instantiate abstract class
        due to following members:
        'bool cricket::TransportChannel::GetSslCipher(std::string *)' : is abstract
        e:\b\build\slave\win_gn\build\src\third_party\webrtc\p2p\base\transportchannel.h(107) : see declaration of 'cricket::TransportChannel::GetSslCipher'
ninja: build stopped: subcommand failed.

> This CL adds an API to the SSL stream adapters and transport channels to get the SSL cipher that was negotiated with the remote peer.
> 
> BUG=3976
> R=davidben@chromium.org, juberti@webrtc.org, pthatcher@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/26009004

TBR=pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/40689004

Cr-Commit-Position: refs/heads/master@{#8282}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8282 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-07 11:13:18 +00:00
bjornv@webrtc.org
95a32ec098 Revert 8271 "VirtualSocketServer out-of-order issue with closing..."
Failed on Linux_Memcheck bot.
http://chromegw/i/client.webrtc/builders/Linux%20Memcheck/builds/3182

> VirtualSocketServer out-of-order issue with closing TCP sockets
> 
> https://webrtc-codereview.appspot.com/41449004 added a TURN TCP
> allocation release test which was disabled as it triggered an assert
> in the turnserver.
> 
> This was caused by VirtualSockerServer delivering the last TCP packet
> after closing the connection. Calling
>     VirtualSocketServer::SendTcp
> and
>     VirtualSocket::Close
> from TestTurnTCPReleaseAllocation led to the following order of
> messages in VirtualSocket::OnMessage:
>     MSG_ID_DISCONNECT
>     MSG_ID_PACKET
> 
> This is out of order and triggers an assert in turnserver.cc since the
> socket from which the message arrives has already been discarded,
> subsequently breaking the test.
> 
> In VirtualSocketServer::Disconnect the MSG_ID_DISCONNECT is posted to the
> msg_queue immediately, thus getting ahead of any (slightly delayed)
> actual packets.
> 
> Maybe PostAt(network_delay_ + 1, ...) would be better?
> 
> Re-enables TestTurnTCPReleaseAllocation.
> 
> BUG=
> R=juberti@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/34759004

TBR=pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/38979004

Cr-Commit-Position: refs/heads/master@{#8280}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8280 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-07 06:47:21 +00:00
pthatcher@webrtc.org
1d11c8202b This CL adds an API to the SSL stream adapters and transport channels to get the SSL cipher that was negotiated with the remote peer.
BUG=3976
R=davidben@chromium.org, juberti@webrtc.org, pthatcher@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/26009004

Cr-Commit-Position: refs/heads/master@{#8275}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8275 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-06 19:47:39 +00:00
tommi@webrtc.org
13a0e184ee Temporarily disable a couple of ThreadChecker tests on Mac.
TBR=magjed@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/37969004

Cr-Commit-Position: refs/heads/master@{#8272}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8272 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-06 16:39:18 +00:00
pthatcher@webrtc.org
4770437da9 VirtualSocketServer out-of-order issue with closing TCP sockets
https://webrtc-codereview.appspot.com/41449004 added a TURN TCP
allocation release test which was disabled as it triggered an assert
in the turnserver.

This was caused by VirtualSockerServer delivering the last TCP packet
after closing the connection. Calling
    VirtualSocketServer::SendTcp
and
    VirtualSocket::Close
from TestTurnTCPReleaseAllocation led to the following order of
messages in VirtualSocket::OnMessage:
    MSG_ID_DISCONNECT
    MSG_ID_PACKET

This is out of order and triggers an assert in turnserver.cc since the
socket from which the message arrives has already been discarded,
subsequently breaking the test.

In VirtualSocketServer::Disconnect the MSG_ID_DISCONNECT is posted to the
msg_queue immediately, thus getting ahead of any (slightly delayed)
actual packets.

Maybe PostAt(network_delay_ + 1, ...) would be better?

Re-enables TestTurnTCPReleaseAllocation.

BUG=
R=juberti@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/34759004

Cr-Commit-Position: refs/heads/master@{#8271}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8271 4adac7df-926f-26a2-2b94-8c16560cd09d
2015-02-06 16:33:47 +00:00