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

Side by Side Diff: chrome/browser/ui/cocoa/extensions/shell_window_cocoa.mm

Issue 10911020: Enable commands API for platform apps. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: filter by extension type instead of specific extensions Created 8 years, 3 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 (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"
11 #import "chrome/browser/ui/cocoa/chrome_event_processing_window.h" 11 #import "chrome/browser/ui/cocoa/chrome_event_processing_window.h"
12 #include "chrome/browser/ui/cocoa/extensions/extension_keybinding_registry_cocoa .h"
12 #include "chrome/browser/ui/cocoa/extensions/extension_view_mac.h" 13 #include "chrome/browser/ui/cocoa/extensions/extension_view_mac.h"
13 #include "chrome/browser/ui/tab_contents/tab_contents.h" 14 #include "chrome/browser/ui/tab_contents/tab_contents.h"
14 #include "chrome/common/extensions/extension.h" 15 #include "chrome/common/extensions/extension.h"
15 #include "content/public/browser/native_web_keyboard_event.h" 16 #include "content/public/browser/native_web_keyboard_event.h"
16 #include "content/public/browser/render_widget_host_view.h" 17 #include "content/public/browser/render_widget_host_view.h"
17 #include "content/public/browser/web_contents.h" 18 #include "content/public/browser/web_contents.h"
18 #include "content/public/browser/web_contents_view.h" 19 #include "content/public/browser/web_contents_view.h"
19 20
20 @interface NSWindow (NSPrivateApis) 21 @interface NSWindow (NSPrivateApis)
21 - (void)setBottomCornerRounded:(BOOL)rounded; 22 - (void)setBottomCornerRounded:(BOOL)rounded;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 } 71 }
71 72
72 - (BOOL)canAttachConstrainedWindow { 73 - (BOOL)canAttachConstrainedWindow {
73 return YES; 74 return YES;
74 } 75 }
75 76
76 - (void)executeCommand:(int)command { 77 - (void)executeCommand:(int)command {
77 // No-op, swallow the event. 78 // No-op, swallow the event.
78 } 79 }
79 80
81 - (BOOL)handledByExtensionCommand:(NSEvent*)event {
82 if (shellWindow_)
83 return shellWindow_->HandledByExtensionCommand(event);
84 return NO;
85 }
86
80 @end 87 @end
81 88
82 @interface ShellNSWindow : ChromeEventProcessingWindow 89 @interface ShellNSWindow : ChromeEventProcessingWindow
83 90
84 - (void)drawCustomFrameRect:(NSRect)rect forView:(NSView*)view; 91 - (void)drawCustomFrameRect:(NSRect)rect forView:(NSView*)view;
85 92
86 @end 93 @end
87 94
88 // This is really a method on NSGrayFrame, so it should only be called on the 95 // This is really a method on NSGrayFrame, so it should only be called on the
89 // view passed into -[NSWindow drawCustomFrameRect:forView:]. 96 // view passed into -[NSWindow drawCustomFrameRect:forView:].
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 window_controller_.reset( 170 window_controller_.reset(
164 [[ShellWindowController alloc] initWithWindow:window.release()]); 171 [[ShellWindowController alloc] initWithWindow:window.release()]);
165 172
166 NSView* view = web_contents()->GetView()->GetNativeView(); 173 NSView* view = web_contents()->GetView()->GetNativeView();
167 [view setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; 174 [view setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
168 175
169 InstallView(); 176 InstallView();
170 177
171 [[window_controller_ window] setDelegate:window_controller_]; 178 [[window_controller_ window] setDelegate:window_controller_];
172 [window_controller_ setShellWindow:this]; 179 [window_controller_ setShellWindow:this];
180
181 extension_keybinding_registry_.reset(
182 new ExtensionKeybindingRegistryCocoa(shell_window_->profile(), window,
183 extensions::ExtensionKeybindingRegistry::PLATFORM_APP_ONLY));
173 } 184 }
174 185
175 void ShellWindowCocoa::InstallView() { 186 void ShellWindowCocoa::InstallView() {
176 NSView* view = web_contents()->GetView()->GetNativeView(); 187 NSView* view = web_contents()->GetView()->GetNativeView();
177 if (has_frame_) { 188 if (has_frame_) {
178 [view setFrame:[[window() contentView] bounds]]; 189 [view setFrame:[[window() contentView] bounds]];
179 [[window() contentView] addSubview:view]; 190 [[window() contentView] addSubview:view];
180 } else { 191 } else {
181 // TODO(jeremya): find a cleaner way to send this information to the 192 // TODO(jeremya): find a cleaner way to send this information to the
182 // WebContentsViewCocoa view. 193 // WebContentsViewCocoa view.
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 // lose key window status. 456 // lose key window status.
446 if ([NSApp isActive] && ([NSApp keyWindow] == window())) 457 if ([NSApp isActive] && ([NSApp keyWindow] == window()))
447 return; 458 return;
448 459
449 content::RenderWidgetHostView* rwhv = 460 content::RenderWidgetHostView* rwhv =
450 web_contents()->GetRenderWidgetHostView(); 461 web_contents()->GetRenderWidgetHostView();
451 if (rwhv) 462 if (rwhv)
452 rwhv->SetActive(false); 463 rwhv->SetActive(false);
453 } 464 }
454 465
466 bool ShellWindowCocoa::HandledByExtensionCommand(NSEvent* event) {
467 return extension_keybinding_registry_->ProcessKeyEvent(
468 content::NativeWebKeyboardEvent(event));
469 }
470
455 ShellWindowCocoa::~ShellWindowCocoa() { 471 ShellWindowCocoa::~ShellWindowCocoa() {
456 } 472 }
457 473
458 ShellNSWindow* ShellWindowCocoa::window() const { 474 ShellNSWindow* ShellWindowCocoa::window() const {
459 NSWindow* window = [window_controller_ window]; 475 NSWindow* window = [window_controller_ window];
460 CHECK(!window || [window isKindOfClass:[ShellNSWindow class]]); 476 CHECK(!window || [window isKindOfClass:[ShellNSWindow class]]);
461 return static_cast<ShellNSWindow*>(window); 477 return static_cast<ShellNSWindow*>(window);
462 } 478 }
463 479
464 // static 480 // static
465 NativeShellWindow* NativeShellWindow::Create( 481 NativeShellWindow* NativeShellWindow::Create(
466 ShellWindow* shell_window, const ShellWindow::CreateParams& params) { 482 ShellWindow* shell_window, const ShellWindow::CreateParams& params) {
467 return new ShellWindowCocoa(shell_window, params); 483 return new ShellWindowCocoa(shell_window, params);
468 } 484 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698