OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/profile_resetter/resettable_settings_snapshot.h" | 5 #include "chrome/browser/profile_resetter/resettable_settings_snapshot.h" |
6 | 6 |
7 #include "base/json/json_writer.h" | 7 #include "base/json/json_writer.h" |
8 #include "base/prefs/pref_service.h" | 8 #include "base/prefs/pref_service.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 list->Append(results); | 53 list->Append(results); |
54 } | 54 } |
55 | 55 |
56 } // namespace | 56 } // namespace |
57 | 57 |
58 ResettableSettingsSnapshot::ResettableSettingsSnapshot( | 58 ResettableSettingsSnapshot::ResettableSettingsSnapshot( |
59 Profile* profile) | 59 Profile* profile) |
60 : startup_(SessionStartupPref::GetStartupPref(profile)), | 60 : startup_(SessionStartupPref::GetStartupPref(profile)), |
61 shortcuts_determined_(false), | 61 shortcuts_determined_(false), |
62 weak_ptr_factory_(this) { | 62 weak_ptr_factory_(this) { |
63 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 63 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
64 // URLs are always stored sorted. | 64 // URLs are always stored sorted. |
65 std::sort(startup_.urls.begin(), startup_.urls.end()); | 65 std::sort(startup_.urls.begin(), startup_.urls.end()); |
66 | 66 |
67 PrefService* prefs = profile->GetPrefs(); | 67 PrefService* prefs = profile->GetPrefs(); |
68 DCHECK(prefs); | 68 DCHECK(prefs); |
69 homepage_ = prefs->GetString(prefs::kHomePage); | 69 homepage_ = prefs->GetString(prefs::kHomePage); |
70 homepage_is_ntp_ = prefs->GetBoolean(prefs::kHomePageIsNewTabPage); | 70 homepage_is_ntp_ = prefs->GetBoolean(prefs::kHomePageIsNewTabPage); |
71 show_home_button_ = prefs->GetBoolean(prefs::kShowHomeButton); | 71 show_home_button_ = prefs->GetBoolean(prefs::kShowHomeButton); |
72 | 72 |
73 TemplateURLService* service = | 73 TemplateURLService* service = |
74 TemplateURLServiceFactory::GetForProfile(profile); | 74 TemplateURLServiceFactory::GetForProfile(profile); |
75 DCHECK(service); | 75 DCHECK(service); |
76 TemplateURL* dse = service->GetDefaultSearchProvider(); | 76 TemplateURL* dse = service->GetDefaultSearchProvider(); |
77 if (dse) | 77 if (dse) |
78 dse_url_ = dse->url(); | 78 dse_url_ = dse->url(); |
79 | 79 |
80 const extensions::ExtensionSet& enabled_ext = | 80 const extensions::ExtensionSet& enabled_ext = |
81 extensions::ExtensionRegistry::Get(profile)->enabled_extensions(); | 81 extensions::ExtensionRegistry::Get(profile)->enabled_extensions(); |
82 enabled_extensions_.reserve(enabled_ext.size()); | 82 enabled_extensions_.reserve(enabled_ext.size()); |
83 | 83 |
84 for (extensions::ExtensionSet::const_iterator it = enabled_ext.begin(); | 84 for (extensions::ExtensionSet::const_iterator it = enabled_ext.begin(); |
85 it != enabled_ext.end(); ++it) | 85 it != enabled_ext.end(); ++it) |
86 enabled_extensions_.push_back(std::make_pair((*it)->id(), (*it)->name())); | 86 enabled_extensions_.push_back(std::make_pair((*it)->id(), (*it)->name())); |
87 | 87 |
88 // ExtensionSet is sorted but it seems to be an implementation detail. | 88 // ExtensionSet is sorted but it seems to be an implementation detail. |
89 std::sort(enabled_extensions_.begin(), enabled_extensions_.end()); | 89 std::sort(enabled_extensions_.begin(), enabled_extensions_.end()); |
90 } | 90 } |
91 | 91 |
92 ResettableSettingsSnapshot::~ResettableSettingsSnapshot() { | 92 ResettableSettingsSnapshot::~ResettableSettingsSnapshot() { |
93 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 93 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
94 if (cancellation_flag_.get()) | 94 if (cancellation_flag_.get()) |
95 cancellation_flag_->data.Set(); | 95 cancellation_flag_->data.Set(); |
96 } | 96 } |
97 | 97 |
98 void ResettableSettingsSnapshot::Subtract( | 98 void ResettableSettingsSnapshot::Subtract( |
99 const ResettableSettingsSnapshot& snapshot) { | 99 const ResettableSettingsSnapshot& snapshot) { |
100 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 100 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
101 ExtensionList extensions = base::STLSetDifference<ExtensionList>( | 101 ExtensionList extensions = base::STLSetDifference<ExtensionList>( |
102 enabled_extensions_, snapshot.enabled_extensions_); | 102 enabled_extensions_, snapshot.enabled_extensions_); |
103 enabled_extensions_.swap(extensions); | 103 enabled_extensions_.swap(extensions); |
104 } | 104 } |
105 | 105 |
106 int ResettableSettingsSnapshot::FindDifferentFields( | 106 int ResettableSettingsSnapshot::FindDifferentFields( |
107 const ResettableSettingsSnapshot& snapshot) const { | 107 const ResettableSettingsSnapshot& snapshot) const { |
108 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 108 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
109 int bit_mask = 0; | 109 int bit_mask = 0; |
110 | 110 |
111 if (startup_.type != snapshot.startup_.type || | 111 if (startup_.type != snapshot.startup_.type || |
112 startup_.urls != snapshot.startup_.urls) | 112 startup_.urls != snapshot.startup_.urls) |
113 bit_mask |= STARTUP_MODE; | 113 bit_mask |= STARTUP_MODE; |
114 | 114 |
115 if (homepage_is_ntp_ != snapshot.homepage_is_ntp_ || | 115 if (homepage_is_ntp_ != snapshot.homepage_is_ntp_ || |
116 homepage_ != snapshot.homepage_ || | 116 homepage_ != snapshot.homepage_ || |
117 show_home_button_ != snapshot.show_home_button_) | 117 show_home_button_ != snapshot.show_home_button_) |
118 bit_mask |= HOMEPAGE; | 118 bit_mask |= HOMEPAGE; |
119 | 119 |
120 if (dse_url_ != snapshot.dse_url_) | 120 if (dse_url_ != snapshot.dse_url_) |
121 bit_mask |= DSE_URL; | 121 bit_mask |= DSE_URL; |
122 | 122 |
123 if (enabled_extensions_ != snapshot.enabled_extensions_) | 123 if (enabled_extensions_ != snapshot.enabled_extensions_) |
124 bit_mask |= EXTENSIONS; | 124 bit_mask |= EXTENSIONS; |
125 | 125 |
126 if (shortcuts_ != snapshot.shortcuts_) | 126 if (shortcuts_ != snapshot.shortcuts_) |
127 bit_mask |= SHORTCUTS; | 127 bit_mask |= SHORTCUTS; |
128 | 128 |
129 static_assert(ResettableSettingsSnapshot::ALL_FIELDS == 31, | 129 static_assert(ResettableSettingsSnapshot::ALL_FIELDS == 31, |
130 "new field needs to be added here"); | 130 "new field needs to be added here"); |
131 | 131 |
132 return bit_mask; | 132 return bit_mask; |
133 } | 133 } |
134 | 134 |
135 void ResettableSettingsSnapshot::RequestShortcuts( | 135 void ResettableSettingsSnapshot::RequestShortcuts( |
136 const base::Closure& callback) { | 136 const base::Closure& callback) { |
137 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 137 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
138 DCHECK(!cancellation_flag_.get() && !shortcuts_determined()); | 138 DCHECK(!cancellation_flag_.get() && !shortcuts_determined()); |
139 | 139 |
140 cancellation_flag_ = new SharedCancellationFlag; | 140 cancellation_flag_ = new SharedCancellationFlag; |
141 content::BrowserThread::PostTaskAndReplyWithResult( | 141 content::BrowserThread::PostTaskAndReplyWithResult( |
142 content::BrowserThread::FILE, | 142 content::BrowserThread::FILE, |
143 FROM_HERE, | 143 FROM_HERE, |
144 base::Bind(&GetChromeLaunchShortcuts, cancellation_flag_), | 144 base::Bind(&GetChromeLaunchShortcuts, cancellation_flag_), |
145 base::Bind(&ResettableSettingsSnapshot::SetShortcutsAndReport, | 145 base::Bind(&ResettableSettingsSnapshot::SetShortcutsAndReport, |
146 weak_ptr_factory_.GetWeakPtr(), | 146 weak_ptr_factory_.GetWeakPtr(), |
147 callback)); | 147 callback)); |
148 } | 148 } |
149 | 149 |
150 void ResettableSettingsSnapshot::SetShortcutsAndReport( | 150 void ResettableSettingsSnapshot::SetShortcutsAndReport( |
151 const base::Closure& callback, | 151 const base::Closure& callback, |
152 const std::vector<ShortcutCommand>& shortcuts) { | 152 const std::vector<ShortcutCommand>& shortcuts) { |
153 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 153 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
154 shortcuts_ = shortcuts; | 154 shortcuts_ = shortcuts; |
155 shortcuts_determined_ = true; | 155 shortcuts_determined_ = true; |
156 cancellation_flag_ = NULL; | 156 cancellation_flag_ = NULL; |
157 | 157 |
158 if (!callback.is_null()) | 158 if (!callback.is_null()) |
159 callback.Run(); | 159 callback.Run(); |
160 } | 160 } |
161 | 161 |
162 std::string SerializeSettingsReport(const ResettableSettingsSnapshot& snapshot, | 162 std::string SerializeSettingsReport(const ResettableSettingsSnapshot& snapshot, |
163 int field_mask) { | 163 int field_mask) { |
164 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 164 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
165 base::DictionaryValue dict; | 165 base::DictionaryValue dict; |
166 | 166 |
167 if (field_mask & ResettableSettingsSnapshot::STARTUP_MODE) { | 167 if (field_mask & ResettableSettingsSnapshot::STARTUP_MODE) { |
168 base::ListValue* list = new base::ListValue; | 168 base::ListValue* list = new base::ListValue; |
169 const std::vector<GURL>& urls = snapshot.startup_urls(); | 169 const std::vector<GURL>& urls = snapshot.startup_urls(); |
170 for (std::vector<GURL>::const_iterator i = urls.begin(); | 170 for (std::vector<GURL>::const_iterator i = urls.begin(); |
171 i != urls.end(); ++i) | 171 i != urls.end(); ++i) |
172 list->AppendString(i->spec()); | 172 list->AppendString(i->spec()); |
173 dict.Set(kStartupURLPath, list); | 173 dict.Set(kStartupURLPath, list); |
174 dict.SetInteger(kStartupTypePath, snapshot.startup_type()); | 174 dict.SetInteger(kStartupTypePath, snapshot.startup_type()); |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 feedback_data->set_page_url(""); | 241 feedback_data->set_page_url(""); |
242 feedback_data->set_user_email(""); | 242 feedback_data->set_user_email(""); |
243 | 243 |
244 feedback_util::SendReport(feedback_data); | 244 feedback_util::SendReport(feedback_data); |
245 } | 245 } |
246 | 246 |
247 scoped_ptr<base::ListValue> GetReadableFeedbackForSnapshot( | 247 scoped_ptr<base::ListValue> GetReadableFeedbackForSnapshot( |
248 Profile* profile, | 248 Profile* profile, |
249 const ResettableSettingsSnapshot& snapshot) { | 249 const ResettableSettingsSnapshot& snapshot) { |
250 DCHECK(profile); | 250 DCHECK(profile); |
251 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); | 251 DCHECK_CURRENTLY_ON(content::BrowserThread::UI); |
252 scoped_ptr<base::ListValue> list(new base::ListValue); | 252 scoped_ptr<base::ListValue> list(new base::ListValue); |
253 AddPair(list.get(), | 253 AddPair(list.get(), |
254 l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_LOCALE), | 254 l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_LOCALE), |
255 g_browser_process->GetApplicationLocale()); | 255 g_browser_process->GetApplicationLocale()); |
256 AddPair(list.get(), | 256 AddPair(list.get(), |
257 l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_USER_AGENT), | 257 l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_USER_AGENT), |
258 GetUserAgent()); | 258 GetUserAgent()); |
259 chrome::VersionInfo version_info; | 259 chrome::VersionInfo version_info; |
260 std::string version = version_info.Version(); | 260 std::string version = version_info.Version(); |
261 version += chrome::VersionInfo::GetVersionStringModifier(); | 261 version += chrome::VersionInfo::GetVersionStringModifier(); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
359 extension_names += '\n'; | 359 extension_names += '\n'; |
360 extension_names += i->second; | 360 extension_names += i->second; |
361 } | 361 } |
362 if (!extension_names.empty()) { | 362 if (!extension_names.empty()) { |
363 AddPair(list.get(), | 363 AddPair(list.get(), |
364 l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_EXTENSIONS), | 364 l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_EXTENSIONS), |
365 extension_names); | 365 extension_names); |
366 } | 366 } |
367 return list.Pass(); | 367 return list.Pass(); |
368 } | 368 } |
OLD | NEW |