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

Side by Side Diff: blimp/engine/feature/engine_settings_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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "blimp/engine/feature/engine_settings_feature.h"
6
7 #include "blimp/common/proto/blimp_message.pb.h"
8 #include "blimp/common/proto/settings.pb.h"
9 #include "content/public/browser/render_view_host.h"
10 #include "content/public/common/web_preferences.h"
11 #include "net/base/net_errors.h"
12
13 namespace blimp {
14
15 EngineSettingsFeature::EngineSettingsFeature()
16 : record_whole_document_(false) {}
17
18 EngineSettingsFeature::~EngineSettingsFeature() {}
19
20 void EngineSettingsFeature::set_outgoing_message_processor(
21 scoped_ptr<BlimpMessageProcessor> processor) {
22 outgoing_message_processor_ = std::move(processor);
23 }
24
25 void EngineSettingsFeature::AddObserver(Observer* observer) {
26 observer_list_.AddObserver(observer);
27 }
28
29 void EngineSettingsFeature::RemoveObserver(Observer* observer) {
30 observer_list_.AddObserver(observer);
31 }
32
33 void EngineSettingsFeature::UpdateWebkitPreferences(
34 content::RenderViewHost* render_view_host) {
35 DCHECK(render_view_host);
36
37 bool updated = false;
38 content::WebPreferences prefs = render_view_host->GetWebkitPreferences();
39
40 if (prefs.record_whole_document != record_whole_document_) {
41 prefs.record_whole_document = record_whole_document_;
42 updated = true;
43 }
44
45 if (updated)
46 render_view_host->UpdateWebkitPreferences(prefs);
47 }
48
49 void EngineSettingsFeature::ProcessMessage(scoped_ptr<BlimpMessage> message,
50 const net::CompletionCallback& callback) {
51 DCHECK_EQ(message->type(), BlimpMessage::SETTINGS);
52 DCHECK(message->has_settings());
53
54 const SettingsMessage& settings = message->settings();
55 DCHECK(settings.has_engine_settings());
56
57 const EngineSettingsMessage& engine_settings = settings.engine_settings();
58 ProcessWebPreferences(engine_settings);
59
60 callback.Run(net::OK);
61 }
62
63 void EngineSettingsFeature::ProcessWebPreferences(
64 const EngineSettingsMessage& engine_settings) {
65 bool updated = false;
66
67 if (engine_settings.has_record_whole_document()
68 && engine_settings.record_whole_document() != record_whole_document_) {
69 record_whole_document_ = engine_settings.record_whole_document();
70 updated = true;
71 }
72
73 if (updated)
74 FOR_EACH_OBSERVER(Observer, observer_list_, OnWebPreferencesChanged());
75 }
76
77 } // namespace blimp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698