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

Side by Side Diff: content/renderer/render_frame_impl.cc

Issue 375713002: Ties RenderFrameImpl VIDEO_HOLE observer to lifetime of RenderWidget. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: only hook up observer for known media playback Created 6 years, 5 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
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/render_frame_impl.h" 5 #include "content/renderer/render_frame_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 handling_select_range_(false), 399 handling_select_range_(false),
400 notification_provider_(NULL), 400 notification_provider_(NULL),
401 web_user_media_client_(NULL), 401 web_user_media_client_(NULL),
402 midi_dispatcher_(NULL), 402 midi_dispatcher_(NULL),
403 #if defined(OS_ANDROID) 403 #if defined(OS_ANDROID)
404 media_player_manager_(NULL), 404 media_player_manager_(NULL),
405 #endif 405 #endif
406 #if defined(ENABLE_BROWSER_CDMS) 406 #if defined(ENABLE_BROWSER_CDMS)
407 cdm_manager_(NULL), 407 cdm_manager_(NULL),
408 #endif 408 #endif
409 #if defined(VIDEO_HOLE)
410 contains_media_player_(false),
411 #endif
409 geolocation_dispatcher_(NULL), 412 geolocation_dispatcher_(NULL),
410 push_messaging_dispatcher_(NULL), 413 push_messaging_dispatcher_(NULL),
411 screen_orientation_dispatcher_(NULL), 414 screen_orientation_dispatcher_(NULL),
412 weak_factory_(this) { 415 weak_factory_(this) {
413 std::pair<RoutingIDFrameMap::iterator, bool> result = 416 std::pair<RoutingIDFrameMap::iterator, bool> result =
414 g_routing_id_frame_map.Get().insert(std::make_pair(routing_id_, this)); 417 g_routing_id_frame_map.Get().insert(std::make_pair(routing_id_, this));
415 CHECK(result.second) << "Inserting a duplicate item."; 418 CHECK(result.second) << "Inserting a duplicate item.";
416 419
417 RenderThread::Get()->AddRoute(routing_id_, this); 420 RenderThread::Get()->AddRoute(routing_id_, this);
418 421
419 render_view_->RegisterRenderFrame(this); 422 render_view_->RegisterRenderFrame(this);
420 423
421 #if defined(OS_ANDROID) 424 #if defined(OS_ANDROID)
422 new JavaBridgeDispatcher(this); 425 new JavaBridgeDispatcher(this);
423 #endif 426 #endif
424 427
425 #if defined(ENABLE_NOTIFICATIONS) 428 #if defined(ENABLE_NOTIFICATIONS)
426 notification_provider_ = new NotificationProvider(this); 429 notification_provider_ = new NotificationProvider(this);
427 #endif 430 #endif
428 } 431 }
429 432
430 RenderFrameImpl::~RenderFrameImpl() { 433 RenderFrameImpl::~RenderFrameImpl() {
431 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, RenderFrameGone()); 434 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, RenderFrameGone());
432 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnDestruct()); 435 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnDestruct());
433 436
434 #if defined(OS_ANDROID) && defined(VIDEO_HOLE) 437 #if defined(VIDEO_HOLE)
435 if (media_player_manager_) 438 if (contains_media_player_)
436 render_view_->UnregisterVideoHoleFrame(this); 439 render_view_->UnregisterVideoHoleFrame(this);
437 #endif 440 #endif
438 441
439 render_view_->UnregisterRenderFrame(this); 442 render_view_->UnregisterRenderFrame(this);
440 g_routing_id_frame_map.Get().erase(routing_id_); 443 g_routing_id_frame_map.Get().erase(routing_id_);
441 RenderThread::Get()->RemoveRoute(routing_id_); 444 RenderThread::Get()->RemoveRoute(routing_id_);
442 } 445 }
443 446
444 void RenderFrameImpl::SetWebFrame(blink::WebLocalFrame* web_frame) { 447 void RenderFrameImpl::SetWebFrame(blink::WebLocalFrame* web_frame) {
445 DCHECK(!frame_); 448 DCHECK(!frame_);
(...skipping 919 matching lines...) Expand 10 before | Expand all | Expand 10 after
1365 return CreatePlugin(frame, info, params_to_use); 1368 return CreatePlugin(frame, info, params_to_use);
1366 #else 1369 #else
1367 return NULL; 1370 return NULL;
1368 #endif // defined(ENABLE_PLUGINS) 1371 #endif // defined(ENABLE_PLUGINS)
1369 } 1372 }
1370 1373
1371 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer( 1374 blink::WebMediaPlayer* RenderFrameImpl::createMediaPlayer(
1372 blink::WebLocalFrame* frame, 1375 blink::WebLocalFrame* frame,
1373 const blink::WebURL& url, 1376 const blink::WebURL& url,
1374 blink::WebMediaPlayerClient* client) { 1377 blink::WebMediaPlayerClient* client) {
1378 #if defined(VIDEO_HOLE)
1379 if (!contains_media_player_) {
1380 render_view_->RegisterVideoHoleFrame(this);
1381 contains_media_player_ = true;
1382 }
1383 #endif // defined(VIDEO_HOLE)
1384
1375 blink::WebMediaStream web_stream( 1385 blink::WebMediaStream web_stream(
1376 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url)); 1386 blink::WebMediaStreamRegistry::lookupMediaStreamDescriptor(url));
1377 if (!web_stream.isNull()) 1387 if (!web_stream.isNull())
1378 return CreateWebMediaPlayerForMediaStream(url, client); 1388 return CreateWebMediaPlayerForMediaStream(url, client);
1379 1389
1380 #if defined(OS_ANDROID) 1390 #if defined(OS_ANDROID)
1381 return CreateAndroidWebMediaPlayer(url, client); 1391 return CreateAndroidWebMediaPlayer(url, client);
1382 #else 1392 #else
1383 WebMediaPlayerParams params( 1393 WebMediaPlayerParams params(
1384 base::Bind(&ContentRendererClient::DeferMediaLoad, 1394 base::Bind(&ContentRendererClient::DeferMediaLoad,
(...skipping 2166 matching lines...) Expand 10 before | Expand all | Expand 10 after
3551 client, 3561 client,
3552 weak_factory_.GetWeakPtr(), 3562 weak_factory_.GetWeakPtr(),
3553 GetMediaPlayerManager(), 3563 GetMediaPlayerManager(),
3554 GetCdmManager(), 3564 GetCdmManager(),
3555 stream_texture_factory, 3565 stream_texture_factory,
3556 RenderThreadImpl::current()->GetMediaThreadMessageLoopProxy(), 3566 RenderThreadImpl::current()->GetMediaThreadMessageLoopProxy(),
3557 new RenderMediaLog()); 3567 new RenderMediaLog());
3558 } 3568 }
3559 3569
3560 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() { 3570 RendererMediaPlayerManager* RenderFrameImpl::GetMediaPlayerManager() {
3561 if (!media_player_manager_) { 3571 if (!media_player_manager_)
3562 media_player_manager_ = new RendererMediaPlayerManager(this); 3572 media_player_manager_ = new RendererMediaPlayerManager(this);
3563 #if defined(VIDEO_HOLE)
3564 render_view_->RegisterVideoHoleFrame(this);
3565 #endif // defined(VIDEO_HOLE)
3566 }
3567 return media_player_manager_; 3573 return media_player_manager_;
3568 } 3574 }
3569 3575
3570 #endif // defined(OS_ANDROID) 3576 #endif // defined(OS_ANDROID)
3571 3577
3572 #if defined(ENABLE_BROWSER_CDMS) 3578 #if defined(ENABLE_BROWSER_CDMS)
3573 RendererCdmManager* RenderFrameImpl::GetCdmManager() { 3579 RendererCdmManager* RenderFrameImpl::GetCdmManager() {
3574 if (!cdm_manager_) 3580 if (!cdm_manager_)
3575 cdm_manager_ = new RendererCdmManager(this); 3581 cdm_manager_ = new RendererCdmManager(this);
3576 return cdm_manager_; 3582 return cdm_manager_;
3577 } 3583 }
3578 #endif // defined(ENABLE_BROWSER_CDMS) 3584 #endif // defined(ENABLE_BROWSER_CDMS)
3579 3585
3580 } // namespace content 3586 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698