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

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

Issue 2640573002: Remove WebMediaPlayerDelegate null checks (Closed)
Patch Set: Undo accidental delete of WMPI::delegate_ Created 3 years, 11 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 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 <stddef.h> 7 #include <stddef.h>
8 #include <limits> 8 #include <limits>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
136 base::ThreadChecker io_thread_checker_; 136 base::ThreadChecker io_thread_checker_;
137 137
138 base::WeakPtrFactory<FrameDeliverer> weak_factory_; 138 base::WeakPtrFactory<FrameDeliverer> weak_factory_;
139 139
140 DISALLOW_COPY_AND_ASSIGN(FrameDeliverer); 140 DISALLOW_COPY_AND_ASSIGN(FrameDeliverer);
141 }; 141 };
142 142
143 WebMediaPlayerMS::WebMediaPlayerMS( 143 WebMediaPlayerMS::WebMediaPlayerMS(
144 blink::WebFrame* frame, 144 blink::WebFrame* frame,
145 blink::WebMediaPlayerClient* client, 145 blink::WebMediaPlayerClient* client,
146 base::WeakPtr<media::WebMediaPlayerDelegate> delegate, 146 media::WebMediaPlayerDelegate* delegate,
147 media::MediaLog* media_log, 147 media::MediaLog* media_log,
148 std::unique_ptr<MediaStreamRendererFactory> factory, 148 std::unique_ptr<MediaStreamRendererFactory> factory,
149 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner, 149 scoped_refptr<base::SingleThreadTaskRunner> io_task_runner,
150 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner, 150 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner,
151 scoped_refptr<base::SingleThreadTaskRunner> media_task_runner, 151 scoped_refptr<base::SingleThreadTaskRunner> media_task_runner,
152 scoped_refptr<base::TaskRunner> worker_task_runner, 152 scoped_refptr<base::TaskRunner> worker_task_runner,
153 media::GpuVideoAcceleratorFactories* gpu_factories, 153 media::GpuVideoAcceleratorFactories* gpu_factories,
154 const blink::WebString& sink_id, 154 const blink::WebString& sink_id,
155 const blink::WebSecurityOrigin& security_origin) 155 const blink::WebSecurityOrigin& security_origin)
156 : frame_(frame), 156 : frame_(frame),
(...skipping 14 matching lines...) Expand all
171 gpu_factories_(gpu_factories), 171 gpu_factories_(gpu_factories),
172 initial_audio_output_device_id_(sink_id.utf8()), 172 initial_audio_output_device_id_(sink_id.utf8()),
173 initial_security_origin_(security_origin.isNull() 173 initial_security_origin_(security_origin.isNull()
174 ? url::Origin() 174 ? url::Origin()
175 : url::Origin(security_origin)), 175 : url::Origin(security_origin)),
176 volume_(1.0), 176 volume_(1.0),
177 volume_multiplier_(1.0), 177 volume_multiplier_(1.0),
178 should_play_upon_shown_(false) { 178 should_play_upon_shown_(false) {
179 DVLOG(1) << __func__; 179 DVLOG(1) << __func__;
180 DCHECK(client); 180 DCHECK(client);
181 if (delegate_) 181 DCHECK(delegate_);
182 delegate_id_ = delegate_->AddObserver(this); 182 delegate_id_ = delegate_->AddObserver(this);
183 183
184 media_log_->AddEvent( 184 media_log_->AddEvent(
185 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED)); 185 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_CREATED));
186 } 186 }
187 187
188 WebMediaPlayerMS::~WebMediaPlayerMS() { 188 WebMediaPlayerMS::~WebMediaPlayerMS() {
189 DVLOG(1) << __func__; 189 DVLOG(1) << __func__;
190 DCHECK(thread_checker_.CalledOnValidThread()); 190 DCHECK(thread_checker_.CalledOnValidThread());
191 191
192 // Destruct compositor resources in the proper order. 192 // Destruct compositor resources in the proper order.
193 get_client()->setWebLayer(nullptr); 193 get_client()->setWebLayer(nullptr);
194 if (video_weblayer_) 194 if (video_weblayer_)
195 static_cast<cc::VideoLayer*>(video_weblayer_->layer())->StopUsingProvider(); 195 static_cast<cc::VideoLayer*>(video_weblayer_->layer())->StopUsingProvider();
196 196
197 if (frame_deliverer_) 197 if (frame_deliverer_)
198 io_task_runner_->DeleteSoon(FROM_HERE, frame_deliverer_.release()); 198 io_task_runner_->DeleteSoon(FROM_HERE, frame_deliverer_.release());
199 199
200 if (compositor_) 200 if (compositor_)
201 compositor_->StopUsingProvider(); 201 compositor_->StopUsingProvider();
202 202
203 if (video_frame_provider_) 203 if (video_frame_provider_)
204 video_frame_provider_->Stop(); 204 video_frame_provider_->Stop();
205 205
206 if (audio_renderer_) 206 if (audio_renderer_)
207 audio_renderer_->Stop(); 207 audio_renderer_->Stop();
208 208
209 media_log_->AddEvent( 209 media_log_->AddEvent(
210 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_DESTROYED)); 210 media_log_->CreateEvent(media::MediaLogEvent::WEBMEDIAPLAYER_DESTROYED));
211 211
212 if (delegate_) { 212 delegate_->PlayerGone(delegate_id_);
213 delegate_->PlayerGone(delegate_id_); 213 delegate_->RemoveObserver(delegate_id_);
214 delegate_->RemoveObserver(delegate_id_);
215 }
216 } 214 }
217 215
218 void WebMediaPlayerMS::load(LoadType load_type, 216 void WebMediaPlayerMS::load(LoadType load_type,
219 const blink::WebMediaPlayerSource& source, 217 const blink::WebMediaPlayerSource& source,
220 CORSMode /*cors_mode*/) { 218 CORSMode /*cors_mode*/) {
221 DVLOG(1) << __func__; 219 DVLOG(1) << __func__;
222 DCHECK(thread_checker_.CalledOnValidThread()); 220 DCHECK(thread_checker_.CalledOnValidThread());
223 221
224 // TODO(acolwell): Change this to DCHECK_EQ(load_type, LoadTypeMediaStream) 222 // TODO(acolwell): Change this to DCHECK_EQ(load_type, LoadTypeMediaStream)
225 // once Blink-side changes land. 223 // once Blink-side changes land.
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 return; 282 return;
285 283
286 if (video_frame_provider_) 284 if (video_frame_provider_)
287 video_frame_provider_->Resume(); 285 video_frame_provider_->Resume();
288 286
289 compositor_->StartRendering(); 287 compositor_->StartRendering();
290 288
291 if (audio_renderer_) 289 if (audio_renderer_)
292 audio_renderer_->Play(); 290 audio_renderer_->Play();
293 291
294 if (delegate_) { 292 // TODO(perkj, magjed): We use OneShot focus type here so that it takes
295 // TODO(perkj, magjed): We use OneShot focus type here so that it takes 293 // audio focus once it starts, and then will not respond to further audio
296 // audio focus once it starts, and then will not respond to further audio 294 // focus changes. See http://crbug.com/596516 for more details.
297 // focus changes. See http://crbug.com/596516 for more details. 295 delegate_->DidPlay(delegate_id_, hasVideo(), hasAudio(),
298 delegate_->DidPlay(delegate_id_, hasVideo(), hasAudio(), 296 media::MediaContentType::OneShot);
299 media::MediaContentType::OneShot); 297 delegate_->SetIdle(delegate_id_, false);
300 delegate_->SetIdle(delegate_id_, false);
301 }
302 298
303 paused_ = false; 299 paused_ = false;
304 } 300 }
305 301
306 void WebMediaPlayerMS::pause() { 302 void WebMediaPlayerMS::pause() {
307 DVLOG(1) << __func__; 303 DVLOG(1) << __func__;
308 DCHECK(thread_checker_.CalledOnValidThread()); 304 DCHECK(thread_checker_.CalledOnValidThread());
309 305
310 should_play_upon_shown_ = false; 306 should_play_upon_shown_ = false;
311 media_log_->AddEvent(media_log_->CreateEvent(media::MediaLogEvent::PAUSE)); 307 media_log_->AddEvent(media_log_->CreateEvent(media::MediaLogEvent::PAUSE));
312 if (paused_) 308 if (paused_)
313 return; 309 return;
314 310
315 if (video_frame_provider_) 311 if (video_frame_provider_)
316 video_frame_provider_->Pause(); 312 video_frame_provider_->Pause();
317 313
318 compositor_->StopRendering(); 314 compositor_->StopRendering();
319 compositor_->ReplaceCurrentFrameWithACopy(); 315 compositor_->ReplaceCurrentFrameWithACopy();
320 316
321 if (audio_renderer_) 317 if (audio_renderer_)
322 audio_renderer_->Pause(); 318 audio_renderer_->Pause();
323 319
324 if (delegate_) { 320 delegate_->DidPause(delegate_id_);
325 delegate_->DidPause(delegate_id_); 321 delegate_->SetIdle(delegate_id_, true);
326 delegate_->SetIdle(delegate_id_, true);
327 }
328 322
329 paused_ = true; 323 paused_ = true;
330 } 324 }
331 325
332 bool WebMediaPlayerMS::supportsSave() const { 326 bool WebMediaPlayerMS::supportsSave() const {
333 DCHECK(thread_checker_.CalledOnValidThread()); 327 DCHECK(thread_checker_.CalledOnValidThread());
334 return false; 328 return false;
335 } 329 }
336 330
337 void WebMediaPlayerMS::seek(double seconds) { 331 void WebMediaPlayerMS::seek(double seconds) {
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 #endif // defined(OS_ANDROID) 521 #endif // defined(OS_ANDROID)
528 } 522 }
529 523
530 void WebMediaPlayerMS::OnFrameClosed() { 524 void WebMediaPlayerMS::OnFrameClosed() {
531 #if defined(OS_ANDROID) 525 #if defined(OS_ANDROID)
532 if (!paused_) { 526 if (!paused_) {
533 pause(); 527 pause();
534 should_play_upon_shown_ = true; 528 should_play_upon_shown_ = true;
535 } 529 }
536 530
537 if (delegate_) 531 delegate_->PlayerGone(delegate_id_);
538 delegate_->PlayerGone(delegate_id_);
539 532
540 if (frame_deliverer_) { 533 if (frame_deliverer_) {
541 io_task_runner_->PostTask( 534 io_task_runner_->PostTask(
542 FROM_HERE, base::Bind(&FrameDeliverer::SetRenderFrameSuspended, 535 FROM_HERE, base::Bind(&FrameDeliverer::SetRenderFrameSuspended,
543 base::Unretained(frame_deliverer_.get()), true)); 536 base::Unretained(frame_deliverer_.get()), true));
544 } 537 }
545 #endif // defined(OS_ANDROID) 538 #endif // defined(OS_ANDROID)
546 } 539 }
547 540
548 void WebMediaPlayerMS::OnFrameShown() { 541 void WebMediaPlayerMS::OnFrameShown() {
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 void WebMediaPlayerMS::ResetCanvasCache() { 696 void WebMediaPlayerMS::ResetCanvasCache() {
704 DCHECK(thread_checker_.CalledOnValidThread()); 697 DCHECK(thread_checker_.CalledOnValidThread());
705 video_renderer_.ResetCache(); 698 video_renderer_.ResetCache();
706 } 699 }
707 700
708 void WebMediaPlayerMS::TriggerResize() { 701 void WebMediaPlayerMS::TriggerResize() {
709 get_client()->sizeChanged(); 702 get_client()->sizeChanged();
710 } 703 }
711 704
712 } // namespace content 705 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/webmediaplayer_ms.h ('k') | content/renderer/media/webmediaplayer_ms_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698