Index: chrome/browser/feedback/feedback_data.cc |
diff --git a/chrome/browser/feedback/feedback_data.cc b/chrome/browser/feedback/feedback_data.cc |
index 45bad23d1614768a074c0899200c0a34d4549a72..403d4eeda84c3ede7c2ac334dbc0a3fca281466b 100644 |
--- a/chrome/browser/feedback/feedback_data.cc |
+++ b/chrome/browser/feedback/feedback_data.cc |
@@ -6,10 +6,16 @@ |
#include "base/json/json_string_value_serializer.h" |
#include "base/values.h" |
+#include "chrome/browser/browser_process.h" |
+#include "chrome/browser/chromeos/settings/cros_settings.h" |
+#include "chrome/browser/extensions/extension_service.h" |
+#include "chrome/browser/extensions/extension_system.h" |
#include "chrome/browser/feedback/feedback_util.h" |
#include "chrome/browser/profiles/profile_manager.h" |
#include "chrome/browser/sync/about_sync_util.h" |
#include "chrome/browser/sync/profile_sync_service_factory.h" |
+#include "chrome/common/extensions/extension.h" |
+#include "chrome/common/extensions/extension_set.h" |
#include "content/public/browser/browser_thread.h" |
using content::BrowserThread; |
@@ -19,6 +25,8 @@ using content::BrowserThread; |
// log data source once crbug.com/138582 is fixed. |
namespace { |
+const char kExtensionsListKey[] = "extensions"; |
+ |
void AddSyncLogs(chromeos::system::LogDictionaryType* logs) { |
Profile* profile = ProfileManager::GetDefaultProfile(); |
if (!ProfileSyncServiceFactory::GetInstance()->HasProfileSyncService( |
@@ -55,6 +63,40 @@ void AddSyncLogs(chromeos::system::LogDictionaryType* logs) { |
(*logs)[kSyncDataKey] = sync_logs_string; |
} |
+void AddExtensionInfoLogs(chromeos::system::LogDictionaryType* logs) { |
+ bool reporting_enabled = false; |
+ chromeos::CrosSettings::Get()->GetBoolean(chromeos::kStatsReportingPref, |
+ &reporting_enabled); |
+ if (!reporting_enabled) |
+ return; |
+ |
+ Profile* default_profile = |
+ g_browser_process->profile_manager()->GetDefaultProfile(); |
+ if (!default_profile) |
+ return; |
+ |
+ ExtensionService* service = |
+ extensions::ExtensionSystem::Get(default_profile)->extension_service(); |
+ if (!service) |
+ return; |
+ |
+ std::string extensions_list; |
+ const ExtensionSet* extensions = service->extensions(); |
+ for (ExtensionSet::const_iterator it = extensions->begin(); |
+ it != extensions->end(); |
+ ++it) { |
+ const extensions::Extension* extension = *it; |
+ if (extensions_list.empty()) { |
+ extensions_list = extension->name(); |
+ } else { |
+ extensions_list += ", " + extension->name(); |
+ } |
+ } |
+ |
+ if (!extensions_list.empty()) |
+ (*logs)[kExtensionsListKey] = extensions_list; |
+} |
+ |
} |
#endif // OS_CHROMEOS |
@@ -158,6 +200,7 @@ void FeedbackData::SyslogsComplete(chromeos::system::LogDictionaryType* logs, |
// TODO(rkc): Move to the correct place once crbug.com/138582 is done. |
AddSyncLogs(logs); |
+ AddExtensionInfoLogs(logs); |
// Will get deleted when SendReport() is called. |
zip_content_ = zip_content; |