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

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. Created 4 years, 7 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 weak_factory_(this) {}
321 }
322 321
323 MediaStreamVideoSource::~MediaStreamVideoSource() { 322 MediaStreamVideoSource::~MediaStreamVideoSource() {
324 DCHECK(CalledOnValidThread()); 323 DCHECK(CalledOnValidThread());
325 } 324 }
326 325
327 void MediaStreamVideoSource::AddTrack( 326 void MediaStreamVideoSource::AddTrack(
328 MediaStreamVideoTrack* track, 327 MediaStreamVideoTrack* track,
329 const VideoCaptureDeliverFrameCB& frame_callback, 328 const VideoCaptureDeliverFrameCB& frame_callback,
330 const blink::WebMediaConstraints& constraints, 329 const blink::WebMediaConstraints& constraints,
331 const ConstraintsCallback& callback) { 330 const ConstraintsCallback& callback) {
332 DCHECK(CalledOnValidThread()); 331 DCHECK(CalledOnValidThread());
333 DCHECK(!constraints.isNull()); 332 DCHECK(!constraints.isNull());
334 DCHECK(std::find(tracks_.begin(), tracks_.end(), track) == tracks_.end()); 333 DCHECK(std::find(tracks_.begin(), tracks_.end(), track) == tracks_.end());
335 tracks_.push_back(track); 334 tracks_.push_back(track);
335 secure_tracker_.Add(track, true);
336 336
337 track_descriptors_.push_back( 337 track_descriptors_.push_back(
338 TrackDescriptor(track, frame_callback, constraints, callback)); 338 TrackDescriptor(track, frame_callback, constraints, callback));
339 339
340 switch (state_) { 340 switch (state_) {
341 case NEW: { 341 case NEW: {
342 // Tab capture and Screen capture needs the maximum requested height 342 // Tab capture and Screen capture needs the maximum requested height
343 // and width to decide on the resolution. 343 // and width to decide on the resolution.
344 int max_requested_width = 0; 344 int max_requested_width = 0;
345 if (constraints.basic().width.hasMax()) 345 if (constraints.basic().width.hasMax())
(...skipping 30 matching lines...) Expand all
376 } 376 }
377 } 377 }
378 } 378 }
379 379
380 void MediaStreamVideoSource::RemoveTrack(MediaStreamVideoTrack* video_track) { 380 void MediaStreamVideoSource::RemoveTrack(MediaStreamVideoTrack* video_track) {
381 DCHECK(CalledOnValidThread()); 381 DCHECK(CalledOnValidThread());
382 std::vector<MediaStreamVideoTrack*>::iterator it = 382 std::vector<MediaStreamVideoTrack*>::iterator it =
383 std::find(tracks_.begin(), tracks_.end(), video_track); 383 std::find(tracks_.begin(), tracks_.end(), video_track);
384 DCHECK(it != tracks_.end()); 384 DCHECK(it != tracks_.end());
385 tracks_.erase(it); 385 tracks_.erase(it);
386 secure_tracker_.Remove(video_track);
386 387
387 for (std::vector<TrackDescriptor>::iterator it = track_descriptors_.begin(); 388 for (std::vector<TrackDescriptor>::iterator it = track_descriptors_.begin();
388 it != track_descriptors_.end(); ++it) { 389 it != track_descriptors_.end(); ++it) {
389 if (it->track == video_track) { 390 if (it->track == video_track) {
390 track_descriptors_.erase(it); 391 track_descriptors_.erase(it);
391 break; 392 break;
392 } 393 }
393 } 394 }
394 395
395 // Call |frame_adapter_->RemoveTrack| here even if adding the track has 396 // Call |frame_adapter_->RemoveTrack| here even if adding the track has
396 // failed and |frame_adapter_->AddCallback| has not been called. 397 // failed and |frame_adapter_->AddCallback| has not been called.
397 track_adapter_->RemoveTrack(video_track); 398 track_adapter_->RemoveTrack(video_track);
398 399
399 if (tracks_.empty()) 400 if (tracks_.empty())
400 StopSource(); 401 StopSource();
401 } 402 }
402 403
404 void MediaStreamVideoSource::UpdateCapturingLinkSecure(
405 MediaStreamVideoTrack* track,
406 bool is_secure) {
407 secure_tracker_.Update(track, is_secure);
408 SetCapturingLinkSecured(secure_tracker_.is_capturing_secure());
409 }
410
403 base::SingleThreadTaskRunner* MediaStreamVideoSource::io_task_runner() const { 411 base::SingleThreadTaskRunner* MediaStreamVideoSource::io_task_runner() const {
404 DCHECK(CalledOnValidThread()); 412 DCHECK(CalledOnValidThread());
405 return track_adapter_->io_task_runner(); 413 return track_adapter_->io_task_runner();
406 } 414 }
407 415
408 const media::VideoCaptureFormat* 416 const media::VideoCaptureFormat*
409 MediaStreamVideoSource::GetCurrentFormat() const { 417 MediaStreamVideoSource::GetCurrentFormat() const {
410 DCHECK(CalledOnValidThread()); 418 DCHECK(CalledOnValidThread());
411 if (state_ == STARTING || state_ == STARTED) 419 if (state_ == STARTING || state_ == STARTED)
412 return &current_format_; 420 return &current_format_;
(...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 callback(callback) { 596 callback(callback) {
589 } 597 }
590 598
591 MediaStreamVideoSource::TrackDescriptor::TrackDescriptor( 599 MediaStreamVideoSource::TrackDescriptor::TrackDescriptor(
592 const TrackDescriptor& other) = default; 600 const TrackDescriptor& other) = default;
593 601
594 MediaStreamVideoSource::TrackDescriptor::~TrackDescriptor() { 602 MediaStreamVideoSource::TrackDescriptor::~TrackDescriptor() {
595 } 603 }
596 604
597 } // namespace content 605 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698