Chromium Code Reviews| 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 ea469bab54ada5caa493d53462641c7a51ffe4f0..530259cc597d2b340d3ddb7f5506b31afe6ae4ff 100644 |
| --- a/chrome/browser/ui/webui/components_ui.cc |
| +++ b/chrome/browser/ui/webui/components_ui.cc |
| @@ -11,6 +11,7 @@ |
| #include "base/values.h" |
| #include "chrome/browser/browser_process.h" |
| #include "chrome/browser/component_updater/component_updater_service.h" |
| +#include "chrome/browser/component_updater/crx_update_item.h" |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/browser/ui/browser_window.h" |
| #include "chrome/common/chrome_paths.h" |
| @@ -43,6 +44,8 @@ content::WebUIDataSource* CreateComponentsUIHTMLSource(Profile* profile) { |
| source->AddLocalizedString("componentVersion", IDS_COMPONENTS_VERSION); |
| source->AddLocalizedString("checkUpdate", IDS_COMPONENTS_CHECK_FOR_UPDATE); |
| source->AddLocalizedString("noComponents", IDS_COMPONENTS_NO_COMPONENTS); |
| + source->AddLocalizedString("statusLabel", IDS_COMPONENTS_STATUS_LABEL); |
| + source->AddLocalizedString("checkingLabel", IDS_COMPONENTS_CHECKING_LABEL); |
| source->SetJsonPath("strings.js"); |
| source->AddResourcePath("components.js", IDR_COMPONENTS_JS); |
| @@ -75,8 +78,6 @@ class ComponentsDOMHandler : public WebUIMessageHandler { |
| void HandleCheckUpdate(const base::ListValue* args); |
| private: |
| - void LoadComponents(); |
| - |
| content::NotificationRegistrar registrar_; |
| DISALLOW_COPY_AND_ASSIGN(ComponentsDOMHandler); |
| @@ -86,18 +87,23 @@ ComponentsDOMHandler::ComponentsDOMHandler() { |
| } |
| void ComponentsDOMHandler::RegisterMessages() { |
| - web_ui()->RegisterMessageCallback("requestComponentsData", |
| + web_ui()->RegisterMessageCallback( |
| + "requestComponentsData", |
| base::Bind(&ComponentsDOMHandler::HandleRequestComponentsData, |
| base::Unretained(this))); |
| - web_ui()->RegisterMessageCallback("checkUpdate", |
| + web_ui()->RegisterMessageCallback( |
| + "checkUpdate", |
| base::Bind(&ComponentsDOMHandler::HandleCheckUpdate, |
| base::Unretained(this))); |
| } |
| void ComponentsDOMHandler::HandleRequestComponentsData( |
| const base::ListValue* args) { |
| - LoadComponents(); |
| + base::ListValue* list = ComponentsUI::LoadComponents(); |
| + base::DictionaryValue result; |
| + result.Set("components", list); |
| + web_ui()->CallJavascriptFunction("returnComponentsData", result); |
| } |
| // This function is called when user presses button from html UI. |
| @@ -119,30 +125,6 @@ void ComponentsDOMHandler::HandleCheckUpdate(const base::ListValue* args) { |
| ComponentsUI::OnDemandUpdate(component_id); |
| } |
| -void ComponentsDOMHandler::LoadComponents() { |
| - component_updater::ComponentUpdateService* cus = |
| - g_browser_process->component_updater(); |
| - std::vector<component_updater::CrxComponentInfo> components; |
| - cus->GetComponents(&components); |
| - |
| - // Construct DictionaryValues to return to UI. |
| - base::ListValue* component_list = new base::ListValue(); |
| - for (size_t j = 0; j < components.size(); ++j) { |
| - const component_updater::CrxComponentInfo& component = components[j]; |
| - |
| - base::DictionaryValue* component_entry = new base::DictionaryValue(); |
| - component_entry->SetString("id", component.id); |
| - component_entry->SetString("name", component.name); |
| - component_entry->SetString("version", component.version); |
| - |
| - component_list->Append(component_entry); |
| - } |
| - |
| - base::DictionaryValue results; |
| - results.Set("components", component_list); |
| - web_ui()->CallJavascriptFunction("returnComponentsData", results); |
| -} |
| - |
| } // namespace |
| /////////////////////////////////////////////////////////////////////////////// |
| @@ -157,6 +139,16 @@ ComponentsUI::ComponentsUI(content::WebUI* web_ui) : WebUIController(web_ui) { |
| // Set up the chrome://components/ source. |
| Profile* profile = Profile::FromWebUI(web_ui); |
| content::WebUIDataSource::Add(profile, CreateComponentsUIHTMLSource(profile)); |
| + component_updater::ComponentUpdateService* cus = |
| + g_browser_process->component_updater(); |
| + cus->AddObserver(this); |
| +} |
| + |
| +ComponentsUI::~ComponentsUI() { |
| + component_updater::ComponentUpdateService* cus = |
| + g_browser_process->component_updater(); |
| + if (cus) |
| + cus->RemoveObserver(this); |
| } |
| // static |
| @@ -167,8 +159,90 @@ void ComponentsUI::OnDemandUpdate(const std::string& component_id) { |
| } |
| // static |
| +base::ListValue* ComponentsUI::LoadComponents() { |
| + component_updater::ComponentUpdateService* cus = |
| + g_browser_process->component_updater(); |
| + std::vector<std::string> component_ids; |
| + component_ids = cus->GetComponentIDs(); |
| + |
| + // Construct DictionaryValues to return to UI. |
| + base::ListValue* component_list = new base::ListValue(); |
| + for (size_t j = 0; j < component_ids.size(); ++j) { |
| + const component_updater::CrxUpdateItem* item = |
| + cus->GetComponentDetails(component_ids[j]); |
| + if (item) { |
| + base::DictionaryValue* component_entry = new base::DictionaryValue(); |
| + component_entry->SetString("id", component_ids[j]); |
| + component_entry->SetString("name", item->component.name); |
| + component_entry->SetString("version", |
| + item->component.version.GetString()); |
| + |
| + component_entry->SetString("status", |
| + ServiceStatusToString(item->status)); |
| + |
| + component_list->Append(component_entry); |
| + } |
| + } |
| + |
| + return component_list; |
| +} |
| + |
| +// static |
| base::RefCountedMemory* ComponentsUI::GetFaviconResourceBytes( |
| ui::ScaleFactor scale_factor) { |
| return ResourceBundle::GetSharedInstance(). |
| LoadDataResourceBytesForScale(IDR_PLUGINS_FAVICON, scale_factor); |
| } |
| + |
| +base::string16 ComponentsUI::ComponentEventToString(Events event) { |
| + switch (event) { |
| + case COMPONENT_UPDATER_STARTED: |
|
James Hawkins
2014/05/28 23:01:11
Optional: Storing these in maps may make these met
Shrikant Kelkar
2014/05/28 23:14:45
Will keep them as it is for now.
|
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_EVT_STATUS_STARTED); |
| + case COMPONENT_UPDATER_SLEEPING: |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_EVT_STATUS_SLEEPING); |
| + case COMPONENT_UPDATE_FOUND: |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_EVT_STATUS_FOUND); |
| + case COMPONENT_UPDATE_READY: |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_EVT_STATUS_READY); |
| + case COMPONENT_UPDATED: |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_EVT_STATUS_UPDATED); |
| + case COMPONENT_NOT_UPDATED: |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_EVT_STATUS_NOTUPDATED); |
| + } |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_UNKNOWN); |
| +} |
| + |
| +base::string16 ComponentsUI::ServiceStatusToString( |
| + component_updater::CrxUpdateItem::Status status) { |
| + switch (status) { |
| + case component_updater::CrxUpdateItem::kNew: |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_SVC_STATUS_NEW); |
| + case component_updater::CrxUpdateItem::kChecking: |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_SVC_STATUS_CHECKING); |
| + case component_updater::CrxUpdateItem::kCanUpdate: |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_SVC_STATUS_UPDATE); |
| + case component_updater::CrxUpdateItem::kDownloadingDiff: |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_SVC_STATUS_DNL_DIFF); |
| + case component_updater::CrxUpdateItem::kDownloading: |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_SVC_STATUS_DNL); |
| + case component_updater::CrxUpdateItem::kUpdatingDiff: |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_SVC_STATUS_UPDT_DIFF); |
| + case component_updater::CrxUpdateItem::kUpdating: |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_SVC_STATUS_UPDATING); |
| + case component_updater::CrxUpdateItem::kUpdated: |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_SVC_STATUS_UPDATED); |
| + case component_updater::CrxUpdateItem::kUpToDate: |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_SVC_STATUS_UPTODATE); |
| + case component_updater::CrxUpdateItem::kNoUpdate: |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_SVC_STATUS_NOUPDATE); |
| + } |
| + return l10n_util::GetStringUTF16(IDS_COMPONENTS_UNKNOWN); |
| +} |
| + |
| +void ComponentsUI::OnEvent(Events event, const std::string& id) { |
| + base::DictionaryValue parameters; |
| + parameters.SetString("event", ComponentEventToString(event)); |
| + if (!id.empty()) |
| + parameters.SetString("id", id); |
| + web_ui()->CallJavascriptFunction("onComponentEvent", parameters); |
| +} |