| 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)dealloc { |
| 118 [self browserWillBeDestroyed]; |
| 119 [super dealloc]; |
| 120 } |
| 121 |
| 122 - (void)browserWillBeDestroyed { |
| 123 // This method indicates imminent destruction. Destroy owned objects that hold |
| 124 // a weak Browser*, or pass this call onto reference counted objects. |
| 125 recentTabsMenuModelDelegate_.reset(); |
| 126 [self setModel:nullptr]; |
| 127 wrenchMenuModel_.reset(); |
| 128 buttonViewController_.reset(); |
| 129 |
| 130 [browserActionsController_ browserWillBeDestroyed]; |
| 131 |
| 132 browser_ = nullptr; |
| 133 } |
| 134 |
| 117 - (void)addItemToMenu:(NSMenu*)menu | 135 - (void)addItemToMenu:(NSMenu*)menu |
| 118 atIndex:(NSInteger)index | 136 atIndex:(NSInteger)index |
| 119 fromModel:(ui::MenuModel*)model { | 137 fromModel:(ui::MenuModel*)model { |
| 120 // Non-button item types should be built as normal items, with the exception | 138 // Non-button item types should be built as normal items, with the exception |
| 121 // of the extensions overflow menu. | 139 // of the extensions overflow menu. |
| 122 int command_id = model->GetCommandIdAt(index); | 140 int command_id = model->GetCommandIdAt(index); |
| 123 if (model->GetTypeAt(index) != ui::MenuModel::TYPE_BUTTON_ITEM && | 141 if (model->GetTypeAt(index) != ui::MenuModel::TYPE_BUTTON_ITEM && |
| 124 command_id != IDC_EXTENSIONS_OVERFLOW_MENU) { | 142 command_id != IDC_EXTENSIONS_OVERFLOW_MENU) { |
| 125 [super addItemToMenu:menu | 143 [super addItemToMenu:menu |
| 126 atIndex:index | 144 atIndex:index |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 recentTabsMenuModelDelegate_.reset( | 339 recentTabsMenuModelDelegate_.reset( |
| 322 new RecentTabsMenuModelDelegate(model, [self recentTabsSubmenu])); | 340 new RecentTabsMenuModelDelegate(model, [self recentTabsSubmenu])); |
| 323 } | 341 } |
| 324 } | 342 } |
| 325 | 343 |
| 326 - (BrowserActionsController*)browserActionsController { | 344 - (BrowserActionsController*)browserActionsController { |
| 327 return browserActionsController_.get(); | 345 return browserActionsController_.get(); |
| 328 } | 346 } |
| 329 | 347 |
| 330 - (void)createModel { | 348 - (void)createModel { |
| 349 DCHECK(browser_); |
| 331 recentTabsMenuModelDelegate_.reset(); | 350 recentTabsMenuModelDelegate_.reset(); |
| 332 wrenchMenuModel_.reset( | 351 wrenchMenuModel_.reset( |
| 333 new WrenchMenuModel(acceleratorDelegate_.get(), browser_)); | 352 new WrenchMenuModel(acceleratorDelegate_.get(), browser_)); |
| 334 [self setModel:wrenchMenuModel_.get()]; | 353 [self setModel:wrenchMenuModel_.get()]; |
| 335 | 354 |
| 336 buttonViewController_.reset( | 355 buttonViewController_.reset( |
| 337 [[WrenchMenuButtonViewController alloc] initWithController:self]); | 356 [[WrenchMenuButtonViewController alloc] initWithController:self]); |
| 338 [buttonViewController_ view]; | 357 [buttonViewController_ view]; |
| 339 } | 358 } |
| 340 | 359 |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 462 controller_ = controller; | 481 controller_ = controller; |
| 463 } | 482 } |
| 464 return self; | 483 return self; |
| 465 } | 484 } |
| 466 | 485 |
| 467 - (IBAction)dispatchWrenchMenuCommand:(id)sender { | 486 - (IBAction)dispatchWrenchMenuCommand:(id)sender { |
| 468 [controller_ dispatchWrenchMenuCommand:sender]; | 487 [controller_ dispatchWrenchMenuCommand:sender]; |
| 469 } | 488 } |
| 470 | 489 |
| 471 @end // @implementation WrenchMenuButtonViewController | 490 @end // @implementation WrenchMenuButtonViewController |
| OLD | NEW |