Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(223)

Issue 1349823004: Check media permissions (mic/camera) before exposing local addresses to WebRTC. (Closed)

Created:
5 years, 3 months ago by guoweis_left_chromium
Modified:
5 years, 2 months ago
Reviewers:
Sergey Ulanov, rkaplow
CC:
chromium-reviews, mlamouri+watch-content_chromium.org, posciak+watch_chromium.org, jam, mcasas+watch_chromium.org, feature-media-reviews_chromium.org, darin-cc_chromium.org, asvitkine+watch_chromium.org, mkwst+moarreviews-renderer_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Check media permissions (mic/camera) before exposing local addresses to WebRTC. This change implements FilteringNetworkManager which wraps IpcNetworkManager from PeerConnectionDependencyFactory and exposes rtc::NetworkManager to WebRTC. P2PNetworkManager will check mic/camera permissions and only if at least one of them is granted, the full network list from IpcNetworkManager is provided to WebRTC calls. Otherwise, WebRTC can only bind to the "any" address. Currently, this is disabled by default and can be enabled with a finch experiment "WebRTC-LocalIPPermissionCheck". UMAs are added to track how many calls are impacted (either denied due to lack of permissions, or call set up time delayed) before fully turned on. Test cases added for FilteringNetworkManager to test its handling of api StartUpdating() and asynchronous signals such as permission status update and IpcNetworkManager's SignalNetworksChanged in different order. When multiple_routes option is not requested, EmptyNetworkManager is used instead which simply just returns BLOCKED as permission status which will cause WebRTC to use the "any" address networks. This depends on the ongoing CL for MediaPermissionDispatcher https://codereview.chromium.org/1351443005/ In my test with my dev machine, I don't see the setup time has been increased by this call change and we have UMA to check that too. BUG=520101 Committed: https://crrev.com/8c1b85686e9e30179087c6767b6e2bc4684cf8e4 Cr-Commit-Position: refs/heads/master@{#351187}

Patch Set 1 : #

Total comments: 26

Patch Set 2 : #

Total comments: 40

Patch Set 3 : address comments. #

Total comments: 15

Patch Set 4 : #

Total comments: 3

Patch Set 5 : #

Patch Set 6 : #

Total comments: 3

Patch Set 7 : #

Patch Set 8 : #

Patch Set 9 : #

Total comments: 1

Patch Set 10 : #

Patch Set 11 : rebase, fix test issue, fix windows build issue. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+949 lines, -39 lines) Patch
M content/content_renderer.gypi View 1 2 3 4 5 6 7 8 9 10 2 chunks +6 lines, -0 lines 0 comments Download
M content/content_tests.gypi View 1 2 3 4 5 6 7 8 9 10 1 chunk +1 line, -0 lines 0 comments Download
M content/renderer/media/webrtc/peer_connection_dependency_factory.cc View 1 2 3 4 5 6 7 8 9 10 5 chunks +81 lines, -25 lines 0 comments Download
A content/renderer/p2p/empty_network_manager.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +46 lines, -0 lines 0 comments Download
A content/renderer/p2p/empty_network_manager.cc View 1 1 chunk +54 lines, -0 lines 0 comments Download
A content/renderer/p2p/filtering_network_manager.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +126 lines, -0 lines 0 comments Download
A content/renderer/p2p/filtering_network_manager.cc View 1 2 3 1 chunk +170 lines, -0 lines 0 comments Download
A content/renderer/p2p/filtering_network_manager_unittest.cc View 1 2 3 4 5 6 7 8 9 10 1 chunk +357 lines, -0 lines 0 comments Download
A content/renderer/p2p/network_manager_uma.h View 1 2 1 chunk +28 lines, -0 lines 0 comments Download
A content/renderer/p2p/network_manager_uma.cc View 1 2 1 chunk +21 lines, -0 lines 0 comments Download
M content/renderer/p2p/port_allocator.h View 1 3 chunks +16 lines, -7 lines 0 comments Download
M content/renderer/p2p/port_allocator.cc View 1 2 3 3 chunks +16 lines, -7 lines 0 comments Download
M tools/metrics/histograms/histograms.xml View 1 2 3 4 5 6 7 8 9 10 3 chunks +27 lines, -0 lines 0 comments Download

Messages

Total messages: 60 (30 generated)
guoweis_left_chromium
PTAL.
5 years, 3 months ago (2015-09-21 19:40:55 UTC) #3
Sergey Ulanov
https://codereview.chromium.org/1349823004/diff/20001/content/renderer/p2p/empty_network_manager.cc File content/renderer/p2p/empty_network_manager.cc (right): https://codereview.chromium.org/1349823004/diff/20001/content/renderer/p2p/empty_network_manager.cc#newcode16 content/renderer/p2p/empty_network_manager.cc:16: const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) You use |task_runner| just to check ...
5 years, 3 months ago (2015-09-21 22:12:59 UTC) #4
guoweis_left_chromium
PTAL. https://codereview.chromium.org/1349823004/diff/20001/content/renderer/p2p/empty_network_manager.cc File content/renderer/p2p/empty_network_manager.cc (right): https://codereview.chromium.org/1349823004/diff/20001/content/renderer/p2p/empty_network_manager.cc#newcode16 content/renderer/p2p/empty_network_manager.cc:16: const scoped_refptr<base::SingleThreadTaskRunner>& task_runner) On 2015/09/21 22:12:58, Sergey Ulanov ...
5 years, 3 months ago (2015-09-22 17:56:56 UTC) #8
guoweis_left_chromium
On 2015/09/22 17:56:56, guoweis_chromium wrote: > PTAL. > > https://codereview.chromium.org/1349823004/diff/20001/content/renderer/p2p/empty_network_manager.cc > File content/renderer/p2p/empty_network_manager.cc (right): > ...
5 years, 3 months ago (2015-09-23 16:25:40 UTC) #9
Sergey Ulanov
Mostly style nits, except for the issue in port_allocator.cc https://codereview.chromium.org/1349823004/diff/100001/content/renderer/media/webrtc/peer_connection_dependency_factory.cc File content/renderer/media/webrtc/peer_connection_dependency_factory.cc (right): https://codereview.chromium.org/1349823004/diff/100001/content/renderer/media/webrtc/peer_connection_dependency_factory.cc#newcode117 content/renderer/media/webrtc/peer_connection_dependency_factory.cc:117: ...
5 years, 3 months ago (2015-09-24 19:37:29 UTC) #10
guoweis_left_chromium
PTAL. https://codereview.chromium.org/1349823004/diff/100001/content/renderer/media/webrtc/peer_connection_dependency_factory.cc File content/renderer/media/webrtc/peer_connection_dependency_factory.cc (right): https://codereview.chromium.org/1349823004/diff/100001/content/renderer/media/webrtc/peer_connection_dependency_factory.cc#newcode117 content/renderer/media/webrtc/peer_connection_dependency_factory.cc:117: scoped_ptr<media::MediaPermission>& media_permission, On 2015/09/24 19:37:28, Sergey Ulanov wrote: ...
5 years, 3 months ago (2015-09-24 23:06:01 UTC) #15
guoweis_left_chromium
On 2015/09/24 23:06:01, guoweis_chromium wrote: > PTAL. > > https://codereview.chromium.org/1349823004/diff/100001/content/renderer/media/webrtc/peer_connection_dependency_factory.cc > File content/renderer/media/webrtc/peer_connection_dependency_factory.cc > (right): ...
5 years, 3 months ago (2015-09-24 23:07:40 UTC) #16
guoweis_left_chromium
rkaplow@: please review histograms.xml
5 years, 3 months ago (2015-09-24 23:34:10 UTC) #17
guoweis_left_chromium
+rkaplow for histograms.xml
5 years, 3 months ago (2015-09-24 23:34:34 UTC) #19
Sergey Ulanov
https://codereview.chromium.org/1349823004/diff/100001/content/renderer/p2p/filtering_network_manager.cc File content/renderer/p2p/filtering_network_manager.cc (right): https://codereview.chromium.org/1349823004/diff/100001/content/renderer/p2p/filtering_network_manager.cc#newcode33 content/renderer/p2p/filtering_network_manager.cc:33: pending_permission_checks_ = 2; On 2015/09/24 23:06:00, guoweis_chromium wrote: > ...
5 years, 3 months ago (2015-09-25 00:45:31 UTC) #20
guoweis_left_chromium
PTAL. https://codereview.chromium.org/1349823004/diff/200001/content/renderer/media/webrtc/peer_connection_dependency_factory.cc File content/renderer/media/webrtc/peer_connection_dependency_factory.cc (right): https://codereview.chromium.org/1349823004/diff/200001/content/renderer/media/webrtc/peer_connection_dependency_factory.cc#newcode117 content/renderer/media/webrtc/peer_connection_dependency_factory.cc:117: // constructor inside rtc::RefCountedObject. rtc::RefCountedObject is a template ...
5 years, 3 months ago (2015-09-25 03:42:20 UTC) #21
rkaplow
https://codereview.chromium.org/1349823004/diff/190014/content/renderer/media/webrtc/peer_connection_dependency_factory.cc File content/renderer/media/webrtc/peer_connection_dependency_factory.cc (right): https://codereview.chromium.org/1349823004/diff/190014/content/renderer/media/webrtc/peer_connection_dependency_factory.cc#newcode460 content/renderer/media/webrtc/peer_connection_dependency_factory.cc:460: "Enabled" && instead of == "Enabled", best practice is ...
5 years, 2 months ago (2015-09-25 14:46:03 UTC) #23
guoweis_left_chromium
rkaplow@, PTAL. https://codereview.chromium.org/1349823004/diff/190014/tools/metrics/histograms/histograms.xml File tools/metrics/histograms/histograms.xml (right): https://codereview.chromium.org/1349823004/diff/190014/tools/metrics/histograms/histograms.xml#newcode51911 tools/metrics/histograms/histograms.xml:51911: + requested and/or granted. This is collected ...
5 years, 2 months ago (2015-09-25 16:30:09 UTC) #24
Sergey Ulanov
https://codereview.chromium.org/1349823004/diff/200001/content/renderer/media/webrtc/peer_connection_dependency_factory.cc File content/renderer/media/webrtc/peer_connection_dependency_factory.cc (right): https://codereview.chromium.org/1349823004/diff/200001/content/renderer/media/webrtc/peer_connection_dependency_factory.cc#newcode114 content/renderer/media/webrtc/peer_connection_dependency_factory.cc:114: class P2PPortAllocatorFactory : public webrtc::PortAllocatorFactoryInterface { I thinks you ...
5 years, 2 months ago (2015-09-25 18:19:20 UTC) #25
guoweis_left_chromium
On 2015/09/25 18:19:20, Sergey Ulanov wrote: > https://codereview.chromium.org/1349823004/diff/200001/content/renderer/media/webrtc/peer_connection_dependency_factory.cc > File content/renderer/media/webrtc/peer_connection_dependency_factory.cc > (right): > > ...
5 years, 2 months ago (2015-09-25 18:28:01 UTC) #26
rkaplow
lgtm histogram lgtm
5 years, 2 months ago (2015-09-25 18:34:47 UTC) #27
Sergey Ulanov
https://codereview.chromium.org/1349823004/diff/270001/content/renderer/media/webrtc/peer_connection_dependency_factory.cc File content/renderer/media/webrtc/peer_connection_dependency_factory.cc (right): https://codereview.chromium.org/1349823004/diff/270001/content/renderer/media/webrtc/peer_connection_dependency_factory.cc#newcode120 content/renderer/media/webrtc/peer_connection_dependency_factory.cc:120: const scoped_refptr<P2PSocketDispatcher> socket_dispatcher, it's fine to pass scoped_refptr<> as ...
5 years, 2 months ago (2015-09-25 19:11:44 UTC) #28
guoweis_left_chromium
On 2015/09/25 19:11:44, Sergey Ulanov wrote: > https://codereview.chromium.org/1349823004/diff/270001/content/renderer/media/webrtc/peer_connection_dependency_factory.cc > File content/renderer/media/webrtc/peer_connection_dependency_factory.cc > (right): > > ...
5 years, 2 months ago (2015-09-25 20:45:54 UTC) #29
Sergey Ulanov
lgtm https://codereview.chromium.org/1349823004/diff/330001/content/renderer/media/webrtc/peer_connection_dependency_factory.cc File content/renderer/media/webrtc/peer_connection_dependency_factory.cc (right): https://codereview.chromium.org/1349823004/diff/330001/content/renderer/media/webrtc/peer_connection_dependency_factory.cc#newcode187 content/renderer/media/webrtc/peer_connection_dependency_factory.cc:187: const P2PPortAllocator::Config config_; nit: don't need const here ...
5 years, 2 months ago (2015-09-25 22:11:23 UTC) #30
guoweis_left_chromium
On 2015/09/25 22:11:23, Sergey Ulanov wrote: > lgtm > > https://codereview.chromium.org/1349823004/diff/330001/content/renderer/media/webrtc/peer_connection_dependency_factory.cc > File content/renderer/media/webrtc/peer_connection_dependency_factory.cc > ...
5 years, 2 months ago (2015-09-25 22:14:11 UTC) #31
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1349823004/350001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1349823004/350001
5 years, 2 months ago (2015-09-25 22:15:24 UTC) #34
commit-bot: I haz the power
Try jobs failed on following builders: ios_dbg_simulator_ninja on tryserver.chromium.mac (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.mac/builders/ios_dbg_simulator_ninja/builds/74087) ios_rel_device_ninja on tryserver.chromium.mac (JOB_FAILED, ...
5 years, 2 months ago (2015-09-25 22:18:39 UTC) #36
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1349823004/370001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1349823004/370001
5 years, 2 months ago (2015-09-25 23:14:38 UTC) #39
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1349823004/390001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1349823004/390001
5 years, 2 months ago (2015-09-25 23:51:53 UTC) #43
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1349823004/410001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1349823004/410001
5 years, 2 months ago (2015-09-28 17:11:48 UTC) #49
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1349823004/410001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1349823004/410001
5 years, 2 months ago (2015-09-28 17:43:30 UTC) #54
commit-bot: I haz the power
Try jobs failed on following builders: linux_android_rel_ng on tryserver.chromium.linux (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.linux/builders/linux_android_rel_ng/builds/74568)
5 years, 2 months ago (2015-09-28 20:09:02 UTC) #56
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/1349823004/410001 View timeline at https://chromium-cq-status.appspot.com/patch-timeline/1349823004/410001
5 years, 2 months ago (2015-09-28 20:11:26 UTC) #58
commit-bot: I haz the power
Committed patchset #11 (id:410001)
5 years, 2 months ago (2015-09-28 22:48:25 UTC) #59
commit-bot: I haz the power
5 years, 2 months ago (2015-09-28 22:49:23 UTC) #60
Message was sent while issue was closed.
Patchset 11 (id:??) landed as
https://crrev.com/8c1b85686e9e30179087c6767b6e2bc4684cf8e4
Cr-Commit-Position: refs/heads/master@{#351187}

Powered by Google App Engine
This is Rietveld 408576698