OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 <cmath> | 5 #include <cmath> |
6 | 6 |
7 #include "chrome/browser/host_zoom_map.h" | 7 #include "chrome/browser/host_zoom_map.h" |
8 | 8 |
9 #include "base/string_piece.h" | 9 #include "base/string_piece.h" |
10 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
(...skipping 12 matching lines...) Expand all Loading... |
23 #include "net/base/net_util.h" | 23 #include "net/base/net_util.h" |
24 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" | 24 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
25 | 25 |
26 using WebKit::WebView; | 26 using WebKit::WebView; |
27 | 27 |
28 HostZoomMap::HostZoomMap(Profile* profile) | 28 HostZoomMap::HostZoomMap(Profile* profile) |
29 : profile_(profile), | 29 : profile_(profile), |
30 updating_preferences_(false) { | 30 updating_preferences_(false) { |
31 Load(); | 31 Load(); |
32 default_zoom_level_ = | 32 default_zoom_level_ = |
33 profile_->GetPrefs()->GetReal(prefs::kDefaultZoomLevel); | 33 profile_->GetPrefs()->GetDouble(prefs::kDefaultZoomLevel); |
34 registrar_.Add(this, NotificationType::PROFILE_DESTROYED, | 34 registrar_.Add(this, NotificationType::PROFILE_DESTROYED, |
35 Source<Profile>(profile)); | 35 Source<Profile>(profile)); |
36 // Don't observe pref changes (e.g. from sync) in Incognito; once we create | 36 // Don't observe pref changes (e.g. from sync) in Incognito; once we create |
37 // the incognito window it should have no further connection to the main | 37 // the incognito window it should have no further connection to the main |
38 // profile/prefs. | 38 // profile/prefs. |
39 if (!profile_->IsOffTheRecord()) { | 39 if (!profile_->IsOffTheRecord()) { |
40 pref_change_registrar_.Init(profile_->GetPrefs()); | 40 pref_change_registrar_.Init(profile_->GetPrefs()); |
41 pref_change_registrar_.Add(prefs::kPerHostZoomLevels, this); | 41 pref_change_registrar_.Add(prefs::kPerHostZoomLevels, this); |
42 pref_change_registrar_.Add(prefs::kDefaultZoomLevel, this); | 42 pref_change_registrar_.Add(prefs::kDefaultZoomLevel, this); |
43 } | 43 } |
(...skipping 11 matching lines...) Expand all Loading... |
55 host_zoom_levels_.clear(); | 55 host_zoom_levels_.clear(); |
56 const DictionaryValue* host_zoom_dictionary = | 56 const DictionaryValue* host_zoom_dictionary = |
57 profile_->GetPrefs()->GetDictionary(prefs::kPerHostZoomLevels); | 57 profile_->GetPrefs()->GetDictionary(prefs::kPerHostZoomLevels); |
58 // Careful: The returned value could be NULL if the pref has never been set. | 58 // Careful: The returned value could be NULL if the pref has never been set. |
59 if (host_zoom_dictionary != NULL) { | 59 if (host_zoom_dictionary != NULL) { |
60 for (DictionaryValue::key_iterator i(host_zoom_dictionary->begin_keys()); | 60 for (DictionaryValue::key_iterator i(host_zoom_dictionary->begin_keys()); |
61 i != host_zoom_dictionary->end_keys(); ++i) { | 61 i != host_zoom_dictionary->end_keys(); ++i) { |
62 const std::string& host(*i); | 62 const std::string& host(*i); |
63 double zoom_level = 0; | 63 double zoom_level = 0; |
64 | 64 |
65 bool success = host_zoom_dictionary->GetRealWithoutPathExpansion( | 65 bool success = host_zoom_dictionary->GetDoubleWithoutPathExpansion( |
66 host, &zoom_level); | 66 host, &zoom_level); |
67 if (!success) { | 67 if (!success) { |
68 // The data used to be stored as ints, so try that. | 68 // The data used to be stored as ints, so try that. |
69 int int_zoom_level; | 69 int int_zoom_level; |
70 success = host_zoom_dictionary->GetIntegerWithoutPathExpansion( | 70 success = host_zoom_dictionary->GetIntegerWithoutPathExpansion( |
71 host, &int_zoom_level); | 71 host, &int_zoom_level); |
72 if (success) { | 72 if (success) { |
73 zoom_level = static_cast<double>(int_zoom_level); | 73 zoom_level = static_cast<double>(int_zoom_level); |
74 // Since the values were once stored as non-clamped, clamp now. | 74 // Since the values were once stored as non-clamped, clamp now. |
75 double zoom_factor = WebView::zoomLevelToZoomFactor(zoom_level); | 75 double zoom_factor = WebView::zoomLevelToZoomFactor(zoom_level); |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 | 126 |
127 updating_preferences_ = true; | 127 updating_preferences_ = true; |
128 { | 128 { |
129 ScopedPrefUpdate update(profile_->GetPrefs(), prefs::kPerHostZoomLevels); | 129 ScopedPrefUpdate update(profile_->GetPrefs(), prefs::kPerHostZoomLevels); |
130 DictionaryValue* host_zoom_dictionary = | 130 DictionaryValue* host_zoom_dictionary = |
131 profile_->GetPrefs()->GetMutableDictionary(prefs::kPerHostZoomLevels); | 131 profile_->GetPrefs()->GetMutableDictionary(prefs::kPerHostZoomLevels); |
132 if (level == default_zoom_level_) { | 132 if (level == default_zoom_level_) { |
133 host_zoom_dictionary->RemoveWithoutPathExpansion(host, NULL); | 133 host_zoom_dictionary->RemoveWithoutPathExpansion(host, NULL); |
134 } else { | 134 } else { |
135 host_zoom_dictionary->SetWithoutPathExpansion( | 135 host_zoom_dictionary->SetWithoutPathExpansion( |
136 host, Value::CreateRealValue(level)); | 136 host, Value::CreateDoubleValue(level)); |
137 } | 137 } |
138 } | 138 } |
139 updating_preferences_ = false; | 139 updating_preferences_ = false; |
140 } | 140 } |
141 | 141 |
142 double HostZoomMap::GetTemporaryZoomLevel(int render_process_id, | 142 double HostZoomMap::GetTemporaryZoomLevel(int render_process_id, |
143 int render_view_id) const { | 143 int render_view_id) const { |
144 base::AutoLock auto_lock(lock_); | 144 base::AutoLock auto_lock(lock_); |
145 for (size_t i = 0; i < temporary_zoom_levels_.size(); ++i) { | 145 for (size_t i = 0; i < temporary_zoom_levels_.size(); ++i) { |
146 if (temporary_zoom_levels_[i].render_process_id == render_process_id && | 146 if (temporary_zoom_levels_[i].render_process_id == render_process_id && |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 break; | 238 break; |
239 } | 239 } |
240 case NotificationType::PREF_CHANGED: { | 240 case NotificationType::PREF_CHANGED: { |
241 // If we are updating our own preference, don't reload. | 241 // If we are updating our own preference, don't reload. |
242 if (!updating_preferences_) { | 242 if (!updating_preferences_) { |
243 std::string* name = Details<std::string>(details).ptr(); | 243 std::string* name = Details<std::string>(details).ptr(); |
244 if (prefs::kPerHostZoomLevels == *name) | 244 if (prefs::kPerHostZoomLevels == *name) |
245 Load(); | 245 Load(); |
246 else if (prefs::kDefaultZoomLevel == *name) { | 246 else if (prefs::kDefaultZoomLevel == *name) { |
247 default_zoom_level_ = | 247 default_zoom_level_ = |
248 profile_->GetPrefs()->GetReal(prefs::kDefaultZoomLevel); | 248 profile_->GetPrefs()->GetDouble(prefs::kDefaultZoomLevel); |
249 } | 249 } |
250 } | 250 } |
251 break; | 251 break; |
252 } | 252 } |
253 default: | 253 default: |
254 NOTREACHED() << "Unexpected preference observed."; | 254 NOTREACHED() << "Unexpected preference observed."; |
255 } | 255 } |
256 } | 256 } |
257 | 257 |
258 HostZoomMap::~HostZoomMap() { | 258 HostZoomMap::~HostZoomMap() { |
259 Shutdown(); | 259 Shutdown(); |
260 } | 260 } |
OLD | NEW |