Index: blimp/engine/session/settings_manager.cc |
diff --git a/blimp/engine/session/settings_manager.cc b/blimp/engine/session/settings_manager.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..90bd38e6a90a40d796e8ba2f893a767a2ceff72a |
--- /dev/null |
+++ b/blimp/engine/session/settings_manager.cc |
@@ -0,0 +1,55 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include <blimp/engine/session/settings_manager.h> |
+#include "content/public/browser/render_view_host.h" |
+#include "content/public/common/web_preferences.h" |
+ |
+namespace blimp { |
+namespace engine { |
+ |
+SettingsManager::SettingsManager() {} |
+ |
+SettingsManager::~SettingsManager() {} |
+ |
+void SettingsManager::AddObserver(Observer* observer) { |
+ observer_list_.AddObserver(observer); |
+} |
+ |
+void SettingsManager::RemoveObserver(Observer* observer) { |
+ observer_list_.RemoveObserver(observer); |
+} |
+ |
+void SettingsManager::UpdateWebkitPreferences( |
+ content::RenderViewHost* render_view_host) { |
+ DCHECK(render_view_host); |
+ |
+ bool updated = false; |
+ content::WebPreferences prefs = render_view_host->GetWebkitPreferences(); |
+ |
+ if (prefs.record_whole_document != settings_.record_whole_document) { |
+ prefs.record_whole_document = settings_.record_whole_document; |
+ updated = true; |
+ } |
+ |
+ if (updated) |
+ render_view_host->UpdateWebkitPreferences(prefs); |
+} |
+ |
+const EngineSettings& SettingsManager::GetEngineSettings() const { |
+ return settings_; |
+} |
+ |
+void SettingsManager::UpdateEngineSettings(const EngineSettings& settings) { |
+ EngineSettings old_settings = settings_; |
+ settings_ = settings; |
+ |
+ if (settings_.record_whole_document != old_settings.record_whole_document) { |
+ // Notify the observers that the web preferences have changed. |
+ FOR_EACH_OBSERVER(Observer, observer_list_, OnWebPreferencesChanged()); |
+ } |
+} |
+ |
+} // namespace engine |
+} // namespace blimp |