diff options
Diffstat (limited to 'chrome/browser/profile_resetter/resettable_settings_snapshot.cc')
-rw-r--r-- | chrome/browser/profile_resetter/resettable_settings_snapshot.cc | 287 |
1 files changed, 94 insertions, 193 deletions
diff --git a/chrome/browser/profile_resetter/resettable_settings_snapshot.cc b/chrome/browser/profile_resetter/resettable_settings_snapshot.cc index 3f1944c..741bf82 100644 --- a/chrome/browser/profile_resetter/resettable_settings_snapshot.cc +++ b/chrome/browser/profile_resetter/resettable_settings_snapshot.cc @@ -17,7 +17,7 @@ #include "chrome/browser/search_engines/template_url_service_factory.h" #include "chrome/common/chrome_version_info.h" #include "chrome/common/pref_names.h" -#include "content/public/browser/browser_thread.h" +#include "extensions/common/extension_set.h" #include "grit/generated_resources.h" #include "grit/google_chrome_strings.h" #include "ui/base/l10n/l10n_util.h" @@ -33,7 +33,6 @@ const char kDefaultSearchEnginePath[] = "default_search_engine"; const char kEnabledExtensions[] = "enabled_extensions"; const char kHomepageIsNewTabPage[] = "homepage_is_ntp"; const char kHomepagePath[] = "homepage"; -const char kShortcuts[] = "shortcuts"; const char kStartupTypePath[] = "startup_type"; const char kStartupURLPath[] = "startup_urls"; @@ -47,131 +46,10 @@ void AddPair(base::ListValue* list, list->Append(results); } -scoped_ptr<base::ListValue> GetReadableFeedbackForSnapshot( - Profile* profile, - const ResettableSettingsSnapshot& snapshot) { - DCHECK(profile); - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); - scoped_ptr<base::ListValue> list(new base::ListValue); - AddPair(list.get(), - l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_LOCALE), - g_browser_process->GetApplicationLocale()); - AddPair(list.get(), - l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_USER_AGENT), - content::GetUserAgent(GURL())); - chrome::VersionInfo version_info; - std::string version = version_info.Version(); - version += chrome::VersionInfo::GetVersionStringModifier(); - AddPair(list.get(), - l10n_util::GetStringUTF16(IDS_PRODUCT_NAME), - version); - - // Add snapshot data. - const std::vector<GURL>& urls = snapshot.startup_urls(); - std::string startup_urls; - for (std::vector<GURL>::const_iterator i = urls.begin(); - i != urls.end(); ++i) { - if (!startup_urls.empty()) - startup_urls += ' '; - startup_urls += i->host(); - } - if (!startup_urls.empty()) { - AddPair(list.get(), - l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_STARTUP_URLS), - startup_urls); - } - - base::string16 startup_type; - switch (snapshot.startup_type()) { - case SessionStartupPref::DEFAULT: - startup_type = l10n_util::GetStringUTF16(IDS_OPTIONS_STARTUP_SHOW_NEWTAB); - break; - case SessionStartupPref::LAST: - startup_type = l10n_util::GetStringUTF16( - IDS_OPTIONS_STARTUP_RESTORE_LAST_SESSION); - break; - case SessionStartupPref::URLS: - startup_type = l10n_util::GetStringUTF16(IDS_OPTIONS_STARTUP_SHOW_PAGES); - break; - default: - break; - } - AddPair(list.get(), - l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_STARTUP_TYPE), - startup_type); - - if (!snapshot.homepage().empty()) { - AddPair(list.get(), - l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_HOMEPAGE), - snapshot.homepage()); - } - - int is_ntp_message_id = snapshot.homepage_is_ntp() ? - IDS_RESET_PROFILE_SETTINGS_HOMEPAGE_IS_NTP_TRUE : - IDS_RESET_PROFILE_SETTINGS_HOMEPAGE_IS_NTP_FALSE; - AddPair(list.get(), - l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_HOMEPAGE_IS_NTP), - l10n_util::GetStringUTF16(is_ntp_message_id)); - - TemplateURLService* service = - TemplateURLServiceFactory::GetForProfile(profile); - DCHECK(service); - TemplateURL* dse = service->GetDefaultSearchProvider(); - if (dse) { - AddPair(list.get(), - l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_DSE), - TemplateURLService::GenerateSearchURL(dse).host()); - } - - if (snapshot.shortcuts_determined()) { - base::string16 shortcut_targets; - const std::vector<ShortcutCommand>& shortcuts = snapshot.shortcuts(); - for (std::vector<ShortcutCommand>::const_iterator i = - shortcuts.begin(); i != shortcuts.end(); ++i) { - if (!shortcut_targets.empty()) - shortcut_targets += base::ASCIIToUTF16("\n"); - shortcut_targets += i->first.LossyDisplayName(); - shortcut_targets += base::ASCIIToUTF16(" "); - shortcut_targets += i->second; - } - if (!shortcut_targets.empty()) { - AddPair(list.get(), - l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_SHORTCUTS), - shortcut_targets); - } - } else { - AddPair(list.get(), - l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_SHORTCUTS), - l10n_util::GetStringUTF16( - IDS_RESET_PROFILE_SETTINGS_PROCESSING_SHORTCUTS)); - } - - const ResettableSettingsSnapshot::ExtensionList& extensions = - snapshot.enabled_extensions(); - std::string extension_names; - for (ResettableSettingsSnapshot::ExtensionList::const_iterator i = - extensions.begin(); i != extensions.end(); ++i) { - if (!extension_names.empty()) - extension_names += '\n'; - extension_names += i->second; - } - if (!extension_names.empty()) { - AddPair(list.get(), - l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_EXTENSIONS), - extension_names); - } - return list.Pass(); -} - } // namespace -ResettableSettingsSnapshot::ResettableSettingsSnapshot( - Profile* profile, - bool async_request_shortcuts) - : startup_(SessionStartupPref::GetStartupPref(profile)), - shortcuts_determined_(false), - weak_ptr_factory_(this) { - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); +ResettableSettingsSnapshot::ResettableSettingsSnapshot(Profile* profile) + : startup_(SessionStartupPref::GetStartupPref(profile)) { // URLs are always stored sorted. std::sort(startup_.urls.begin(), startup_.urls.end()); @@ -198,25 +76,12 @@ ResettableSettingsSnapshot::ResettableSettingsSnapshot( // ExtensionSet is sorted but it seems to be an implementation detail. std::sort(enabled_extensions_.begin(), enabled_extensions_.end()); - if (async_request_shortcuts) { - content::BrowserThread::PostTaskAndReplyWithResult( - content::BrowserThread::FILE, - FROM_HERE, - base::Bind(&GetChromeLaunchShortcuts), - base::Bind(&ResettableSettingsSnapshot::SetShortcutsReportFullFeedback, - weak_ptr_factory_.GetWeakPtr(), - profile, - base::Callback<void(scoped_ptr<base::ListValue>)>())); - } } -ResettableSettingsSnapshot::~ResettableSettingsSnapshot() { - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); -} +ResettableSettingsSnapshot::~ResettableSettingsSnapshot() {} void ResettableSettingsSnapshot::Subtract( const ResettableSettingsSnapshot& snapshot) { - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); ExtensionList extensions = base::STLSetDifference<ExtensionList>( enabled_extensions_, snapshot.enabled_extensions_); enabled_extensions_.swap(extensions); @@ -224,7 +89,6 @@ void ResettableSettingsSnapshot::Subtract( int ResettableSettingsSnapshot::FindDifferentFields( const ResettableSettingsSnapshot& snapshot) const { - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); int bit_mask = 0; if (startup_.type != snapshot.startup_.type || @@ -241,54 +105,14 @@ int ResettableSettingsSnapshot::FindDifferentFields( if (enabled_extensions_ != snapshot.enabled_extensions_) bit_mask |= EXTENSIONS; - if (shortcuts_ != snapshot.shortcuts_) - bit_mask |= SHORTCUTS; - - COMPILE_ASSERT(ResettableSettingsSnapshot::ALL_FIELDS == 31, + COMPILE_ASSERT(ResettableSettingsSnapshot::ALL_FIELDS == 15, add_new_field_here); return bit_mask; } -// static -scoped_ptr<base::ListValue> ResettableSettingsSnapshot::GetReadableFeedback( - Profile* profile, - const base::Callback<void(scoped_ptr<base::ListValue>)>& callback) { - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); - scoped_ptr<ResettableSettingsSnapshot> snapshot( - new ResettableSettingsSnapshot(profile, false)); - scoped_ptr<base::ListValue> list( - GetReadableFeedbackForSnapshot(profile, *snapshot)); - content::BrowserThread::PostTaskAndReplyWithResult( - content::BrowserThread::FILE, - FROM_HERE, - base::Bind(&GetChromeLaunchShortcuts), - base::Bind(&ResettableSettingsSnapshot::SetShortcutsReportFullFeedback, - base::Owned(snapshot.release()), - profile, - callback)); - return list.Pass(); -} - -void ResettableSettingsSnapshot::SetShortcutsReportFullFeedback( - Profile* profile, - const base::Callback<void(scoped_ptr<base::ListValue>)>& callback, - const std::vector<ShortcutCommand>& shortcuts) { - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); - for (std::vector<ShortcutCommand>::const_iterator i = shortcuts.begin(); - i != shortcuts.end(); ++i) { - if (!i->second.empty()) - shortcuts_.push_back(*i); - } - shortcuts_determined_ = true; - - if (!callback.is_null()) - callback.Run(GetReadableFeedbackForSnapshot(profile, *this)); -} - std::string SerializeSettingsReport(const ResettableSettingsSnapshot& snapshot, int field_mask) { - DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI)); base::DictionaryValue dict; if (field_mask & ResettableSettingsSnapshot::STARTUP_MODE) { @@ -323,18 +147,7 @@ std::string SerializeSettingsReport(const ResettableSettingsSnapshot& snapshot, dict.Set(kEnabledExtensions, list); } - if (field_mask & ResettableSettingsSnapshot::SHORTCUTS) { - base::ListValue* list = new base::ListValue; - const std::vector<ShortcutCommand>& shortcuts = snapshot.shortcuts(); - for (std::vector<ShortcutCommand>::const_iterator i = shortcuts.begin(); - i != shortcuts.end(); ++i) { - list->AppendString( - i->first.LossyDisplayName() + base::ASCIIToUTF16(" ") + i->second); - } - dict.Set(kShortcuts, list); - } - - COMPILE_ASSERT(ResettableSettingsSnapshot::ALL_FIELDS == 31, + COMPILE_ASSERT(ResettableSettingsSnapshot::ALL_FIELDS == 15, serialize_new_field_here); std::string json; @@ -366,3 +179,91 @@ void SendSettingsFeedback(const std::string& report, feedback_util::SendReport(feedback_data); } + +base::ListValue* GetReadableFeedback(Profile* profile) { + DCHECK(profile); + base::ListValue* list = new base::ListValue; + AddPair(list, l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_LOCALE), + g_browser_process->GetApplicationLocale()); + AddPair(list, + l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_USER_AGENT), + content::GetUserAgent(GURL())); + chrome::VersionInfo version_info; + std::string version = version_info.Version(); + version += chrome::VersionInfo::GetVersionStringModifier(); + AddPair(list, + l10n_util::GetStringUTF16(IDS_PRODUCT_NAME), + version); + + // Add snapshot data. + ResettableSettingsSnapshot snapshot(profile); + const std::vector<GURL>& urls = snapshot.startup_urls(); + std::string startup_urls; + for (std::vector<GURL>::const_iterator i = urls.begin(); + i != urls.end(); ++i) { + (startup_urls += i->host()) += ' '; + } + if (!startup_urls.empty()) { + startup_urls.erase(startup_urls.end() - 1); + AddPair(list, + l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_STARTUP_URLS), + startup_urls); + } + + base::string16 startup_type; + switch (snapshot.startup_type()) { + case SessionStartupPref::DEFAULT: + startup_type = l10n_util::GetStringUTF16(IDS_OPTIONS_STARTUP_SHOW_NEWTAB); + break; + case SessionStartupPref::LAST: + startup_type = l10n_util::GetStringUTF16( + IDS_OPTIONS_STARTUP_RESTORE_LAST_SESSION); + break; + case SessionStartupPref::URLS: + startup_type = l10n_util::GetStringUTF16(IDS_OPTIONS_STARTUP_SHOW_PAGES); + break; + default: + break; + } + AddPair(list, + l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_STARTUP_TYPE), + startup_type); + + if (!snapshot.homepage().empty()) { + AddPair(list, + l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_HOMEPAGE), + snapshot.homepage()); + } + + int is_ntp_message_id = snapshot.homepage_is_ntp() ? + IDS_RESET_PROFILE_SETTINGS_HOMEPAGE_IS_NTP_TRUE : + IDS_RESET_PROFILE_SETTINGS_HOMEPAGE_IS_NTP_FALSE; + AddPair(list, + l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_HOMEPAGE_IS_NTP), + l10n_util::GetStringUTF16(is_ntp_message_id)); + + TemplateURLService* service = + TemplateURLServiceFactory::GetForProfile(profile); + DCHECK(service); + TemplateURL* dse = service->GetDefaultSearchProvider(); + if (dse) { + AddPair(list, + l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_DSE), + TemplateURLService::GenerateSearchURL(dse).host()); + } + + const ResettableSettingsSnapshot::ExtensionList& extensions = + snapshot.enabled_extensions(); + std::string extension_names; + for (ResettableSettingsSnapshot::ExtensionList::const_iterator i = + extensions.begin(); i != extensions.end(); ++i) { + (extension_names += i->second) += '\n'; + } + if (!extension_names.empty()) { + extension_names.erase(extension_names.end() - 1); + AddPair(list, + l10n_util::GetStringUTF16(IDS_RESET_PROFILE_SETTINGS_EXTENSIONS), + extension_names); + } + return list; +} |