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

Side by Side Diff: content/renderer/media/media_stream_video_source.cc

Issue 1873293002: Report if video capturing meets output protection requirement. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments. Rebased. Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/media/media_stream_video_source.h" 5 #include "content/renderer/media/media_stream_video_source.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <string> 9 #include <string>
10 10
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 return std::find(kSupportedConstraints, 310 return std::find(kSupportedConstraints,
311 kSupportedConstraints + arraysize(kSupportedConstraints), 311 kSupportedConstraints + arraysize(kSupportedConstraints),
312 name) != 312 name) !=
313 kSupportedConstraints + arraysize(kSupportedConstraints); 313 kSupportedConstraints + arraysize(kSupportedConstraints);
314 } 314 }
315 315
316 MediaStreamVideoSource::MediaStreamVideoSource() 316 MediaStreamVideoSource::MediaStreamVideoSource()
317 : state_(NEW), 317 : state_(NEW),
318 track_adapter_( 318 track_adapter_(
319 new VideoTrackAdapter(ChildProcess::current()->io_task_runner())), 319 new VideoTrackAdapter(ChildProcess::current()->io_task_runner())),
320 weak_factory_(this) { 320 secure_tracker_(new CapturingLinkSecureTracker<MediaStreamVideoTrack>()),
321 } 321 weak_factory_(this) {}
322 322
323 MediaStreamVideoSource::~MediaStreamVideoSource() { 323 MediaStreamVideoSource::~MediaStreamVideoSource() {
324 DCHECK(CalledOnValidThread()); 324 DCHECK(CalledOnValidThread());
325 } 325 }
326 326
327 void MediaStreamVideoSource::AddTrack( 327 void MediaStreamVideoSource::AddTrack(
328 MediaStreamVideoTrack* track, 328 MediaStreamVideoTrack* track,
329 const VideoCaptureDeliverFrameCB& frame_callback, 329 const VideoCaptureDeliverFrameCB& frame_callback,
330 const blink::WebMediaConstraints& constraints, 330 const blink::WebMediaConstraints& constraints,
331 const ConstraintsCallback& callback) { 331 const ConstraintsCallback& callback) {
332 DCHECK(CalledOnValidThread()); 332 DCHECK(CalledOnValidThread());
333 DCHECK(!constraints.isNull()); 333 DCHECK(!constraints.isNull());
334 DCHECK(std::find(tracks_.begin(), tracks_.end(), track) == tracks_.end()); 334 DCHECK(std::find(tracks_.begin(), tracks_.end(), track) == tracks_.end());
335 tracks_.push_back(track); 335 tracks_.push_back(track);
336 secure_tracker_->AddLinkSecure(track, true);
336 337
337 track_descriptors_.push_back( 338 track_descriptors_.push_back(
338 TrackDescriptor(track, frame_callback, constraints, callback)); 339 TrackDescriptor(track, frame_callback, constraints, callback));
339 340
340 switch (state_) { 341 switch (state_) {
341 case NEW: { 342 case NEW: {
342 // Tab capture and Screen capture needs the maximum requested height 343 // Tab capture and Screen capture needs the maximum requested height
343 // and width to decide on the resolution. 344 // and width to decide on the resolution.
344 int max_requested_width = 0; 345 int max_requested_width = 0;
345 if (constraints.basic().width.hasMax()) 346 if (constraints.basic().width.hasMax())
(...skipping 30 matching lines...) Expand all
376 } 377 }
377 } 378 }
378 } 379 }
379 380
380 void MediaStreamVideoSource::RemoveTrack(MediaStreamVideoTrack* video_track) { 381 void MediaStreamVideoSource::RemoveTrack(MediaStreamVideoTrack* video_track) {
381 DCHECK(CalledOnValidThread()); 382 DCHECK(CalledOnValidThread());
382 std::vector<MediaStreamVideoTrack*>::iterator it = 383 std::vector<MediaStreamVideoTrack*>::iterator it =
383 std::find(tracks_.begin(), tracks_.end(), video_track); 384 std::find(tracks_.begin(), tracks_.end(), video_track);
384 DCHECK(it != tracks_.end()); 385 DCHECK(it != tracks_.end());
385 tracks_.erase(it); 386 tracks_.erase(it);
387 secure_tracker_->RemoveLinkSecure(video_track);
386 388
387 for (std::vector<TrackDescriptor>::iterator it = track_descriptors_.begin(); 389 for (std::vector<TrackDescriptor>::iterator it = track_descriptors_.begin();
388 it != track_descriptors_.end(); ++it) { 390 it != track_descriptors_.end(); ++it) {
389 if (it->track == video_track) { 391 if (it->track == video_track) {
390 track_descriptors_.erase(it); 392 track_descriptors_.erase(it);
391 break; 393 break;
392 } 394 }
393 } 395 }
394 396
395 // Call |frame_adapter_->RemoveTrack| here even if adding the track has 397 // Call |frame_adapter_->RemoveTrack| here even if adding the track has
396 // failed and |frame_adapter_->AddCallback| has not been called. 398 // failed and |frame_adapter_->AddCallback| has not been called.
397 track_adapter_->RemoveTrack(video_track); 399 track_adapter_->RemoveTrack(video_track);
398 400
399 if (tracks_.empty()) 401 if (tracks_.empty())
400 StopSource(); 402 StopSource();
401 } 403 }
402 404
405 void MediaStreamVideoSource::UpdateCapturingLinkSecure(
406 MediaStreamVideoTrack* track,
407 bool is_secure) {
408 secure_tracker_->UpdateLinkSecure(track, is_secure);
409 SetCapturingLinkSecured(secure_tracker_->is_capturing_secure());
410 }
411
403 base::SingleThreadTaskRunner* MediaStreamVideoSource::io_task_runner() const { 412 base::SingleThreadTaskRunner* MediaStreamVideoSource::io_task_runner() const {
404 DCHECK(CalledOnValidThread()); 413 DCHECK(CalledOnValidThread());
405 return track_adapter_->io_task_runner(); 414 return track_adapter_->io_task_runner();
406 } 415 }
407 416
408 const media::VideoCaptureFormat* 417 const media::VideoCaptureFormat*
409 MediaStreamVideoSource::GetCurrentFormat() const { 418 MediaStreamVideoSource::GetCurrentFormat() const {
410 DCHECK(CalledOnValidThread()); 419 DCHECK(CalledOnValidThread());
411 if (state_ == STARTING || state_ == STARTED) 420 if (state_ == STARTING || state_ == STARTED)
412 return &current_format_; 421 return &current_format_;
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 callback(callback) { 597 callback(callback) {
589 } 598 }
590 599
591 MediaStreamVideoSource::TrackDescriptor::TrackDescriptor( 600 MediaStreamVideoSource::TrackDescriptor::TrackDescriptor(
592 const TrackDescriptor& other) = default; 601 const TrackDescriptor& other) = default;
593 602
594 MediaStreamVideoSource::TrackDescriptor::~TrackDescriptor() { 603 MediaStreamVideoSource::TrackDescriptor::~TrackDescriptor() {
595 } 604 }
596 605
597 } // namespace content 606 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698