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 "chrome/browser/host_zoom_map.h" | 5 #include "chrome/browser/host_zoom_map.h" |
6 | 6 |
7 #include "base/string_piece.h" | 7 #include "base/string_piece.h" |
8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
9 #include "chrome/browser/chrome_thread.h" | 9 #include "chrome/browser/chrome_thread.h" |
10 #include "chrome/browser/prefs/pref_service.h" | 10 #include "chrome/browser/prefs/pref_service.h" |
11 #include "chrome/browser/prefs/scoped_pref_update.h" | 11 #include "chrome/browser/prefs/scoped_pref_update.h" |
12 #include "chrome/browser/profile.h" | 12 #include "chrome/browser/profile.h" |
13 #include "chrome/common/notification_details.h" | 13 #include "chrome/common/notification_details.h" |
14 #include "chrome/common/notification_service.h" | 14 #include "chrome/common/notification_service.h" |
15 #include "chrome/common/notification_source.h" | 15 #include "chrome/common/notification_source.h" |
16 #include "chrome/common/notification_type.h" | 16 #include "chrome/common/notification_type.h" |
17 #include "chrome/common/pref_names.h" | 17 #include "chrome/common/pref_names.h" |
18 #include "googleurl/src/gurl.h" | 18 #include "googleurl/src/gurl.h" |
19 #include "net/base/net_util.h" | 19 #include "net/base/net_util.h" |
20 | 20 |
21 HostZoomMap::HostZoomMap(Profile* profile) | 21 HostZoomMap::HostZoomMap(Profile* profile) |
22 : profile_(profile), | 22 : profile_(profile), |
23 updating_preferences_(false) { | 23 updating_preferences_(false) { |
24 Load(); | 24 Load(); |
25 registrar_.Add(this, NotificationType::PROFILE_DESTROYED, | 25 registrar_.Add(this, NotificationType::PROFILE_DESTROYED, |
26 Source<Profile>(profile)); | 26 Source<Profile>(profile)); |
27 // Don't observe pref changes (e.g. from sync) in Incognito; once we create | 27 // Don't observe pref changes (e.g. from sync) in Incognito; once we create |
28 // the incognito window it should have no further connection to the main | 28 // the incognito window it should have no further connection to the main |
29 // profile/prefs. | 29 // profile/prefs. |
30 if (!profile_->IsOffTheRecord()) | 30 if (!profile_->IsOffTheRecord()) { |
31 profile_->GetPrefs()->AddPrefObserver(prefs::kPerHostZoomLevels, this); | 31 pref_change_registrar_.Init(profile_->GetPrefs()); |
| 32 pref_change_registrar_.Add(prefs::kPerHostZoomLevels, this); |
| 33 } |
32 } | 34 } |
33 | 35 |
34 void HostZoomMap::Load() { | 36 void HostZoomMap::Load() { |
35 if (!profile_) | 37 if (!profile_) |
36 return; | 38 return; |
37 | 39 |
38 AutoLock auto_lock(lock_); | 40 AutoLock auto_lock(lock_); |
39 host_zoom_levels_.clear(); | 41 host_zoom_levels_.clear(); |
40 const DictionaryValue* host_zoom_dictionary = | 42 const DictionaryValue* host_zoom_dictionary = |
41 profile_->GetPrefs()->GetDictionary(prefs::kPerHostZoomLevels); | 43 profile_->GetPrefs()->GetDictionary(prefs::kPerHostZoomLevels); |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
121 } | 123 } |
122 | 124 |
123 void HostZoomMap::Shutdown() { | 125 void HostZoomMap::Shutdown() { |
124 if (!profile_) | 126 if (!profile_) |
125 return; | 127 return; |
126 | 128 |
127 registrar_.Remove(this, | 129 registrar_.Remove(this, |
128 NotificationType::PROFILE_DESTROYED, | 130 NotificationType::PROFILE_DESTROYED, |
129 Source<Profile>(profile_)); | 131 Source<Profile>(profile_)); |
130 if (!profile_->IsOffTheRecord()) | 132 if (!profile_->IsOffTheRecord()) |
131 profile_->GetPrefs()->RemovePrefObserver(prefs::kPerHostZoomLevels, this); | 133 pref_change_registrar_.RemoveAll(); |
132 profile_ = NULL; | 134 profile_ = NULL; |
133 } | 135 } |
134 | 136 |
135 void HostZoomMap::Observe( | 137 void HostZoomMap::Observe( |
136 NotificationType type, | 138 NotificationType type, |
137 const NotificationSource& source, | 139 const NotificationSource& source, |
138 const NotificationDetails& details) { | 140 const NotificationDetails& details) { |
139 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); | 141 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::UI)); |
140 | 142 |
141 // If the profile is going away, we need to stop using it. | 143 // If the profile is going away, we need to stop using it. |
(...skipping 13 matching lines...) Expand all Loading... |
155 return; | 157 return; |
156 } | 158 } |
157 } | 159 } |
158 | 160 |
159 NOTREACHED() << "Unexpected preference observed."; | 161 NOTREACHED() << "Unexpected preference observed."; |
160 } | 162 } |
161 | 163 |
162 HostZoomMap::~HostZoomMap() { | 164 HostZoomMap::~HostZoomMap() { |
163 Shutdown(); | 165 Shutdown(); |
164 } | 166 } |
OLD | NEW |