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

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

Issue 1417533006: Unit test for WebMediaPlayerMS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Kill Memory Leak Created 5 years 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/webmediaplayer_ms.h" 5 #include "content/renderer/media/webmediaplayer_ms.h"
6 6
7 #include <limits> 7 #include <limits>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 paused_(true), 57 paused_(true),
58 render_frame_suspended_(false), 58 render_frame_suspended_(false),
59 received_first_frame_(false), 59 received_first_frame_(false),
60 media_log_(media_log), 60 media_log_(media_log),
61 renderer_factory_(factory.Pass()), 61 renderer_factory_(factory.Pass()),
62 media_task_runner_(media_task_runner), 62 media_task_runner_(media_task_runner),
63 worker_task_runner_(worker_task_runner), 63 worker_task_runner_(worker_task_runner),
64 gpu_factories_(gpu_factories), 64 gpu_factories_(gpu_factories),
65 compositor_task_runner_(compositor_task_runner), 65 compositor_task_runner_(compositor_task_runner),
66 initial_audio_output_device_id_(sink_id.utf8()), 66 initial_audio_output_device_id_(sink_id.utf8()),
67 initial_security_origin_(security_origin) { 67 initial_security_origin_(security_origin.isNull()
68 ? url::Origin()
69 : url::Origin(security_origin)) {
68 DVLOG(1) << __FUNCTION__; 70 DVLOG(1) << __FUNCTION__;
69 DCHECK(client); 71 DCHECK(client);
70 media_log_->AddEvent( 72 media_log_->AddEvent(
71 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); 73 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED));
72 } 74 }
73 75
74 WebMediaPlayerMS::~WebMediaPlayerMS() { 76 WebMediaPlayerMS::~WebMediaPlayerMS() {
75 DVLOG(1) << __FUNCTION__; 77 DVLOG(1) << __FUNCTION__;
76 DCHECK(thread_checker_.CalledOnValidThread()); 78 DCHECK(thread_checker_.CalledOnValidThread());
77 79
78 if (compositor_) 80 if (compositor_ && !compositor_task_runner_->BelongsToCurrentThread())
79 compositor_task_runner_->DeleteSoon(FROM_HERE, compositor_.release()); 81 compositor_task_runner_->DeleteSoon(FROM_HERE, compositor_.release());
80 82
81 get_client()->setWebLayer(nullptr); 83 get_client()->setWebLayer(nullptr);
82 84
83 if (video_frame_provider_) 85 if (video_frame_provider_)
84 video_frame_provider_->Stop(); 86 video_frame_provider_->Stop();
85 87
86 if (audio_renderer_) 88 if (audio_renderer_)
87 audio_renderer_->Stop(); 89 audio_renderer_->Stop();
88 90
(...skipping 23 matching lines...) Expand all
112 114
113 video_frame_provider_ = renderer_factory_->GetVideoFrameProvider( 115 video_frame_provider_ = renderer_factory_->GetVideoFrameProvider(
114 url, 116 url,
115 base::Bind(&WebMediaPlayerMS::OnSourceError, AsWeakPtr()), 117 base::Bind(&WebMediaPlayerMS::OnSourceError, AsWeakPtr()),
116 base::Bind(&WebMediaPlayerMS::OnFrameAvailable, AsWeakPtr()), 118 base::Bind(&WebMediaPlayerMS::OnFrameAvailable, AsWeakPtr()),
117 media_task_runner_, 119 media_task_runner_,
118 worker_task_runner_, 120 worker_task_runner_,
119 gpu_factories_); 121 gpu_factories_);
120 122
121 RenderFrame* const frame = RenderFrame::FromWebFrame(frame_); 123 RenderFrame* const frame = RenderFrame::FromWebFrame(frame_);
122 audio_renderer_ = renderer_factory_->GetAudioRenderer( 124
123 url, frame->GetRoutingID(), initial_audio_output_device_id_, 125 if (frame) {
124 initial_security_origin_); 126 audio_renderer_ = renderer_factory_->GetAudioRenderer(
127 url, frame->GetRoutingID(), initial_audio_output_device_id_,
128 initial_security_origin_);
129 }
125 130
126 if (!video_frame_provider_ && !audio_renderer_) { 131 if (!video_frame_provider_ && !audio_renderer_) {
127 SetNetworkState(WebMediaPlayer::NetworkStateNetworkError); 132 SetNetworkState(WebMediaPlayer::NetworkStateNetworkError);
128 return; 133 return;
129 } 134 }
130 135
131 if (audio_renderer_) { 136 if (audio_renderer_) {
132 audio_renderer_->SetVolume(DEFAULT_AUDIO_VOLUME); 137 audio_renderer_->SetVolume(DEFAULT_AUDIO_VOLUME);
133 audio_renderer_->Start(); 138 audio_renderer_->Start();
134 } 139 }
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 } 477 }
473 478
474 media::SkCanvasVideoRenderer* WebMediaPlayerMS::GetSkCanvasVideoRenderer() { 479 media::SkCanvasVideoRenderer* WebMediaPlayerMS::GetSkCanvasVideoRenderer() {
475 return &video_renderer_; 480 return &video_renderer_;
476 } 481 }
477 482
478 void WebMediaPlayerMS::ResetCanvasCache() { 483 void WebMediaPlayerMS::ResetCanvasCache() {
479 DCHECK(thread_checker_.CalledOnValidThread()); 484 DCHECK(thread_checker_.CalledOnValidThread());
480 video_renderer_.ResetCache(); 485 video_renderer_.ResetCache();
481 } 486 }
487
482 } // namespace content 488 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/webmediaplayer_ms.h ('k') | content/renderer/media/webmediaplayer_ms_compositor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698