Index: apps/app_shim/chrome_main_app_mode_mac.mm |
diff --git a/apps/app_shim/chrome_main_app_mode_mac.mm b/apps/app_shim/chrome_main_app_mode_mac.mm |
index 8b91322a957c3b71f02ffe6b222b8054c851f420..ed07e6a5001079dd0786883b2aa705616950d7fd 100644 |
--- a/apps/app_shim/chrome_main_app_mode_mac.mm |
+++ b/apps/app_shim/chrome_main_app_mode_mac.mm |
@@ -131,6 +131,7 @@ class AppShimController : public IPC::Listener { |
// Requests user attention. |
void OnRequestUserAttention(); |
+ void OnSetUserAttention(apps::AppShimAttentionType attention_type); |
// Terminates the app shim process. |
void Close(); |
@@ -140,6 +141,7 @@ class AppShimController : public IPC::Listener { |
base::scoped_nsobject<AppShimDelegate> delegate_; |
bool launch_app_done_; |
bool ping_chrome_reply_received_; |
+ NSInteger attention_request_id_; |
DISALLOW_COPY_AND_ASSIGN(AppShimController); |
}; |
@@ -147,7 +149,8 @@ class AppShimController : public IPC::Listener { |
AppShimController::AppShimController() |
: delegate_([[AppShimDelegate alloc] init]), |
launch_app_done_(false), |
- ping_chrome_reply_received_(false) { |
+ ping_chrome_reply_received_(false), |
+ attention_request_id_(0) { |
// Since AppShimController is created before the main message loop starts, |
// NSApp will not be set, so use sharedApplication. |
[[NSApplication sharedApplication] setDelegate:delegate_]; |
@@ -282,6 +285,7 @@ bool AppShimController::OnMessageReceived(const IPC::Message& message) { |
IPC_MESSAGE_HANDLER(AppShimMsg_LaunchApp_Done, OnLaunchAppDone) |
IPC_MESSAGE_HANDLER(AppShimMsg_Hide, OnHide) |
IPC_MESSAGE_HANDLER(AppShimMsg_RequestUserAttention, OnRequestUserAttention) |
+ IPC_MESSAGE_HANDLER(AppShimMsg_SetUserAttention, OnSetUserAttention) |
IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP() |
@@ -310,7 +314,26 @@ void AppShimController::OnHide() { |
} |
void AppShimController::OnRequestUserAttention() { |
- [NSApp requestUserAttention:NSInformationalRequest]; |
+ OnSetUserAttention(apps::APP_SHIM_ATTENTION_INFORMATIONAL); |
+} |
+ |
+void AppShimController::OnSetUserAttention( |
+ apps::AppShimAttentionType attention_type) { |
+ switch (attention_type) { |
+ case apps::APP_SHIM_ATTENTION_CANCEL: |
+ [NSApp cancelUserAttentionRequest:attention_request_id_]; |
+ attention_request_id_ = 0; |
+ break; |
+ case apps::APP_SHIM_ATTENTION_CRITICAL: |
+ attention_request_id_ = [NSApp requestUserAttention:NSCriticalRequest]; |
+ break; |
+ case apps::APP_SHIM_ATTENTION_INFORMATIONAL: |
+ attention_request_id_ = |
+ [NSApp requestUserAttention:NSInformationalRequest]; |
+ break; |
+ case apps::APP_SHIM_ATTENTION_NUM_TYPES: |
+ NOTREACHED(); |
+ } |
} |
void AppShimController::Close() { |