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

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

Issue 363233002: Abstract base 'ExtensionView' to Fix DEPS violation in extension_view_host.h (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase for r281699 (unused hwnd_util.h) Created 6 years, 5 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 #import "chrome/browser/ui/cocoa/extensions/extension_popup_controller.h" 5 #import "chrome/browser/ui/cocoa/extensions/extension_popup_controller.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/callback.h" 9 #include "base/callback.h"
10 #include "chrome/browser/chrome_notification_types.h" 10 #include "chrome/browser/chrome_notification_types.h"
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 devMode:(BOOL)devMode; 53 devMode:(BOOL)devMode;
54 54
55 // Called when the extension's hosted NSView has been resized. 55 // Called when the extension's hosted NSView has been resized.
56 - (void)extensionViewFrameChanged; 56 - (void)extensionViewFrameChanged;
57 57
58 // Called when the extension's size changes. 58 // Called when the extension's size changes.
59 - (void)onSizeChanged:(NSSize)newSize; 59 - (void)onSizeChanged:(NSSize)newSize;
60 60
61 // Called when the extension view is shown. 61 // Called when the extension view is shown.
62 - (void)onViewDidShow; 62 - (void)onViewDidShow;
63
64 // Called when the window moves or resizes. Notifies the extension.
65 - (void)onWindowChanged;
66
63 @end 67 @end
64 68
65 class ExtensionPopupContainer : public ExtensionViewMac::Container { 69 class ExtensionPopupContainer : public ExtensionViewMac::Container {
66 public: 70 public:
67 explicit ExtensionPopupContainer(ExtensionPopupController* controller) 71 explicit ExtensionPopupContainer(ExtensionPopupController* controller)
68 : controller_(controller) { 72 : controller_(controller) {
69 } 73 }
70 74
71 virtual void OnExtensionSizeChanged( 75 virtual void OnExtensionSizeChanged(
72 ExtensionViewMac* view, 76 ExtensionViewMac* view,
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 if ((self = [super initWithWindow:window 168 if ((self = [super initWithWindow:window
165 parentWindow:parentWindow 169 parentWindow:parentWindow
166 anchoredAt:anchoredAt])) { 170 anchoredAt:anchoredAt])) {
167 host_.reset(host); 171 host_.reset(host);
168 beingInspected_ = devMode; 172 beingInspected_ = devMode;
169 ignoreWindowDidResignKey_ = NO; 173 ignoreWindowDidResignKey_ = NO;
170 174
171 InfoBubbleView* view = self.bubble; 175 InfoBubbleView* view = self.bubble;
172 [view setArrowLocation:arrowLocation]; 176 [view setArrowLocation:arrowLocation];
173 177
174 extensionView_ = host->view()->native_view(); 178 extensionView_ = host->view()->GetNativeView();
175 container_.reset(new ExtensionPopupContainer(self)); 179 container_.reset(new ExtensionPopupContainer(self));
176 host->view()->set_container(container_.get()); 180 static_cast<ExtensionViewMac*>(host->view())
181 ->set_container(container_.get());
177 182
178 NSNotificationCenter* center = [NSNotificationCenter defaultCenter]; 183 NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
179 [center addObserver:self 184 [center addObserver:self
180 selector:@selector(extensionViewFrameChanged) 185 selector:@selector(extensionViewFrameChanged)
181 name:NSViewFrameDidChangeNotification 186 name:NSViewFrameDidChangeNotification
182 object:extensionView_]; 187 object:extensionView_];
183 188
184 [view addSubview:extensionView_]; 189 [view addSubview:extensionView_];
185 190
186 notificationBridge_.reset(new DevtoolsNotificationBridge(self)); 191 notificationBridge_.reset(new DevtoolsNotificationBridge(self));
(...skipping 30 matching lines...) Expand all
217 } 222 }
218 } 223 }
219 [super close]; 224 [super close];
220 } 225 }
221 226
222 - (void)windowWillClose:(NSNotification *)notification { 227 - (void)windowWillClose:(NSNotification *)notification {
223 [super windowWillClose:notification]; 228 [super windowWillClose:notification];
224 if (gPopup == self) 229 if (gPopup == self)
225 gPopup = nil; 230 gPopup = nil;
226 if (host_->view()) 231 if (host_->view())
227 host_->view()->set_container(NULL); 232 static_cast<ExtensionViewMac*>(host_->view())->set_container(NULL);
228 host_.reset(); 233 host_.reset();
229 } 234 }
230 235
231 - (void)windowDidResignKey:(NSNotification*)notification { 236 - (void)windowDidResignKey:(NSNotification*)notification {
232 // |windowWillClose:| could have already been called. http://crbug.com/279505 237 // |windowWillClose:| could have already been called. http://crbug.com/279505
233 if (host_) { 238 if (host_) {
234 // When a modal dialog is opened on top of the popup and when it's closed, 239 // When a modal dialog is opened on top of the popup and when it's closed,
235 // it steals key-ness from the popup. Don't close the popup when this 240 // it steals key-ness from the popup. Don't close the popup when this
236 // happens. There's an extra windowDidResignKey: notification after the 241 // happens. There's an extra windowDidResignKey: notification after the
237 // modal dialog closes that should also be ignored. 242 // modal dialog closes that should also be ignored.
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 frame.size = [extensionView_ convertSize:frame.size fromView:nil]; 395 frame.size = [extensionView_ convertSize:frame.size fromView:nil];
391 396
392 [extensionView_ setFrame:frame]; 397 [extensionView_ setFrame:frame];
393 [extensionView_ setNeedsDisplay:YES]; 398 [extensionView_ setNeedsDisplay:YES];
394 } 399 }
395 400
396 - (void)onViewDidShow { 401 - (void)onViewDidShow {
397 [self onSizeChanged:pendingSize_]; 402 [self onSizeChanged:pendingSize_];
398 } 403 }
399 404
405 - (void)onWindowChanged {
406 ExtensionViewMac* extensionView =
407 static_cast<ExtensionViewMac*>(host_->view());
408 // Let the extension view know, so that it can tell plugins.
409 if (extensionView)
410 extensionView->WindowFrameChanged();
411 }
412
400 - (void)windowDidResize:(NSNotification*)notification { 413 - (void)windowDidResize:(NSNotification*)notification {
401 // Let the extension view know, so that it can tell plugins. 414 [self onWindowChanged];
402 if (host_->view())
403 host_->view()->WindowFrameChanged();
404 } 415 }
405 416
406 - (void)windowDidMove:(NSNotification*)notification { 417 - (void)windowDidMove:(NSNotification*)notification {
407 // Let the extension view know, so that it can tell plugins. 418 [self onWindowChanged];
408 if (host_->view())
409 host_->view()->WindowFrameChanged();
410 } 419 }
411 420
412 // Private (TestingAPI) 421 // Private (TestingAPI)
413 - (NSView*)view { 422 - (NSView*)view {
414 return extensionView_; 423 return extensionView_;
415 } 424 }
416 425
417 // Private (TestingAPI) 426 // Private (TestingAPI)
418 + (NSSize)minPopupSize { 427 + (NSSize)minPopupSize {
419 NSSize minSize = {ExtensionViewMac::kMinWidth, ExtensionViewMac::kMinHeight}; 428 NSSize minSize = {ExtensionViewMac::kMinWidth, ExtensionViewMac::kMinHeight};
420 return minSize; 429 return minSize;
421 } 430 }
422 431
423 // Private (TestingAPI) 432 // Private (TestingAPI)
424 + (NSSize)maxPopupSize { 433 + (NSSize)maxPopupSize {
425 NSSize maxSize = {ExtensionViewMac::kMaxWidth, ExtensionViewMac::kMaxHeight}; 434 NSSize maxSize = {ExtensionViewMac::kMaxWidth, ExtensionViewMac::kMaxHeight};
426 return maxSize; 435 return maxSize;
427 } 436 }
428 437
429 @end 438 @end
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698