Index: chrome/browser/ui/webui/components_ui.cc |
diff --git a/chrome/browser/ui/webui/components_ui.cc b/chrome/browser/ui/webui/components_ui.cc |
index e5cce27f49a3874dd03e8144820f3d736545d4e2..276f8e39c2505070a4284e00b0a41feb33809aa8 100644 |
--- a/chrome/browser/ui/webui/components_ui.cc |
+++ b/chrome/browser/ui/webui/components_ui.cc |
@@ -76,6 +76,8 @@ class ComponentsDOMHandler : public WebUIMessageHandler { |
private: |
void LoadComponents(); |
+ void ComponentsDOMHandler::HandleRequestComponentStatus( |
+ const base::ListValue* args); |
content::NotificationRegistrar registrar_; |
@@ -93,6 +95,10 @@ void ComponentsDOMHandler::RegisterMessages() { |
web_ui()->RegisterMessageCallback("checkUpdate", |
base::Bind(&ComponentsDOMHandler::HandleCheckUpdate, |
base::Unretained(this))); |
+ |
+ web_ui()->RegisterMessageCallback("requestComponentStatus", |
James Hawkins
2014/03/27 18:46:43
nit: The start of parameter rows must align on the
Shrikant Kelkar
2014/03/27 19:28:07
Sorry, didn't understand?
|
+ base::Bind(&ComponentsDOMHandler::HandleRequestComponentStatus, |
+ base::Unretained(this))); |
} |
void ComponentsDOMHandler::HandleRequestComponentsData( |
@@ -119,6 +125,37 @@ void ComponentsDOMHandler::HandleCheckUpdate(const base::ListValue* args) { |
ComponentsUI::OnDemandUpdate(component_id); |
} |
+void ComponentsDOMHandler::HandleRequestComponentStatus( |
+ const base::ListValue* args) { |
+ if (args->GetSize() != 1) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ |
+ std::string component_id; |
+ if (!args->GetString(0, &component_id)) { |
+ NOTREACHED(); |
+ return; |
+ } |
+ |
+ component_updater::ComponentUpdateService* cus = |
+ g_browser_process->component_updater(); |
+ component_updater::ComponentUpdateService::Status status = |
+ cus->GetComponentStatus(component_id); |
+ |
+ std::string string_status; |
+ if (status == component_updater::ComponentUpdateService::kInProgress) |
+ string_status = "in-progress"; |
+ else if (status == component_updater::ComponentUpdateService::kOk) |
+ string_status = "ok"; |
+ else |
+ string_status = "error"; |
+ |
+ web_ui()->CallJavascriptFunction("returnComponentStatus", |
+ base::StringValue(component_id), |
+ base::StringValue(string_status)); |
+} |
+ |
void ComponentsDOMHandler::LoadComponents() { |
component_updater::ComponentUpdateService* cus = |
g_browser_process->component_updater(); |
@@ -134,6 +171,17 @@ void ComponentsDOMHandler::LoadComponents() { |
component_entry->SetString("id", component.id); |
component_entry->SetString("name", component.name); |
component_entry->SetString("version", component.version); |
+ switch (component.status) { |
+ case component_updater::ComponentUpdateService::kInProgress: |
+ component_entry->SetString("status", "in-progress"); |
+ break; |
+ case component_updater::ComponentUpdateService::kOk: |
+ component_entry->SetString("status", "ok"); |
+ break; |
+ case component_updater::ComponentUpdateService::kError: |
+ component_entry->SetString("status", "error"); |
+ break; |
+ } |
component_list->Append(component_entry); |
} |