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

Side by Side Diff: blimp/engine/feature/engine_render_widget_feature.cc

Issue 1810213009: blimp: Add settings to allow the client to download the whole page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@record_full_document
Patch Set: Created 4 years, 9 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 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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698