Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Side by Side Diff: chrome/browser/ui/cocoa/apps/native_app_window_cocoa.mm

Issue 461303002: [Mac] Bounce app shims when app windows request attention. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update FakeHost in test. Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/cocoa/apps/native_app_window_cocoa.h" 5 #include "chrome/browser/ui/cocoa/apps/native_app_window_cocoa.h"
6 6
7 #include "apps/app_shim/extension_app_shim_handler_mac.h" 7 #include "apps/app_shim/extension_app_shim_handler_mac.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/mac/foundation_util.h" 9 #include "base/mac/foundation_util.h"
10 #include "base/mac/mac_util.h" 10 #include "base/mac/mac_util.h"
(...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 : app_window_(app_window), 330 : app_window_(app_window),
331 has_frame_(params.frame == AppWindow::FRAME_CHROME), 331 has_frame_(params.frame == AppWindow::FRAME_CHROME),
332 is_hidden_with_app_(false), 332 is_hidden_with_app_(false),
333 is_maximized_(false), 333 is_maximized_(false),
334 is_fullscreen_(false), 334 is_fullscreen_(false),
335 is_resizable_(params.resizable), 335 is_resizable_(params.resizable),
336 shows_resize_controls_(true), 336 shows_resize_controls_(true),
337 shows_fullscreen_controls_(true), 337 shows_fullscreen_controls_(true),
338 has_frame_color_(params.has_frame_color), 338 has_frame_color_(params.has_frame_color),
339 active_frame_color_(params.active_frame_color), 339 active_frame_color_(params.active_frame_color),
340 inactive_frame_color_(params.inactive_frame_color), 340 inactive_frame_color_(params.inactive_frame_color) {
341 attention_request_id_(0) {
342 Observe(WebContents()); 341 Observe(WebContents());
343 342
344 base::scoped_nsobject<NSWindow> window; 343 base::scoped_nsobject<NSWindow> window;
345 Class window_class; 344 Class window_class;
346 if (has_frame_) { 345 if (has_frame_) {
347 window_class = has_frame_color_ ? 346 window_class = has_frame_color_ ?
348 [ShellCustomFrameNSWindow class] : [ShellNSWindow class]; 347 [ShellCustomFrameNSWindow class] : [ShellNSWindow class];
349 } else { 348 } else {
350 window_class = [ShellFramelessNSWindow class]; 349 window_class = [ShellFramelessNSWindow class];
351 } 350 }
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
562 NSRect frame = [window() frame]; 561 NSRect frame = [window() frame];
563 gfx::Rect bounds(frame.origin.x, 0, NSWidth(frame), NSHeight(frame)); 562 gfx::Rect bounds(frame.origin.x, 0, NSWidth(frame), NSHeight(frame));
564 bounds.set_y(NSHeight([screen frame]) - NSMaxY(frame)); 563 bounds.set_y(NSHeight([screen frame]) - NSMaxY(frame));
565 return bounds; 564 return bounds;
566 } 565 }
567 566
568 void NativeAppWindowCocoa::Show() { 567 void NativeAppWindowCocoa::Show() {
569 if (is_hidden_with_app_) { 568 if (is_hidden_with_app_) {
570 // If there is a shim to gently request attention, return here. Otherwise 569 // If there is a shim to gently request attention, return here. Otherwise
571 // show the window as usual. 570 // show the window as usual.
572 if (apps::ExtensionAppShimHandler::RequestUserAttentionForWindow( 571 if (apps::ExtensionAppShimHandler::ActivateAndRequestUserAttentionForWindow(
573 app_window_)) { 572 app_window_)) {
574 return; 573 return;
575 } 574 }
576 } 575 }
577 576
578 [window_controller_ showWindow:nil]; 577 [window_controller_ showWindow:nil];
579 Activate(); 578 Activate();
580 } 579 }
581 580
582 void NativeAppWindowCocoa::ShowInactive() { 581 void NativeAppWindowCocoa::ShowInactive() {
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 [[ControlRegionView alloc] initWithFrame:NSZeroRect]); 720 [[ControlRegionView alloc] initWithFrame:NSZeroRect]);
722 [controlRegion setFrame:NSMakeRect(iter->x(), 721 [controlRegion setFrame:NSMakeRect(iter->x(),
723 webViewHeight - iter->bottom(), 722 webViewHeight - iter->bottom(),
724 iter->width(), 723 iter->width(),
725 iter->height())]; 724 iter->height())];
726 [webView addSubview:controlRegion]; 725 [webView addSubview:controlRegion];
727 } 726 }
728 } 727 }
729 728
730 void NativeAppWindowCocoa::FlashFrame(bool flash) { 729 void NativeAppWindowCocoa::FlashFrame(bool flash) {
731 if (flash) { 730 apps::ExtensionAppShimHandler::RequestUserAttentionForWindow(
732 attention_request_id_ = [NSApp requestUserAttention:NSInformationalRequest]; 731 app_window_,
733 } else { 732 flash ? apps::APP_SHIM_ATTENTION_CRITICAL
734 [NSApp cancelUserAttentionRequest:attention_request_id_]; 733 : apps::APP_SHIM_ATTENTION_CANCEL);
735 attention_request_id_ = 0;
736 }
737 } 734 }
738 735
739 bool NativeAppWindowCocoa::IsAlwaysOnTop() const { 736 bool NativeAppWindowCocoa::IsAlwaysOnTop() const {
740 return [window() level] == AlwaysOnTopWindowLevel(); 737 return [window() level] == AlwaysOnTopWindowLevel();
741 } 738 }
742 739
743 void NativeAppWindowCocoa::RenderViewCreated(content::RenderViewHost* rvh) { 740 void NativeAppWindowCocoa::RenderViewCreated(content::RenderViewHost* rvh) {
744 if (IsActive()) 741 if (IsActive())
745 WebContents()->RestoreFocus(); 742 WebContents()->RestoreFocus();
746 } 743 }
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
988 } 985 }
989 986
990 void NativeAppWindowCocoa::UpdateRestoredBounds() { 987 void NativeAppWindowCocoa::UpdateRestoredBounds() {
991 if (IsRestored(*this)) 988 if (IsRestored(*this))
992 restored_bounds_ = [window() frame]; 989 restored_bounds_ = [window() frame];
993 } 990 }
994 991
995 void NativeAppWindowCocoa::HideWithoutMarkingHidden() { 992 void NativeAppWindowCocoa::HideWithoutMarkingHidden() {
996 [window() orderOut:window_controller_]; 993 [window() orderOut:window_controller_];
997 } 994 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698