Index: media/base/renderer_factory_selector.cc |
diff --git a/media/base/renderer_factory_selector.cc b/media/base/renderer_factory_selector.cc |
index 6a5d956627b43f686c7d7c01d66b3023f6c6d5fe..9bbaef13a85d750a659973d26485f35fbf9d1b78 100644 |
--- a/media/base/renderer_factory_selector.cc |
+++ b/media/base/renderer_factory_selector.cc |
@@ -26,9 +26,6 @@ void RendererFactorySelector::SetBaseFactoryType(FactoryType type) { |
current_factory_needs_update_ = true; |
} |
-// For the moment, this method should only be called once or twice. |
-// This method will be regularly called whenever the logic in choosing a |
-// renderer type is moved out of the AdaptiveRendererFactory, into this method. |
void RendererFactorySelector::UpdateCurrentFactory() { |
DCHECK_NE(base_factory_type_, FactoryType::UNKNOWN); |
FactoryType next_factory_type = base_factory_type_; |
@@ -36,6 +33,9 @@ void RendererFactorySelector::UpdateCurrentFactory() { |
if (use_media_player_) |
next_factory_type = FactoryType::MEDIA_PLAYER; |
+ if (use_courier_cb_ && use_courier_cb_.Run()) |
+ next_factory_type = FactoryType::COURIER; |
+ |
auto it = factories_.find(next_factory_type); |
if (it == factories_.end()) { |
@@ -46,7 +46,8 @@ void RendererFactorySelector::UpdateCurrentFactory() { |
DVLOG(1) << __func__ << " Selected factory type: " << it->first; |
current_factory_ = it->second.get(); |
- current_factory_needs_update_ = false; |
+ // Update |current_factory_| every time if we are using the COURIER factory. |
+ current_factory_needs_update_ = !!use_courier_cb_; |
} |
RendererFactory* RendererFactorySelector::GetCurrentFactory() { |
@@ -64,4 +65,10 @@ void RendererFactorySelector::SetUseMediaPlayer(bool use_media_player) { |
} |
#endif |
+void RendererFactorySelector::SetUseCourierCB(UseCourierCB use_courier_cb) { |
+ DCHECK(!use_courier_cb_); |
+ use_courier_cb_ = use_courier_cb; |
+ current_factory_needs_update_ = true; |
+} |
+ |
} // namespace media |