| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/wrench_menu/wrench_menu_controller.h" | 5 #import "chrome/browser/ui/cocoa/wrench_menu/wrench_menu_controller.h" |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/mac/bundle_locations.h" | 8 #include "base/mac/bundle_locations.h" |
| 9 #include "base/strings/string16.h" | 9 #include "base/strings/string16.h" |
| 10 #include "base/strings/sys_string_conversions.h" | 10 #include "base/strings/sys_string_conversions.h" |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 observer_.reset(new WrenchMenuControllerInternal::ZoomLevelObserver( | 107 observer_.reset(new WrenchMenuControllerInternal::ZoomLevelObserver( |
| 108 self, | 108 self, |
| 109 ui_zoom::ZoomEventManager::GetForBrowserContext(browser->profile()))); | 109 ui_zoom::ZoomEventManager::GetForBrowserContext(browser->profile()))); |
| 110 acceleratorDelegate_.reset( | 110 acceleratorDelegate_.reset( |
| 111 new WrenchMenuControllerInternal::AcceleratorDelegate()); | 111 new WrenchMenuControllerInternal::AcceleratorDelegate()); |
| 112 [self createModel]; | 112 [self createModel]; |
| 113 } | 113 } |
| 114 return self; | 114 return self; |
| 115 } | 115 } |
| 116 | 116 |
| 117 - (void)browserWillBeDestroyed { |
| 118 // This method indicates imminent destruction. Destroy owned objects that hold |
| 119 // a weak Browser*, or pass this call onto reference counted objects. |
| 120 recentTabsMenuModelDelegate_.reset(); |
| 121 wrenchMenuModel_.reset(); |
| 122 [self setModel:nullptr]; |
| 123 buttonViewController_.reset(); |
| 124 |
| 125 [browserActionsController_ browserWillBeDestroyed]; |
| 126 |
| 127 browser_ = nullptr; |
| 128 } |
| 129 |
| 117 - (void)addItemToMenu:(NSMenu*)menu | 130 - (void)addItemToMenu:(NSMenu*)menu |
| 118 atIndex:(NSInteger)index | 131 atIndex:(NSInteger)index |
| 119 fromModel:(ui::MenuModel*)model { | 132 fromModel:(ui::MenuModel*)model { |
| 120 // Non-button item types should be built as normal items, with the exception | 133 // Non-button item types should be built as normal items, with the exception |
| 121 // of the extensions overflow menu. | 134 // of the extensions overflow menu. |
| 122 int command_id = model->GetCommandIdAt(index); | 135 int command_id = model->GetCommandIdAt(index); |
| 123 if (model->GetTypeAt(index) != ui::MenuModel::TYPE_BUTTON_ITEM && | 136 if (model->GetTypeAt(index) != ui::MenuModel::TYPE_BUTTON_ITEM && |
| 124 command_id != IDC_EXTENSIONS_OVERFLOW_MENU) { | 137 command_id != IDC_EXTENSIONS_OVERFLOW_MENU) { |
| 125 [super addItemToMenu:menu | 138 [super addItemToMenu:menu |
| 126 atIndex:index | 139 atIndex:index |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 recentTabsMenuModelDelegate_.reset( | 334 recentTabsMenuModelDelegate_.reset( |
| 322 new RecentTabsMenuModelDelegate(model, [self recentTabsSubmenu])); | 335 new RecentTabsMenuModelDelegate(model, [self recentTabsSubmenu])); |
| 323 } | 336 } |
| 324 } | 337 } |
| 325 | 338 |
| 326 - (BrowserActionsController*)browserActionsController { | 339 - (BrowserActionsController*)browserActionsController { |
| 327 return browserActionsController_.get(); | 340 return browserActionsController_.get(); |
| 328 } | 341 } |
| 329 | 342 |
| 330 - (void)createModel { | 343 - (void)createModel { |
| 344 DCHECK(browser_); |
| 331 recentTabsMenuModelDelegate_.reset(); | 345 recentTabsMenuModelDelegate_.reset(); |
| 332 wrenchMenuModel_.reset( | 346 wrenchMenuModel_.reset( |
| 333 new WrenchMenuModel(acceleratorDelegate_.get(), browser_)); | 347 new WrenchMenuModel(acceleratorDelegate_.get(), browser_)); |
| 334 [self setModel:wrenchMenuModel_.get()]; | 348 [self setModel:wrenchMenuModel_.get()]; |
| 335 | 349 |
| 336 buttonViewController_.reset( | 350 buttonViewController_.reset( |
| 337 [[WrenchMenuButtonViewController alloc] initWithController:self]); | 351 [[WrenchMenuButtonViewController alloc] initWithController:self]); |
| 338 [buttonViewController_ view]; | 352 [buttonViewController_ view]; |
| 339 } | 353 } |
| 340 | 354 |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 462 controller_ = controller; | 476 controller_ = controller; |
| 463 } | 477 } |
| 464 return self; | 478 return self; |
| 465 } | 479 } |
| 466 | 480 |
| 467 - (IBAction)dispatchWrenchMenuCommand:(id)sender { | 481 - (IBAction)dispatchWrenchMenuCommand:(id)sender { |
| 468 [controller_ dispatchWrenchMenuCommand:sender]; | 482 [controller_ dispatchWrenchMenuCommand:sender]; |
| 469 } | 483 } |
| 470 | 484 |
| 471 @end // @implementation WrenchMenuButtonViewController | 485 @end // @implementation WrenchMenuButtonViewController |
| OLD | NEW |