Commit 9e169edb authored by Timothy Loh's avatar Timothy Loh Committed by Commit Bot

Re-use PluginVmInstaller::InstallingState in PluginVmInstallerView

This CL makes PluginVmInstallerView re-use from PluginVmInstaller the
enum indicating installer progress. This somewhat reduces the code that
needs to be written when adding new steps in the installation flow,
but more importantly allows a subsequent CL, crrev.com/c/2214586, to
simplify the installer's observer interface so the UI will only need
to be concerned with what to display to the user for a given state.

Bug: 1063748
Change-Id: I5ce64bb7d641f221af822d4737e35fb21de8d589
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2213651Reviewed-by: default avatarJulian Watson <juwa@google.com>
Commit-Queue: Timothy Loh <timloh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#772119}
parent 2b3de4bf
...@@ -39,6 +39,33 @@ constexpr gfx::Insets kButtonRowInsets(0, 64, 32, 64); ...@@ -39,6 +39,33 @@ constexpr gfx::Insets kButtonRowInsets(0, 64, 32, 64);
constexpr int kWindowWidth = 768; constexpr int kWindowWidth = 768;
constexpr int kWindowHeight = 636; constexpr int kWindowHeight = 636;
plugin_vm::PluginVmSetupResult BucketForCancelledInstall(
plugin_vm::PluginVmInstaller::InstallingState installing_state) {
switch (installing_state) {
case plugin_vm::PluginVmInstaller::InstallingState::kInactive:
NOTREACHED();
FALLTHROUGH;
case plugin_vm::PluginVmInstaller::InstallingState::kCheckingLicense:
return plugin_vm::PluginVmSetupResult::kUserCancelledValidatingLicense;
case plugin_vm::PluginVmInstaller::InstallingState::kCheckingDiskSpace:
return plugin_vm::PluginVmSetupResult::kUserCancelledCheckingDiskSpace;
case plugin_vm::PluginVmInstaller::InstallingState::kPausedLowDiskSpace:
return plugin_vm::PluginVmSetupResult::kUserCancelledLowDiskSpace;
case plugin_vm::PluginVmInstaller::InstallingState::kDownloadingDlc:
return plugin_vm::PluginVmSetupResult::
kUserCancelledDownloadingPluginVmDlc;
case plugin_vm::PluginVmInstaller::InstallingState::kCheckingForExistingVm:
return plugin_vm::PluginVmSetupResult::
kUserCancelledCheckingForExistingVm;
case plugin_vm::PluginVmInstaller::InstallingState::kDownloadingImage:
return plugin_vm::PluginVmSetupResult::
kUserCancelledDownloadingPluginVmImage;
case plugin_vm::PluginVmInstaller::InstallingState::kImporting:
return plugin_vm::PluginVmSetupResult::
kUserCancelledImportingPluginVmImage;
}
}
} // namespace } // namespace
void plugin_vm::ShowPluginVmInstallerView(Profile* profile) { void plugin_vm::ShowPluginVmInstallerView(Profile* profile) {
...@@ -165,24 +192,25 @@ bool PluginVmInstallerView::ShouldShowWindowTitle() const { ...@@ -165,24 +192,25 @@ bool PluginVmInstallerView::ShouldShowWindowTitle() const {
} }
bool PluginVmInstallerView::Accept() { bool PluginVmInstallerView::Accept() {
if (state_ == State::CONFIRM_INSTALL) { if (state_ == State::kConfirmInstall) {
StartInstallation(); StartInstallation();
return false; return false;
} }
if (state_ == State::CREATED || state_ == State::IMPORTED) { if (state_ == State::kCreated || state_ == State::kImported) {
// Launch button has been clicked. // Launch button has been clicked.
plugin_vm::PluginVmManagerFactory::GetForProfile(profile_)->LaunchPluginVm( plugin_vm::PluginVmManagerFactory::GetForProfile(profile_)->LaunchPluginVm(
base::DoNothing()); base::DoNothing());
return true; return true;
} }
if (state_ == State::LOW_DISK_SPACE) { if (state_ == State::kInstalling) {
state_ = State::DOWNLOADING_DLC; DCHECK_EQ(installing_state_, InstallingState::kPausedLowDiskSpace);
installing_state_ = InstallingState::kDownloadingDlc;
OnStateUpdated(); OnStateUpdated();
plugin_vm_installer_->Continue(); plugin_vm_installer_->Continue();
return false; return false;
} }
DCHECK_EQ(state_, State::ERROR); DCHECK_EQ(state_, State::kError);
// Retry button has been clicked to retry setting of PluginVm environment // Retry button has been clicked to retry setting of PluginVm environment
// after error occurred. // after error occurred.
StartInstallation(); StartInstallation();
...@@ -191,50 +219,22 @@ bool PluginVmInstallerView::Accept() { ...@@ -191,50 +219,22 @@ bool PluginVmInstallerView::Accept() {
bool PluginVmInstallerView::Cancel() { bool PluginVmInstallerView::Cancel() {
switch (state_) { switch (state_) {
case State::CONFIRM_INSTALL: case State::kConfirmInstall:
plugin_vm::RecordPluginVmSetupResultHistogram( plugin_vm::RecordPluginVmSetupResultHistogram(
plugin_vm::PluginVmSetupResult::kUserCancelledWithoutStarting); plugin_vm::PluginVmSetupResult::kUserCancelledWithoutStarting);
break; break;
case State::CHECKING_LICENSE: case State::kInstalling:
plugin_vm::RecordPluginVmSetupResultHistogram(
plugin_vm::PluginVmSetupResult::kUserCancelledValidatingLicense);
break;
case State::CHECKING_DISK_SPACE:
plugin_vm::RecordPluginVmSetupResultHistogram(
plugin_vm::PluginVmSetupResult::kUserCancelledCheckingDiskSpace);
break;
case State::LOW_DISK_SPACE:
plugin_vm::RecordPluginVmSetupResultHistogram(
plugin_vm::PluginVmSetupResult::kUserCancelledLowDiskSpace);
break;
case State::DOWNLOADING_DLC:
plugin_vm::RecordPluginVmSetupResultHistogram( plugin_vm::RecordPluginVmSetupResultHistogram(
plugin_vm::PluginVmSetupResult::kUserCancelledDownloadingPluginVmDlc); BucketForCancelledInstall(installing_state_));
plugin_vm_installer_->Cancel();
break; break;
case State::CHECKING_VMS: case State::kCreated:
plugin_vm::RecordPluginVmSetupResultHistogram( case State::kImported:
plugin_vm::PluginVmSetupResult::kUserCancelledCheckingForExistingVm); case State::kError:
break;
case State::DOWNLOADING:
plugin_vm::RecordPluginVmSetupResultHistogram(
plugin_vm::PluginVmSetupResult::
kUserCancelledDownloadingPluginVmImage);
break;
case State::IMPORTING:
plugin_vm::RecordPluginVmSetupResultHistogram(
plugin_vm::PluginVmSetupResult::kUserCancelledImportingPluginVmImage);
break;
case State::CREATED:
case State::IMPORTED:
case State::ERROR:
// Setup result has already been logged in these cases. // Setup result has already been logged in these cases.
return true; break;
default:
NOTREACHED();
} }
plugin_vm_installer_->Cancel();
return true; return true;
} }
...@@ -248,38 +248,39 @@ void PluginVmInstallerView::OnProgressUpdated(double fraction_complete) { ...@@ -248,38 +248,39 @@ void PluginVmInstallerView::OnProgressUpdated(double fraction_complete) {
void PluginVmInstallerView::OnLicenseChecked() { void PluginVmInstallerView::OnLicenseChecked() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
DCHECK_EQ(state_, State::CHECKING_LICENSE); DCHECK_EQ(installing_state_, InstallingState::kCheckingLicense);
state_ = State::CHECKING_DISK_SPACE; installing_state_ = InstallingState::kCheckingDiskSpace;
OnStateUpdated(); OnStateUpdated();
} }
void PluginVmInstallerView::OnCheckedDiskSpace(bool low_disk_space) { void PluginVmInstallerView::OnCheckedDiskSpace(bool low_disk_space) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
DCHECK_EQ(state_, State::CHECKING_DISK_SPACE); DCHECK_EQ(installing_state_, InstallingState::kCheckingDiskSpace);
if (low_disk_space) if (low_disk_space)
state_ = State::LOW_DISK_SPACE; installing_state_ = InstallingState::kPausedLowDiskSpace;
else else
state_ = State::DOWNLOADING_DLC; installing_state_ = InstallingState::kDownloadingDlc;
OnStateUpdated(); OnStateUpdated();
} }
void PluginVmInstallerView::OnDlcDownloadCompleted() { void PluginVmInstallerView::OnDlcDownloadCompleted() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
DCHECK_EQ(state_, State::DOWNLOADING_DLC); DCHECK_EQ(installing_state_, InstallingState::kDownloadingDlc);
state_ = State::CHECKING_VMS; installing_state_ = InstallingState::kCheckingForExistingVm;
OnStateUpdated(); OnStateUpdated();
} }
void PluginVmInstallerView::OnExistingVmCheckCompleted(bool has_vm) { void PluginVmInstallerView::OnExistingVmCheckCompleted(bool has_vm) {
DCHECK_EQ(state_, State::CHECKING_VMS); DCHECK_EQ(installing_state_, InstallingState::kCheckingForExistingVm);
if (has_vm) { if (has_vm) {
// This case should only occur if the user manually installed a VM via vmc, // This case should only occur if the user manually installed a VM via vmc,
// which is rare enough so we just re-use the regular success strings. // which is rare enough so we just re-use the regular success strings.
state_ = State::IMPORTED; state_ = State::kImported;
installing_state_ = InstallingState::kInactive;
OnStateUpdated(); OnStateUpdated();
plugin_vm::RecordPluginVmSetupResultHistogram( plugin_vm::RecordPluginVmSetupResultHistogram(
...@@ -287,7 +288,7 @@ void PluginVmInstallerView::OnExistingVmCheckCompleted(bool has_vm) { ...@@ -287,7 +288,7 @@ void PluginVmInstallerView::OnExistingVmCheckCompleted(bool has_vm) {
plugin_vm::RecordPluginVmSetupTimeHistogram(base::TimeTicks::Now() - plugin_vm::RecordPluginVmSetupTimeHistogram(base::TimeTicks::Now() -
setup_start_tick_); setup_start_tick_);
} else { } else {
state_ = State::DOWNLOADING; installing_state_ = InstallingState::kDownloadingImage;
OnStateUpdated(); OnStateUpdated();
} }
} }
...@@ -303,7 +304,7 @@ void PluginVmInstallerView::OnCancelFinished() { ...@@ -303,7 +304,7 @@ void PluginVmInstallerView::OnCancelFinished() {
void PluginVmInstallerView::OnDownloadProgressUpdated(uint64_t bytes_downloaded, void PluginVmInstallerView::OnDownloadProgressUpdated(uint64_t bytes_downloaded,
int64_t content_length) { int64_t content_length) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
DCHECK_EQ(state_, State::DOWNLOADING); DCHECK_EQ(installing_state_, InstallingState::kDownloadingImage);
download_progress_message_label_->SetText( download_progress_message_label_->SetText(
GetDownloadProgressMessage(bytes_downloaded, content_length)); GetDownloadProgressMessage(bytes_downloaded, content_length));
...@@ -313,17 +314,18 @@ void PluginVmInstallerView::OnDownloadProgressUpdated(uint64_t bytes_downloaded, ...@@ -313,17 +314,18 @@ void PluginVmInstallerView::OnDownloadProgressUpdated(uint64_t bytes_downloaded,
void PluginVmInstallerView::OnDownloadCompleted() { void PluginVmInstallerView::OnDownloadCompleted() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
DCHECK_EQ(state_, State::DOWNLOADING); DCHECK_EQ(installing_state_, InstallingState::kDownloadingImage);
state_ = State::IMPORTING; installing_state_ = InstallingState::kImporting;
OnStateUpdated(); OnStateUpdated();
} }
void PluginVmInstallerView::OnImported() { void PluginVmInstallerView::OnImported() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
DCHECK_EQ(state_, State::IMPORTING); DCHECK_EQ(installing_state_, InstallingState::kImporting);
state_ = State::IMPORTED; state_ = State::kImported;
installing_state_ = InstallingState::kInactive;
OnStateUpdated(); OnStateUpdated();
plugin_vm::RecordPluginVmSetupResultHistogram( plugin_vm::RecordPluginVmSetupResultHistogram(
...@@ -334,9 +336,10 @@ void PluginVmInstallerView::OnImported() { ...@@ -334,9 +336,10 @@ void PluginVmInstallerView::OnImported() {
void PluginVmInstallerView::OnCreated() { void PluginVmInstallerView::OnCreated() {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
DCHECK_EQ(state_, State::IMPORTING); DCHECK_EQ(installing_state_, InstallingState::kImporting);
state_ = State::CREATED; state_ = State::kCreated;
installing_state_ = InstallingState::kInactive;
OnStateUpdated(); OnStateUpdated();
plugin_vm::RecordPluginVmSetupResultHistogram( plugin_vm::RecordPluginVmSetupResultHistogram(
...@@ -349,7 +352,8 @@ void PluginVmInstallerView::OnError( ...@@ -349,7 +352,8 @@ void PluginVmInstallerView::OnError(
plugin_vm::PluginVmInstaller::FailureReason reason) { plugin_vm::PluginVmInstaller::FailureReason reason) {
DCHECK_CURRENTLY_ON(content::BrowserThread::UI); DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
state_ = State::ERROR; state_ = State::kError;
installing_state_ = InstallingState::kInactive;
reason_ = reason; reason_ = reason;
OnStateUpdated(); OnStateUpdated();
...@@ -359,22 +363,16 @@ void PluginVmInstallerView::OnError( ...@@ -359,22 +363,16 @@ void PluginVmInstallerView::OnError(
base::string16 PluginVmInstallerView::GetBigMessage() const { base::string16 PluginVmInstallerView::GetBigMessage() const {
switch (state_) { switch (state_) {
case State::CONFIRM_INSTALL: case State::kConfirmInstall:
return l10n_util::GetStringFUTF16( return l10n_util::GetStringFUTF16(
IDS_PLUGIN_VM_INSTALLER_CONFIRMATION_TITLE, app_name_); IDS_PLUGIN_VM_INSTALLER_CONFIRMATION_TITLE, app_name_);
case State::CHECKING_LICENSE: case State::kInstalling:
case State::CHECKING_DISK_SPACE:
case State::LOW_DISK_SPACE:
case State::DOWNLOADING_DLC:
case State::CHECKING_VMS:
case State::DOWNLOADING:
case State::IMPORTING:
return l10n_util::GetStringFUTF16( return l10n_util::GetStringFUTF16(
IDS_PLUGIN_VM_INSTALLER_ENVIRONMENT_SETTING_TITLE, app_name_); IDS_PLUGIN_VM_INSTALLER_ENVIRONMENT_SETTING_TITLE, app_name_);
case State::CREATED: case State::kCreated:
case State::IMPORTED: case State::kImported:
return l10n_util::GetStringUTF16(IDS_PLUGIN_VM_INSTALLER_FINISHED_TITLE); return l10n_util::GetStringUTF16(IDS_PLUGIN_VM_INSTALLER_FINISHED_TITLE);
case State::ERROR: case State::kError:
DCHECK(reason_); DCHECK(reason_);
switch (*reason_) { switch (*reason_) {
case plugin_vm::PluginVmInstaller::FailureReason::NOT_ALLOWED: case plugin_vm::PluginVmInstaller::FailureReason::NOT_ALLOWED:
...@@ -388,39 +386,45 @@ base::string16 PluginVmInstallerView::GetBigMessage() const { ...@@ -388,39 +386,45 @@ base::string16 PluginVmInstallerView::GetBigMessage() const {
base::string16 PluginVmInstallerView::GetMessage() const { base::string16 PluginVmInstallerView::GetMessage() const {
switch (state_) { switch (state_) {
case State::CONFIRM_INSTALL: case State::kConfirmInstall:
return l10n_util::GetStringFUTF16( return l10n_util::GetStringFUTF16(
IDS_PLUGIN_VM_INSTALLER_CONFIRMATION_MESSAGE, IDS_PLUGIN_VM_INSTALLER_CONFIRMATION_MESSAGE,
ui::FormatBytesWithUnits( ui::FormatBytesWithUnits(
plugin_vm::PluginVmInstaller::kRecommendedFreeDiskSpace, plugin_vm::PluginVmInstaller::kRecommendedFreeDiskSpace,
ui::DATA_UNITS_GIBIBYTE, ui::DATA_UNITS_GIBIBYTE,
/*show_units=*/true)); /*show_units=*/true));
case State::LOW_DISK_SPACE: case State::kInstalling:
return l10n_util::GetStringFUTF16( switch (installing_state_) {
IDS_PLUGIN_VM_INSTALLER_LOW_DISK_SPACE_MESSAGE, case InstallingState::kInactive:
ui::FormatBytesWithUnits( NOTREACHED();
plugin_vm::PluginVmInstaller::kRecommendedFreeDiskSpace, FALLTHROUGH;
ui::DATA_UNITS_GIBIBYTE, case InstallingState::kPausedLowDiskSpace:
/*show_units=*/true), return l10n_util::GetStringFUTF16(
app_name_); IDS_PLUGIN_VM_INSTALLER_LOW_DISK_SPACE_MESSAGE,
case State::CHECKING_LICENSE: ui::FormatBytesWithUnits(
case State::CHECKING_DISK_SPACE: plugin_vm::PluginVmInstaller::kRecommendedFreeDiskSpace,
case State::DOWNLOADING_DLC: ui::DATA_UNITS_GIBIBYTE,
case State::CHECKING_VMS: /*show_units=*/true),
return l10n_util::GetStringUTF16( app_name_);
IDS_PLUGIN_VM_INSTALLER_START_DOWNLOADING_MESSAGE); case InstallingState::kCheckingLicense:
case State::DOWNLOADING: case InstallingState::kCheckingDiskSpace:
return l10n_util::GetStringUTF16( case InstallingState::kDownloadingDlc:
IDS_PLUGIN_VM_INSTALLER_DOWNLOADING_MESSAGE); case InstallingState::kCheckingForExistingVm:
case State::IMPORTING: return l10n_util::GetStringUTF16(
return l10n_util::GetStringUTF16( IDS_PLUGIN_VM_INSTALLER_START_DOWNLOADING_MESSAGE);
IDS_PLUGIN_VM_INSTALLER_IMPORTING_MESSAGE); case InstallingState::kDownloadingImage:
case State::IMPORTED: return l10n_util::GetStringUTF16(
IDS_PLUGIN_VM_INSTALLER_DOWNLOADING_MESSAGE);
case InstallingState::kImporting:
return l10n_util::GetStringUTF16(
IDS_PLUGIN_VM_INSTALLER_IMPORTING_MESSAGE);
}
case State::kImported:
return l10n_util::GetStringFUTF16( return l10n_util::GetStringFUTF16(
IDS_PLUGIN_VM_INSTALLER_IMPORTED_MESSAGE, app_name_); IDS_PLUGIN_VM_INSTALLER_IMPORTED_MESSAGE, app_name_);
case State::CREATED: case State::kCreated:
return l10n_util::GetStringUTF16(IDS_PLUGIN_VM_INSTALLER_CREATED_MESSAGE); return l10n_util::GetStringUTF16(IDS_PLUGIN_VM_INSTALLER_CREATED_MESSAGE);
case State::ERROR: case State::kError:
using Reason = plugin_vm::PluginVmInstaller::FailureReason; using Reason = plugin_vm::PluginVmInstaller::FailureReason;
DCHECK(reason_); DCHECK(reason_);
switch (*reason_) { switch (*reason_) {
...@@ -501,19 +505,15 @@ PluginVmInstallerView::~PluginVmInstallerView() { ...@@ -501,19 +505,15 @@ PluginVmInstallerView::~PluginVmInstallerView() {
int PluginVmInstallerView::GetCurrentDialogButtons() const { int PluginVmInstallerView::GetCurrentDialogButtons() const {
switch (state_) { switch (state_) {
case State::CHECKING_LICENSE: case State::kInstalling:
case State::CHECKING_DISK_SPACE: if (installing_state_ == InstallingState::kPausedLowDiskSpace)
case State::DOWNLOADING_DLC: return ui::DIALOG_BUTTON_CANCEL | ui::DIALOG_BUTTON_OK;
case State::CHECKING_VMS:
case State::DOWNLOADING:
case State::IMPORTING:
return ui::DIALOG_BUTTON_CANCEL; return ui::DIALOG_BUTTON_CANCEL;
case State::CONFIRM_INSTALL: case State::kConfirmInstall:
case State::LOW_DISK_SPACE: case State::kImported:
case State::IMPORTED: case State::kCreated:
case State::CREATED:
return ui::DIALOG_BUTTON_CANCEL | ui::DIALOG_BUTTON_OK; return ui::DIALOG_BUTTON_CANCEL | ui::DIALOG_BUTTON_OK;
case State::ERROR: case State::kError:
DCHECK(reason_); DCHECK(reason_);
switch (*reason_) { switch (*reason_) {
case plugin_vm::PluginVmInstaller::FailureReason::NOT_ALLOWED: case plugin_vm::PluginVmInstaller::FailureReason::NOT_ALLOWED:
...@@ -527,32 +527,26 @@ int PluginVmInstallerView::GetCurrentDialogButtons() const { ...@@ -527,32 +527,26 @@ int PluginVmInstallerView::GetCurrentDialogButtons() const {
base::string16 PluginVmInstallerView::GetCurrentDialogButtonLabel( base::string16 PluginVmInstallerView::GetCurrentDialogButtonLabel(
ui::DialogButton button) const { ui::DialogButton button) const {
switch (state_) { switch (state_) {
case State::CONFIRM_INSTALL: case State::kConfirmInstall:
return l10n_util::GetStringUTF16( return l10n_util::GetStringUTF16(
button == ui::DIALOG_BUTTON_OK button == ui::DIALOG_BUTTON_OK
? IDS_PLUGIN_VM_INSTALLER_INSTALL_BUTTON ? IDS_PLUGIN_VM_INSTALLER_INSTALL_BUTTON
: IDS_APP_CANCEL); : IDS_APP_CANCEL);
case State::CHECKING_LICENSE: case State::kInstalling:
case State::CHECKING_DISK_SPACE: if (button == ui::DIALOG_BUTTON_OK) {
case State::DOWNLOADING_DLC: DCHECK_EQ(installing_state_, InstallingState::kPausedLowDiskSpace);
case State::CHECKING_VMS: return l10n_util::GetStringUTF16(
case State::DOWNLOADING: IDS_PLUGIN_VM_INSTALLER_CONTINUE_BUTTON);
case State::IMPORTING: { }
DCHECK_EQ(button, ui::DIALOG_BUTTON_CANCEL); DCHECK_EQ(button, ui::DIALOG_BUTTON_CANCEL);
return l10n_util::GetStringUTF16(IDS_APP_CANCEL); return l10n_util::GetStringUTF16(IDS_APP_CANCEL);
} case State::kCreated:
case State::CREATED: case State::kImported: {
case State::IMPORTED: {
return l10n_util::GetStringUTF16( return l10n_util::GetStringUTF16(
button == ui::DIALOG_BUTTON_OK ? IDS_PLUGIN_VM_INSTALLER_LAUNCH_BUTTON button == ui::DIALOG_BUTTON_OK ? IDS_PLUGIN_VM_INSTALLER_LAUNCH_BUTTON
: IDS_APP_CLOSE); : IDS_APP_CLOSE);
} }
case State::LOW_DISK_SPACE: case State::kError: {
return l10n_util::GetStringUTF16(
button == ui::DIALOG_BUTTON_OK
? IDS_PLUGIN_VM_INSTALLER_CONTINUE_BUTTON
: IDS_APP_CANCEL);
case State::ERROR: {
DCHECK(reason_); DCHECK(reason_);
switch (*reason_) { switch (*reason_) {
case plugin_vm::PluginVmInstaller::FailureReason::NOT_ALLOWED: case plugin_vm::PluginVmInstaller::FailureReason::NOT_ALLOWED:
...@@ -590,31 +584,29 @@ void PluginVmInstallerView::OnStateUpdated() { ...@@ -590,31 +584,29 @@ void PluginVmInstallerView::OnStateUpdated() {
} }
const bool progress_bar_visible = const bool progress_bar_visible =
state_ == State::CHECKING_LICENSE || state_ == State::kInstalling &&
state_ == State::CHECKING_DISK_SPACE || installing_state_ != InstallingState::kPausedLowDiskSpace;
state_ == State::DOWNLOADING_DLC || state_ == State::CHECKING_VMS ||
state_ == State::DOWNLOADING || state_ == State::IMPORTING;
progress_bar_->SetVisible(progress_bar_visible); progress_bar_->SetVisible(progress_bar_visible);
const bool download_progress_message_label_visible = const bool download_progress_message_label_visible =
state_ == State::DOWNLOADING; installing_state_ == InstallingState::kDownloadingImage;
download_progress_message_label_->SetVisible( download_progress_message_label_->SetVisible(
download_progress_message_label_visible); download_progress_message_label_visible);
DialogModelChanged(); DialogModelChanged();
GetWidget()->GetRootView()->Layout(); GetWidget()->GetRootView()->Layout();
if (state_ == State::CREATED || state_ == State::IMPORTED || if (state_ == State::kCreated || state_ == State::kImported ||
state_ == State::ERROR) { state_ == State::kError) {
if (finished_callback_for_testing_) if (finished_callback_for_testing_)
std::move(finished_callback_for_testing_).Run(state_ != State::ERROR); std::move(finished_callback_for_testing_).Run(state_ != State::kError);
} }
} }
base::string16 PluginVmInstallerView::GetDownloadProgressMessage( base::string16 PluginVmInstallerView::GetDownloadProgressMessage(
uint64_t bytes_downloaded, uint64_t bytes_downloaded,
int64_t content_length) const { int64_t content_length) const {
DCHECK_EQ(state_, State::DOWNLOADING); DCHECK_EQ(installing_state_, InstallingState::kDownloadingImage);
// If download size isn't known |fraction_complete| should be empty. // If download size isn't known |fraction_complete| should be empty.
if (content_length > 0) { if (content_length > 0) {
...@@ -647,7 +639,7 @@ void PluginVmInstallerView::SetMessageLabel() { ...@@ -647,7 +639,7 @@ void PluginVmInstallerView::SetMessageLabel() {
} }
void PluginVmInstallerView::SetBigImage() { void PluginVmInstallerView::SetBigImage() {
if (state_ == State::ERROR) { if (state_ == State::kError) {
big_image_->SetImage( big_image_->SetImage(
ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed( ui::ResourceBundle::GetSharedInstance().GetImageSkiaNamed(
IDR_PLUGIN_VM_INSTALLER_ERROR)); IDR_PLUGIN_VM_INSTALLER_ERROR));
...@@ -662,7 +654,8 @@ void PluginVmInstallerView::StartInstallation() { ...@@ -662,7 +654,8 @@ void PluginVmInstallerView::StartInstallation() {
// Setup always starts from this function, including retries. // Setup always starts from this function, including retries.
setup_start_tick_ = base::TimeTicks::Now(); setup_start_tick_ = base::TimeTicks::Now();
state_ = State::CHECKING_LICENSE; state_ = State::kInstalling;
installing_state_ = InstallingState::kCheckingLicense;
progress_bar_->SetValue(0); progress_bar_->SetValue(0);
OnStateUpdated(); OnStateUpdated();
......
...@@ -55,21 +55,16 @@ class PluginVmInstallerView : public views::BubbleDialogDelegateView, ...@@ -55,21 +55,16 @@ class PluginVmInstallerView : public views::BubbleDialogDelegateView,
base::OnceCallback<void(bool success)> callback); base::OnceCallback<void(bool success)> callback);
private: private:
// TODO(crbug.com/1063748): Re-use PluginVmInstaller::InstallingState.
enum class State { enum class State {
CONFIRM_INSTALL, // Waiting for user to start installation. kConfirmInstall, // Waiting for user to start installation.
CHECKING_LICENSE, // Ensuring the user license is valid. kInstalling, // Installation in progress.
CHECKING_DISK_SPACE, // Checking there is available free disk space. kCreated, // A brand new VM has been created using ISO image.
LOW_DISK_SPACE, // Prompt user to continue or abort due to low disk space. kImported, // Downloaded VM image has been imported successfully.
DOWNLOADING_DLC, // PluginVm DLC downloading and installing in progress. kError, // Something unexpected happened.
CHECKING_VMS, // Checking for existing VMs.
DOWNLOADING, // Image download (ISO or VM) is in progress.
IMPORTING, // Downloaded image is being imported.
CREATED, // A brand new VM has been created using ISO image.
IMPORTED, // Downloaded VM image has been imported successfully.
ERROR, // Something unexpected happened.
}; };
using InstallingState = plugin_vm::PluginVmInstaller::InstallingState;
~PluginVmInstallerView() override; ~PluginVmInstallerView() override;
int GetCurrentDialogButtons() const; int GetCurrentDialogButtons() const;
...@@ -97,7 +92,8 @@ class PluginVmInstallerView : public views::BubbleDialogDelegateView, ...@@ -97,7 +92,8 @@ class PluginVmInstallerView : public views::BubbleDialogDelegateView,
views::ImageView* big_image_ = nullptr; views::ImageView* big_image_ = nullptr;
base::TimeTicks setup_start_tick_; base::TimeTicks setup_start_tick_;
State state_ = State::CONFIRM_INSTALL; State state_ = State::kConfirmInstall;
InstallingState installing_state_ = InstallingState::kInactive;
base::Optional<plugin_vm::PluginVmInstaller::FailureReason> reason_; base::Optional<plugin_vm::PluginVmInstaller::FailureReason> reason_;
base::OnceCallback<void(bool success)> finished_callback_for_testing_; base::OnceCallback<void(bool success)> finished_callback_for_testing_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment