Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "blimp/engine/feature/engine_render_widget_feature.h" | 5 #include "blimp/engine/feature/engine_render_widget_feature.h" |
| 6 | 6 |
| 7 #include "base/numerics/safe_conversions.h" | 7 #include "base/numerics/safe_conversions.h" |
| 8 #include "blimp/common/create_blimp_message.h" | 8 #include "blimp/common/create_blimp_message.h" |
| 9 #include "blimp/common/proto/blimp_message.pb.h" | 9 #include "blimp/common/proto/blimp_message.pb.h" |
| 10 #include "blimp/common/proto/compositor.pb.h" | 10 #include "blimp/common/proto/compositor.pb.h" |
| 11 #include "blimp/common/proto/input.pb.h" | 11 #include "blimp/common/proto/input.pb.h" |
| 12 #include "blimp/common/proto/render_widget.pb.h" | 12 #include "blimp/common/proto/render_widget.pb.h" |
| 13 #include "content/public/browser/render_widget_host.h" | 13 #include "content/public/browser/render_widget_host.h" |
| 14 #include "net/base/net_errors.h" | 14 #include "net/base/net_errors.h" |
| 15 #include "third_party/WebKit/public/web/WebInputEvent.h" | 15 #include "third_party/WebKit/public/web/WebInputEvent.h" |
| 16 | 16 |
| 17 namespace blimp { | 17 namespace blimp { |
| 18 | 18 |
| 19 EngineRenderWidgetFeature::EngineRenderWidgetFeature() {} | 19 EngineRenderWidgetFeature::EngineRenderWidgetFeature( |
| 20 EngineSettingsFeature* settings) | |
| 21 : settings_feature_(settings) { | |
| 22 DCHECK(settings_feature_); | |
| 23 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
| |
| 24 } | |
| 20 | 25 |
| 21 EngineRenderWidgetFeature::~EngineRenderWidgetFeature() {} | 26 EngineRenderWidgetFeature::~EngineRenderWidgetFeature() { |
| 27 DCHECK(settings_feature_); | |
| 28 settings_feature_->RemoveObserver(this); | |
| 29 } | |
| 22 | 30 |
| 23 void EngineRenderWidgetFeature::set_render_widget_message_sender( | 31 void EngineRenderWidgetFeature::set_render_widget_message_sender( |
| 24 scoped_ptr<BlimpMessageProcessor> message_processor) { | 32 scoped_ptr<BlimpMessageProcessor> message_processor) { |
| 25 DCHECK(message_processor); | 33 DCHECK(message_processor); |
| 26 render_widget_message_sender_ = std::move(message_processor); | 34 render_widget_message_sender_ = std::move(message_processor); |
| 27 } | 35 } |
| 28 | 36 |
| 29 void EngineRenderWidgetFeature::set_input_message_sender( | 37 void EngineRenderWidgetFeature::set_input_message_sender( |
| 30 scoped_ptr<BlimpMessageProcessor> message_processor) { | 38 scoped_ptr<BlimpMessageProcessor> message_processor) { |
| 31 DCHECK(message_processor); | 39 DCHECK(message_processor); |
| 32 input_message_sender_ = std::move(message_processor); | 40 input_message_sender_ = std::move(message_processor); |
| 33 } | 41 } |
| 34 | 42 |
| 35 void EngineRenderWidgetFeature::set_compositor_message_sender( | 43 void EngineRenderWidgetFeature::set_compositor_message_sender( |
| 36 scoped_ptr<BlimpMessageProcessor> message_processor) { | 44 scoped_ptr<BlimpMessageProcessor> message_processor) { |
| 37 DCHECK(message_processor); | 45 DCHECK(message_processor); |
| 38 compositor_message_sender_ = std::move(message_processor); | 46 compositor_message_sender_ = std::move(message_processor); |
| 39 } | 47 } |
| 40 | 48 |
| 41 void EngineRenderWidgetFeature::OnRenderWidgetCreated( | 49 void EngineRenderWidgetFeature::OnRenderWidgetCreated( |
| 42 const int tab_id, | 50 const int tab_id, |
| 43 content::RenderWidgetHost* render_widget_host) { | 51 content::RenderWidgetHost* render_widget_host) { |
| 44 DCHECK(render_widget_host); | 52 DCHECK(render_widget_host); |
| 45 | 53 |
| 54 content::RenderViewHost* render_view_host = | |
| 55 content::RenderViewHost::From(render_widget_host); | |
| 56 if (render_view_host) | |
| 57 settings_feature_->UpdateWebkitPreferences(render_view_host); | |
| 58 | |
| 46 int render_widget_id = AddRenderWidget(tab_id, render_widget_host); | 59 int render_widget_id = AddRenderWidget(tab_id, render_widget_host); |
| 47 DCHECK_GT(render_widget_id, 0); | 60 DCHECK_GT(render_widget_id, 0); |
| 48 | 61 |
| 49 RenderWidgetMessage* render_widget_message; | 62 RenderWidgetMessage* render_widget_message; |
| 50 scoped_ptr<BlimpMessage> blimp_message = | 63 scoped_ptr<BlimpMessage> blimp_message = |
| 51 CreateBlimpMessage(&render_widget_message, tab_id); | 64 CreateBlimpMessage(&render_widget_message, tab_id); |
| 52 render_widget_message->set_type(RenderWidgetMessage::CREATED); | 65 render_widget_message->set_type(RenderWidgetMessage::CREATED); |
| 53 render_widget_message->set_render_widget_id(render_widget_id); | 66 render_widget_message->set_render_widget_id(render_widget_id); |
| 54 | 67 |
| 55 render_widget_message_sender_->ProcessMessage(std::move(blimp_message), | 68 render_widget_message_sender_->ProcessMessage(std::move(blimp_message), |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 163 delegate->OnCompositorMessageReceived(render_widget_host, payload); | 176 delegate->OnCompositorMessageReceived(render_widget_host, payload); |
| 164 } | 177 } |
| 165 break; | 178 break; |
| 166 default: | 179 default: |
| 167 NOTREACHED(); | 180 NOTREACHED(); |
| 168 } | 181 } |
| 169 | 182 |
| 170 callback.Run(net::OK); | 183 callback.Run(net::OK); |
| 171 } | 184 } |
| 172 | 185 |
| 186 void EngineRenderWidgetFeature::OnWebPreferencesChanged() { | |
| 187 for (TabMap::iterator tab_it = tabs_.begin(); tab_it != tabs_.end(); | |
| 188 tab_it++) { | |
| 189 RenderWidgetMaps render_widget_maps = tab_it->second; | |
| 190 RenderWidgetToIdMap render_widget_to_id = render_widget_maps.first; | |
| 191 for (RenderWidgetToIdMap::iterator it = render_widget_to_id.begin(); | |
| 192 it != render_widget_to_id.end(); it++) { | |
| 193 content::RenderWidgetHost* render_widget_host = it->first; | |
| 194 content::RenderViewHost* render_view_host = | |
| 195 content::RenderViewHost::From(render_widget_host); | |
| 196 if (render_view_host) | |
| 197 settings_feature_->UpdateWebkitPreferences(render_view_host); | |
| 198 } | |
| 199 } | |
| 200 } | |
| 201 | |
| 173 EngineRenderWidgetFeature::RenderWidgetMessageDelegate* | 202 EngineRenderWidgetFeature::RenderWidgetMessageDelegate* |
| 174 EngineRenderWidgetFeature::FindDelegate(const int tab_id) { | 203 EngineRenderWidgetFeature::FindDelegate(const int tab_id) { |
| 175 DelegateMap::const_iterator it = delegates_.find(tab_id); | 204 DelegateMap::const_iterator it = delegates_.find(tab_id); |
| 176 if (it != delegates_.end()) | 205 if (it != delegates_.end()) |
| 177 return it->second; | 206 return it->second; |
| 178 return nullptr; | 207 return nullptr; |
| 179 } | 208 } |
| 180 | 209 |
| 181 int EngineRenderWidgetFeature::AddRenderWidget( | 210 int EngineRenderWidgetFeature::AddRenderWidget( |
| 182 const int tab_id, | 211 const int tab_id, |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 261 | 290 |
| 262 IdToRenderWidgetMap::const_iterator widget_id_it = | 291 IdToRenderWidgetMap::const_iterator widget_id_it = |
| 263 id_to_render_widget->find(render_widget_id); | 292 id_to_render_widget->find(render_widget_id); |
| 264 if (widget_id_it == id_to_render_widget->end()) | 293 if (widget_id_it == id_to_render_widget->end()) |
| 265 return nullptr; | 294 return nullptr; |
| 266 | 295 |
| 267 return widget_id_it->second; | 296 return widget_id_it->second; |
| 268 } | 297 } |
| 269 | 298 |
| 270 } // namespace blimp | 299 } // namespace blimp |
| OLD | NEW |