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(); |
} |