| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/extensions/shell_window_cocoa.h" | 5 #include "chrome/browser/ui/cocoa/extensions/shell_window_cocoa.h" |
| 6 | 6 |
| 7 #include "base/mac/mac_util.h" | 7 #include "base/mac/mac_util.h" |
| 8 #include "base/sys_string_conversions.h" | 8 #include "base/sys_string_conversions.h" |
| 9 #include "chrome/browser/profiles/profile.h" | 9 #include "chrome/browser/profiles/profile.h" |
| 10 #include "chrome/browser/ui/cocoa/browser_window_utils.h" | 10 #include "chrome/browser/ui/cocoa/browser_window_utils.h" |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 } | 114 } |
| 115 - (NSView*)hitTest:(NSPoint)aPoint { | 115 - (NSView*)hitTest:(NSPoint)aPoint { |
| 116 return nil; | 116 return nil; |
| 117 } | 117 } |
| 118 @end | 118 @end |
| 119 | 119 |
| 120 @interface NSView (WebContentsView) | 120 @interface NSView (WebContentsView) |
| 121 - (void)setMouseDownCanMoveWindow:(BOOL)can_move; | 121 - (void)setMouseDownCanMoveWindow:(BOOL)can_move; |
| 122 @end | 122 @end |
| 123 | 123 |
| 124 ShellWindowCocoa::ShellWindowCocoa(Profile* profile, | 124 ShellWindowCocoa::ShellWindowCocoa(ShellWindow* shell_window, |
| 125 const extensions::Extension* extension, | |
| 126 const GURL& url, | |
| 127 const ShellWindow::CreateParams& params) | 125 const ShellWindow::CreateParams& params) |
| 128 : ShellWindow(profile, extension, url), | 126 : shell_window_(shell_window), |
| 129 has_frame_(params.frame == ShellWindow::CreateParams::FRAME_CHROME), | 127 has_frame_(params.frame == ShellWindow::CreateParams::FRAME_CHROME), |
| 130 attention_request_id_(0) { | 128 attention_request_id_(0) { |
| 131 // Flip coordinates based on the primary screen. | 129 // Flip coordinates based on the primary screen. |
| 132 NSRect main_screen_rect = [[[NSScreen screens] objectAtIndex:0] frame]; | 130 NSRect main_screen_rect = [[[NSScreen screens] objectAtIndex:0] frame]; |
| 133 NSRect cocoa_bounds = NSMakeRect(params.bounds.x(), | 131 NSRect cocoa_bounds = NSMakeRect(params.bounds.x(), |
| 134 NSHeight(main_screen_rect) - params.bounds.y() - params.bounds.height(), | 132 NSHeight(main_screen_rect) - params.bounds.y() - params.bounds.height(), |
| 135 params.bounds.width(), params.bounds.height()); | 133 params.bounds.width(), params.bounds.height()); |
| 136 NSUInteger style_mask = NSTitledWindowMask | NSClosableWindowMask | | 134 NSUInteger style_mask = NSTitledWindowMask | NSClosableWindowMask | |
| 137 NSMiniaturizableWindowMask | NSResizableWindowMask | | 135 NSMiniaturizableWindowMask | NSResizableWindowMask | |
| 138 NSTexturedBackgroundWindowMask; | 136 NSTexturedBackgroundWindowMask; |
| 139 scoped_nsobject<NSWindow> window([[ShellNSWindow alloc] | 137 scoped_nsobject<NSWindow> window([[ShellNSWindow alloc] |
| 140 initWithContentRect:cocoa_bounds | 138 initWithContentRect:cocoa_bounds |
| 141 styleMask:style_mask | 139 styleMask:style_mask |
| 142 backing:NSBackingStoreBuffered | 140 backing:NSBackingStoreBuffered |
| 143 defer:NO]); | 141 defer:NO]); |
| 144 [window setTitle:base::SysUTF8ToNSString(extension->name())]; | 142 [window setTitle:base::SysUTF8ToNSString(extension()->name())]; |
| 145 gfx::Size min_size = params.minimum_size; | 143 gfx::Size min_size = params.minimum_size; |
| 146 if (min_size.width() || min_size.height()) { | 144 if (min_size.width() || min_size.height()) { |
| 147 [window setContentMinSize:NSMakeSize(min_size.width(), min_size.height())]; | 145 [window setContentMinSize:NSMakeSize(min_size.width(), min_size.height())]; |
| 148 } | 146 } |
| 149 gfx::Size max_size = params.maximum_size; | 147 gfx::Size max_size = params.maximum_size; |
| 150 if (max_size.width() || max_size.height()) { | 148 if (max_size.width() || max_size.height()) { |
| 151 CGFloat max_width = max_size.width() ? max_size.width() : CGFLOAT_MAX; | 149 CGFloat max_width = max_size.width() ? max_size.width() : CGFLOAT_MAX; |
| 152 CGFloat max_height = max_size.height() ? max_size.height() : CGFLOAT_MAX; | 150 CGFloat max_height = max_size.height() ? max_size.height() : CGFLOAT_MAX; |
| 153 [window setContentMaxSize:NSMakeSize(max_width, max_height)]; | 151 [window setContentMaxSize:NSMakeSize(max_width, max_height)]; |
| 154 } | 152 } |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 NSRect cocoa_bounds = NSMakeRect(checked_bounds.x(), 0, | 344 NSRect cocoa_bounds = NSMakeRect(checked_bounds.x(), 0, |
| 347 checked_bounds.width(), | 345 checked_bounds.width(), |
| 348 checked_bounds.height()); | 346 checked_bounds.height()); |
| 349 // Flip coordinates based on the primary screen. | 347 // Flip coordinates based on the primary screen. |
| 350 NSScreen* screen = [[NSScreen screens] objectAtIndex:0]; | 348 NSScreen* screen = [[NSScreen screens] objectAtIndex:0]; |
| 351 cocoa_bounds.origin.y = NSHeight([screen frame]) - checked_bounds.bottom(); | 349 cocoa_bounds.origin.y = NSHeight([screen frame]) - checked_bounds.bottom(); |
| 352 | 350 |
| 353 [window() setFrame:cocoa_bounds display:YES]; | 351 [window() setFrame:cocoa_bounds display:YES]; |
| 354 } | 352 } |
| 355 | 353 |
| 354 void ShellWindowCocoa::UpdateWindowTitle() { |
| 355 // TODO(jeremya): implement. |
| 356 } |
| 357 |
| 356 void ShellWindowCocoa::UpdateDraggableRegions( | 358 void ShellWindowCocoa::UpdateDraggableRegions( |
| 357 const std::vector<extensions::DraggableRegion>& regions) { | 359 const std::vector<extensions::DraggableRegion>& regions) { |
| 358 // Draggable region is not supported for non-frameless window. | 360 // Draggable region is not supported for non-frameless window. |
| 359 if (has_frame_) | 361 if (has_frame_) |
| 360 return; | 362 return; |
| 361 | 363 |
| 362 draggable_regions_ = regions; | 364 draggable_regions_ = regions; |
| 363 InstallDraggableRegionViews(); | 365 InstallDraggableRegionViews(); |
| 364 } | 366 } |
| 365 | 367 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 405 attention_request_id_ = 0; | 407 attention_request_id_ = 0; |
| 406 } | 408 } |
| 407 } | 409 } |
| 408 | 410 |
| 409 bool ShellWindowCocoa::IsAlwaysOnTop() const { | 411 bool ShellWindowCocoa::IsAlwaysOnTop() const { |
| 410 return false; | 412 return false; |
| 411 } | 413 } |
| 412 | 414 |
| 413 void ShellWindowCocoa::WindowWillClose() { | 415 void ShellWindowCocoa::WindowWillClose() { |
| 414 [window_controller_ setShellWindow:NULL]; | 416 [window_controller_ setShellWindow:NULL]; |
| 415 OnNativeClose(); | 417 shell_window_->OnNativeClose(); |
| 416 } | 418 } |
| 417 | 419 |
| 418 void ShellWindowCocoa::WindowDidBecomeKey() { | 420 void ShellWindowCocoa::WindowDidBecomeKey() { |
| 419 content::RenderWidgetHostView* rwhv = | 421 content::RenderWidgetHostView* rwhv = |
| 420 web_contents()->GetRenderWidgetHostView(); | 422 web_contents()->GetRenderWidgetHostView(); |
| 421 if (rwhv) | 423 if (rwhv) |
| 422 rwhv->SetActive(true); | 424 rwhv->SetActive(true); |
| 423 } | 425 } |
| 424 | 426 |
| 425 void ShellWindowCocoa::WindowDidResignKey() { | 427 void ShellWindowCocoa::WindowDidResignKey() { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 437 } | 439 } |
| 438 | 440 |
| 439 ShellWindowCocoa::~ShellWindowCocoa() { | 441 ShellWindowCocoa::~ShellWindowCocoa() { |
| 440 } | 442 } |
| 441 | 443 |
| 442 NSWindow* ShellWindowCocoa::window() const { | 444 NSWindow* ShellWindowCocoa::window() const { |
| 443 return [window_controller_ window]; | 445 return [window_controller_ window]; |
| 444 } | 446 } |
| 445 | 447 |
| 446 // static | 448 // static |
| 447 ShellWindow* ShellWindow::CreateImpl(Profile* profile, | 449 NativeShellWindow* NativeShellWindow::Create( |
| 448 const extensions::Extension* extension, | 450 ShellWindow* shell_window, const ShellWindow::CreateParams& params) { |
| 449 const GURL& url, | 451 return new ShellWindowCocoa(shell_window, params); |
| 450 const ShellWindow::CreateParams& params) { | |
| 451 return new ShellWindowCocoa(profile, extension, url, params); | |
| 452 } | 452 } |
| OLD | NEW |