Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(288)

Unified Diff: chrome/browser/ui/webui/sync_file_system_internals/extension_statuses_handler.cc

Issue 294893005: [SyncFS] Make GetOriginStatusMap asynchronous (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Refactoring Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/sync_file_system_internals/extension_statuses_handler.cc
diff --git a/chrome/browser/ui/webui/sync_file_system_internals/extension_statuses_handler.cc b/chrome/browser/ui/webui/sync_file_system_internals/extension_statuses_handler.cc
index 061dc8304a978c73940a535f205e6836bdfa0391..5774f2068eca7dfe35646213c851639fd157b403 100644
--- a/chrome/browser/ui/webui/sync_file_system_internals/extension_statuses_handler.cc
+++ b/chrome/browser/ui/webui/sync_file_system_internals/extension_statuses_handler.cc
@@ -24,8 +24,41 @@ using sync_file_system::SyncServiceState;
namespace syncfs_internals {
+namespace {
+
+void ConvertExtensionStatusToDictionary(
+ ExtensionService* extension_service,
+ const base::Callback<void(const base::ListValue&)>& callback,
+ const std::map<GURL, std::string>& status_map) {
+ DCHECK(!extension_service);
+
+ base::ListValue list;
+ for (std::map<GURL, std::string>::const_iterator itr = status_map.begin();
+ itr != status_map.end();
+ ++itr) {
+ std::string extension_id = itr->first.HostNoBrackets();
+
+ // Join with human readable extension name.
+ const extensions::Extension* extension =
+ extension_service->GetExtensionById(extension_id, true);
+ if (!extension)
+ continue;
+
+ base::DictionaryValue* dict = new base::DictionaryValue;
+ dict->SetString("extensionID", extension_id);
+ dict->SetString("extensionName", extension->name());
+ dict->SetString("status", itr->second);
+ list.Append(dict);
+ }
+
+ callback.Run(list);
+}
+
+} // namespace
+
ExtensionStatusesHandler::ExtensionStatusesHandler(Profile* profile)
- : profile_(profile) {}
+ : profile_(profile),
+ weak_ptr_factory_(this) {}
ExtensionStatusesHandler::~ExtensionStatusesHandler() {}
@@ -39,42 +72,35 @@ void ExtensionStatusesHandler::RegisterMessages() {
// static
void ExtensionStatusesHandler::GetExtensionStatusesAsDictionary(
Profile* profile,
- base::ListValue* values) {
+ const base::Callback<void(const base::ListValue&)>& callback) {
DCHECK(profile);
- DCHECK(values);
+
sync_file_system::SyncFileSystemService* sync_service =
SyncFileSystemServiceFactory::GetForProfile(profile);
+ if (!sync_service)
+ return;
+
ExtensionService* extension_service =
extensions::ExtensionSystem::Get(profile)->extension_service();
- if (!sync_service || !extension_service)
+ if (!extension_service)
return;
- std::map<GURL, std::string> status_map;
- sync_service->GetExtensionStatusMap(&status_map);
- for (std::map<GURL, std::string>::const_iterator itr = status_map.begin();
- itr != status_map.end();
- ++itr) {
- std::string extension_id = itr->first.HostNoBrackets();
-
- // Join with human readable extension name.
- const extensions::Extension* extension =
- extension_service->GetExtensionById(extension_id, true);
- if (!extension)
- continue;
-
- base::DictionaryValue* dict = new base::DictionaryValue;
- dict->SetString("extensionID", extension_id);
- dict->SetString("extensionName", extension->name());
- dict->SetString("status", itr->second);
- values->Append(dict);
- }
+ sync_service->GetExtensionStatusMap(base::Bind(
+ &ConvertExtensionStatusToDictionary,
+ base::Unretained(extension_service), callback));
tzik 2014/05/21 10:52:33 extension_service->AsWeakPtr() and check it in Con
peria 2014/05/22 02:25:21 Done. There already is a DCHECK(!extension_service
}
void ExtensionStatusesHandler::GetExtensionStatuses(
const base::ListValue* args) {
DCHECK(args);
- base::ListValue list;
- GetExtensionStatusesAsDictionary(profile_, &list);
+ GetExtensionStatusesAsDictionary(
+ profile_,
+ base::Bind(&ExtensionStatusesHandler::DidGetExtensionStatuses,
+ weak_ptr_factory_.GetWeakPtr()));
+}
+
+void ExtensionStatusesHandler::DidGetExtensionStatuses(
+ const base::ListValue& list) {
web_ui()->CallJavascriptFunction("ExtensionStatuses.onGetExtensionStatuses",
list);
}

Powered by Google App Engine
This is Rietveld 408576698