Index: blimp/engine/feature/engine_render_widget_feature.cc |
diff --git a/blimp/engine/feature/engine_render_widget_feature.cc b/blimp/engine/feature/engine_render_widget_feature.cc |
index 5fdec4868147d15f8fe7cab647f4f45e9a7f5a0f..7d1cf1a0ea282b2ae19c089a7271323582ebffc5 100644 |
--- a/blimp/engine/feature/engine_render_widget_feature.cc |
+++ b/blimp/engine/feature/engine_render_widget_feature.cc |
@@ -16,9 +16,17 @@ |
namespace blimp { |
-EngineRenderWidgetFeature::EngineRenderWidgetFeature() {} |
+EngineRenderWidgetFeature::EngineRenderWidgetFeature( |
+ EngineSettingsFeature* settings) |
+ : settings_feature_(settings) { |
+ DCHECK(settings_feature_); |
+ settings_feature_->AddObserver(this); |
haibinlu
2016/03/21 18:25:22
Shall we avoid dependency between features?
Discu
Khushal
2016/03/22 04:11:42
Sounds like a great idea. I looked at the code aga
|
+} |
-EngineRenderWidgetFeature::~EngineRenderWidgetFeature() {} |
+EngineRenderWidgetFeature::~EngineRenderWidgetFeature() { |
+ DCHECK(settings_feature_); |
+ settings_feature_->RemoveObserver(this); |
+} |
void EngineRenderWidgetFeature::set_render_widget_message_sender( |
scoped_ptr<BlimpMessageProcessor> message_processor) { |
@@ -43,6 +51,11 @@ void EngineRenderWidgetFeature::OnRenderWidgetCreated( |
content::RenderWidgetHost* render_widget_host) { |
DCHECK(render_widget_host); |
+ content::RenderViewHost* render_view_host = |
+ content::RenderViewHost::From(render_widget_host); |
+ if (render_view_host) |
+ settings_feature_->UpdateWebkitPreferences(render_view_host); |
+ |
int render_widget_id = AddRenderWidget(tab_id, render_widget_host); |
DCHECK_GT(render_widget_id, 0); |
@@ -170,6 +183,22 @@ void EngineRenderWidgetFeature::ProcessMessage( |
callback.Run(net::OK); |
} |
+void EngineRenderWidgetFeature::OnWebPreferencesChanged() { |
+ for (TabMap::iterator tab_it = tabs_.begin(); tab_it != tabs_.end(); |
+ tab_it++) { |
+ RenderWidgetMaps render_widget_maps = tab_it->second; |
+ RenderWidgetToIdMap render_widget_to_id = render_widget_maps.first; |
+ for (RenderWidgetToIdMap::iterator it = render_widget_to_id.begin(); |
+ it != render_widget_to_id.end(); it++) { |
+ content::RenderWidgetHost* render_widget_host = it->first; |
+ content::RenderViewHost* render_view_host = |
+ content::RenderViewHost::From(render_widget_host); |
+ if (render_view_host) |
+ settings_feature_->UpdateWebkitPreferences(render_view_host); |
+ } |
+ } |
+} |
+ |
EngineRenderWidgetFeature::RenderWidgetMessageDelegate* |
EngineRenderWidgetFeature::FindDelegate(const int tab_id) { |
DelegateMap::const_iterator it = delegates_.find(tab_id); |