Index: chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.cc |
diff --git a/chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.cc b/chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.cc |
index 8c9a9d7cb9127b0e80a15d1f9eb11d346c2845f0..bd957e187886a72489c197725f3ddd064652cdd1 100644 |
--- a/chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.cc |
+++ b/chrome/browser/ui/views/apps/app_info_dialog/app_info_summary_panel.cc |
@@ -8,14 +8,17 @@ |
#include "base/callback_forward.h" |
#include "base/command_line.h" |
+#include "base/file_util.h" |
#include "base/i18n/time_formatting.h" |
#include "base/logging.h" |
#include "base/strings/utf_string_conversions.h" |
+#include "base/task_runner_util.h" |
#include "chrome/browser/extensions/extension_service.h" |
#include "chrome/browser/extensions/launch_util.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/common/chrome_switches.h" |
#include "chrome/common/extensions/extension_constants.h" |
+#include "content/public/browser/browser_thread.h" |
#include "extensions/browser/extension_prefs.h" |
#include "extensions/browser/extension_system.h" |
#include "extensions/common/extension.h" |
@@ -23,6 +26,7 @@ |
#include "grit/generated_resources.h" |
#include "ui/base/l10n/l10n_util.h" |
#include "ui/base/models/combobox_model.h" |
+#include "ui/base/text/bytes_formatting.h" |
#include "ui/views/controls/combobox/combobox.h" |
#include "ui/views/controls/label.h" |
#include "ui/views/layout/box_layout.h" |
@@ -130,13 +134,16 @@ AppInfoSummaryPanel::AppInfoSummaryPanel(Profile* profile, |
description_heading_(NULL), |
description_label_(NULL), |
details_heading_(NULL), |
+ size_title_(NULL), |
+ size_value_(NULL), |
version_title_(NULL), |
version_value_(NULL), |
installed_time_title_(NULL), |
installed_time_value_(NULL), |
last_run_time_title_(NULL), |
last_run_time_value_(NULL), |
- launch_options_combobox_(NULL) { |
+ launch_options_combobox_(NULL), |
+ weak_ptr_factory_(this) { |
// Create UI elements. |
CreateDescriptionControl(); |
CreateDetailsControl(); |
@@ -180,6 +187,19 @@ void AppInfoSummaryPanel::CreateDescriptionControl() { |
} |
void AppInfoSummaryPanel::CreateDetailsControl() { |
+ // The size doesn't make sense for component apps. |
+ if (app_->location() != extensions::Manifest::COMPONENT) { |
+ size_title_ = new views::Label( |
+ l10n_util::GetStringUTF16(IDS_APPLICATION_INFO_SIZE_LABEL)); |
+ size_title_->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
+ |
+ size_value_ = new views::Label( |
+ l10n_util::GetStringUTF16(IDS_APPLICATION_INFO_SIZE_LOADING_LABEL)); |
+ size_value_->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
+ |
+ StartCalculatingAppSize(); |
+ } |
+ |
// The version doesn't make sense for bookmark apps. |
if (!app_->from_bookmark()) { |
// Display 'Version: Built-in' for component apps. |
@@ -275,6 +295,11 @@ void AppInfoSummaryPanel::LayoutDetailsControl() { |
CreateKeyValueField(last_run_time_title_, last_run_time_value_)); |
} |
+ if (size_title_ && size_value_) { |
+ details_stack->AddChildView( |
+ CreateKeyValueField(size_title_, size_value_)); |
+ } |
+ |
views::View* vertical_stack = CreateVerticalStack(); |
vertical_stack->AddChildView(details_heading_); |
vertical_stack->AddChildView(details_stack); |
@@ -291,6 +316,18 @@ void AppInfoSummaryPanel::OnPerformAction(views::Combobox* combobox) { |
} |
} |
+void AppInfoSummaryPanel::StartCalculatingAppSize() { |
+ base::PostTaskAndReplyWithResult( |
+ content::BrowserThread::GetBlockingPool(), |
+ FROM_HERE, |
+ base::Bind(&base::ComputeDirectorySize, app_->path()), |
+ base::Bind(&AppInfoSummaryPanel::OnAppSizeCalculated, AsWeakPtr())); |
+} |
+ |
+void AppInfoSummaryPanel::OnAppSizeCalculated(int64 app_size_in_bytes) { |
+ size_value_->SetText(ui::FormatBytes(app_size_in_bytes)); |
+} |
+ |
base::Time AppInfoSummaryPanel::GetInstalledTime() const { |
return extensions::ExtensionPrefs::Get(profile_)->GetInstallTime(app_->id()); |
} |