summaryrefslogtreecommitdiffstats
path: root/content/browser/host_zoom_map.cc
diff options
context:
space:
mode:
Diffstat (limited to 'content/browser/host_zoom_map.cc')
-rw-r--r--content/browser/host_zoom_map.cc22
1 files changed, 20 insertions, 2 deletions
diff --git a/content/browser/host_zoom_map.cc b/content/browser/host_zoom_map.cc
index 64e96f4..0facb99 100644
--- a/content/browser/host_zoom_map.cc
+++ b/content/browser/host_zoom_map.cc
@@ -8,6 +8,7 @@
#include "base/string_piece.h"
#include "base/utf_string_conversions.h"
+#include "base/values.h"
#include "content/browser/browser_thread.h"
#include "content/browser/renderer_host/render_process_host.h"
#include "content/browser/renderer_host/render_view_host.h"
@@ -18,7 +19,25 @@
using WebKit::WebView;
-HostZoomMap::HostZoomMap() : default_zoom_level_(0.0) {
+HostZoomMap::HostZoomMap()
+ : default_zoom_level_(0.0),
+ original_(this) {
+ Init();
+}
+
+HostZoomMap::HostZoomMap(HostZoomMap* original)
+ : default_zoom_level_(0.0),
+ original_(original) {
+ DCHECK(original);
+ Init();
+ base::AutoLock auto_lock(original->lock_);
+ for (HostZoomLevels::const_iterator i(original->host_zoom_levels_.begin());
+ i != original->host_zoom_levels_.end(); ++i) {
+ host_zoom_levels_[i->first] = i->second;
+ }
+}
+
+void HostZoomMap::Init() {
registrar_.Add(
this, content::NOTIFICATION_RENDER_VIEW_HOST_WILL_CLOSE_RENDER_VIEW,
NotificationService::AllSources());
@@ -93,7 +112,6 @@ void HostZoomMap::SetTemporaryZoomLevel(int render_process_id,
content::NOTIFICATION_ZOOM_LEVEL_CHANGED,
Source<HostZoomMap>(this),
Details<const std::string>(&host));
-
}
void HostZoomMap::Observe(