| Index: chrome/browser/ui/cocoa/intents/web_intent_picker_view_controller.mm
|
| diff --git a/chrome/browser/ui/cocoa/intents/web_intent_picker_view_controller.mm b/chrome/browser/ui/cocoa/intents/web_intent_picker_view_controller.mm
|
| index 3bf7cde12ec312eb1e5eb4ce0bef684d440d8b94..083385d65441be9cc9d8fd714b0be9a60b676f75 100644
|
| --- a/chrome/browser/ui/cocoa/intents/web_intent_picker_view_controller.mm
|
| +++ b/chrome/browser/ui/cocoa/intents/web_intent_picker_view_controller.mm
|
| @@ -10,6 +10,7 @@
|
| #import "chrome/browser/ui/cocoa/hover_close_button.h"
|
| #import "chrome/browser/ui/cocoa/intents/web_intent_picker_cocoa2.h"
|
| #import "chrome/browser/ui/cocoa/intents/web_intent_view_controller_message.h"
|
| +#import "chrome/browser/ui/cocoa/intents/web_intent_view_controller_progress.h"
|
| #import "chrome/browser/ui/cocoa/key_equivalent_constants.h"
|
| #include "chrome/browser/ui/constrained_window.h"
|
| #include "chrome/browser/ui/intents/web_intent_picker_delegate.h"
|
| @@ -22,6 +23,10 @@
|
| namespace {
|
|
|
| WebIntentPickerState GetPickerState(const WebIntentPickerModel& model) {
|
| + if (!model.pending_install_extension_id().empty())
|
| + return PICKER_STATE_INSTALLING_EXTENSION;
|
| + if (model.IsWaitingForSuggestions())
|
| + return PICKER_STATE_WAITING;
|
| return PICKER_STATE_NO_SERVICE;
|
| }
|
|
|
| @@ -36,7 +41,9 @@ WebIntentPickerState GetPickerState(const WebIntentPickerModel& model) {
|
| - (WebIntentViewController*)currentViewController;
|
|
|
| // Update the varous views.
|
| +- (void)updateWaiting;
|
| - (void)updateNoService;
|
| +- (void)updateInstallingExtension;
|
|
|
| - (void)onCloseButton:(id)sender;
|
| - (void)cancelOperation:(id)sender;
|
| @@ -61,6 +68,8 @@ WebIntentPickerState GetPickerState(const WebIntentPickerModel& model) {
|
|
|
| messageViewController_.reset(
|
| [[WebIntentViewControllerMessage alloc] init]);
|
| + progressViewController_.reset(
|
| + [[WebIntentViewControllerProgress alloc] init]);
|
| }
|
| return self;
|
| }
|
| @@ -73,6 +82,10 @@ WebIntentPickerState GetPickerState(const WebIntentPickerModel& model) {
|
| return messageViewController_;
|
| }
|
|
|
| +- (WebIntentViewControllerProgress*)progressViewController {
|
| + return progressViewController_;
|
| +}
|
| +
|
| - (void)update {
|
| WebIntentPickerState newState = GetPickerState(*picker_->model());
|
| if (state_ != newState || ![[[self currentViewController] view] superview]) {
|
| @@ -86,9 +99,15 @@ WebIntentPickerState GetPickerState(const WebIntentPickerModel& model) {
|
| }
|
|
|
| switch (state_) {
|
| + case PICKER_STATE_WAITING:
|
| + [self updateWaiting];
|
| + break;
|
| case PICKER_STATE_NO_SERVICE:
|
| [self updateNoService];
|
| break;
|
| + case PICKER_STATE_INSTALLING_EXTENSION:
|
| + [self updateInstallingExtension];
|
| + break;
|
| }
|
|
|
| [self performLayout];
|
| @@ -131,13 +150,24 @@ WebIntentPickerState GetPickerState(const WebIntentPickerModel& model) {
|
|
|
| - (WebIntentViewController*)currentViewController {
|
| switch (state_) {
|
| + case PICKER_STATE_WAITING:
|
| + return progressViewController_;
|
| case PICKER_STATE_NO_SERVICE:
|
| return messageViewController_;
|
| + case PICKER_STATE_INSTALLING_EXTENSION:
|
| + return progressViewController_;
|
| }
|
| NOTREACHED();
|
| return nil;
|
| }
|
|
|
| +- (void)updateWaiting {
|
| + NSString* message = l10n_util::GetNSStringWithFixup(
|
| + IDS_INTENT_PICKER_WAIT_FOR_CWS);
|
| + [progressViewController_ setMessage:message];
|
| + [progressViewController_ setPercentDone:-1];
|
| +}
|
| +
|
| - (void)updateNoService {
|
| [messageViewController_ setTitle:l10n_util::GetNSStringWithFixup(
|
| IDS_INTENT_PICKER_NO_SERVICES_TITLE)];
|
| @@ -145,6 +175,21 @@ WebIntentPickerState GetPickerState(const WebIntentPickerModel& model) {
|
| IDS_INTENT_PICKER_NO_SERVICES)];
|
| }
|
|
|
| +- (void)updateInstallingExtension {
|
| + WebIntentPickerModel* model = picker_->model();
|
| + const WebIntentPickerModel::SuggestedExtension* extension =
|
| + model->GetSuggestedExtensionWithId(
|
| + model->pending_install_extension_id());
|
| + if (!extension)
|
| + return;
|
| + [progressViewController_ setTitle:
|
| + base::SysUTF16ToNSString(extension->title)];
|
| + [progressViewController_ setMessage:
|
| + base::SysUTF16ToNSString(model->pending_install_status_string())];
|
| + [progressViewController_ setPercentDone:
|
| + model->pending_install_download_percent()];
|
| +}
|
| +
|
| - (void)onCloseButton:(id)sender {
|
| picker_->delegate()->OnUserCancelledPickerDialog();
|
| }
|
|
|