| 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 #import "browser_actions_controller.h" | 5 #import "browser_actions_controller.h" |
| 6 | 6 |
| 7 #include <cmath> | 7 #include <cmath> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/sys_string_conversions.h" | 10 #include "base/sys_string_conversions.h" |
| 11 #include "chrome/browser/extensions/extension_action.h" | 11 #include "chrome/browser/extensions/extension_action.h" |
| 12 #include "chrome/browser/extensions/extension_action_manager.h" | 12 #include "chrome/browser/extensions/extension_action_manager.h" |
| 13 #include "chrome/browser/extensions/extension_service.h" | 13 #include "chrome/browser/extensions/extension_service.h" |
| 14 #include "chrome/browser/extensions/extension_system.h" | 14 #include "chrome/browser/extensions/extension_system.h" |
| 15 #include "chrome/browser/extensions/extension_toolbar_model.h" | 15 #include "chrome/browser/extensions/extension_toolbar_model.h" |
| 16 #include "chrome/browser/prefs/pref_registry_syncable.h" |
| 16 #include "chrome/browser/prefs/pref_service.h" | 17 #include "chrome/browser/prefs/pref_service.h" |
| 17 #include "chrome/browser/profiles/profile.h" | 18 #include "chrome/browser/profiles/profile.h" |
| 18 #include "chrome/browser/sessions/session_tab_helper.h" | 19 #include "chrome/browser/sessions/session_tab_helper.h" |
| 19 #include "chrome/browser/ui/browser.h" | 20 #include "chrome/browser/ui/browser.h" |
| 20 #include "chrome/browser/ui/browser_window.h" | 21 #include "chrome/browser/ui/browser_window.h" |
| 21 #import "chrome/browser/ui/cocoa/extensions/browser_action_button.h" | 22 #import "chrome/browser/ui/cocoa/extensions/browser_action_button.h" |
| 22 #import "chrome/browser/ui/cocoa/extensions/browser_actions_container_view.h" | 23 #import "chrome/browser/ui/cocoa/extensions/browser_actions_container_view.h" |
| 23 #import "chrome/browser/ui/cocoa/extensions/extension_popup_controller.h" | 24 #import "chrome/browser/ui/cocoa/extensions/extension_popup_controller.h" |
| 24 #import "chrome/browser/ui/cocoa/image_button_cell.h" | 25 #import "chrome/browser/ui/cocoa/image_button_cell.h" |
| 25 #import "chrome/browser/ui/cocoa/menu_button.h" | 26 #import "chrome/browser/ui/cocoa/menu_button.h" |
| 26 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 27 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 27 #include "chrome/common/chrome_notification_types.h" | 28 #include "chrome/common/chrome_notification_types.h" |
| 28 #include "chrome/common/extensions/api/extension_action/action_info.h" | 29 #include "chrome/common/extensions/api/extension_action/action_info.h" |
| 29 #include "chrome/common/pref_names.h" | 30 #include "chrome/common/pref_names.h" |
| 31 #include "content/public/browser/notification_details.h" |
| 30 #include "content/public/browser/notification_observer.h" | 32 #include "content/public/browser/notification_observer.h" |
| 31 #include "content/public/browser/notification_registrar.h" | 33 #include "content/public/browser/notification_registrar.h" |
| 32 #include "content/public/browser/notification_details.h" | |
| 33 #include "content/public/browser/notification_source.h" | 34 #include "content/public/browser/notification_source.h" |
| 34 #include "grit/theme_resources.h" | 35 #include "grit/theme_resources.h" |
| 35 #import "third_party/GTM/AppKit/GTMNSAnimation+Duration.h" | 36 #import "third_party/GTM/AppKit/GTMNSAnimation+Duration.h" |
| 36 | 37 |
| 37 using extensions::Extension; | 38 using extensions::Extension; |
| 38 using extensions::ExtensionList; | 39 using extensions::ExtensionList; |
| 39 | 40 |
| 40 NSString* const kBrowserActionVisibilityChangedNotification = | 41 NSString* const kBrowserActionVisibilityChangedNotification = |
| 41 @"BrowserActionVisibilityChangedNotification"; | 42 @"BrowserActionVisibilityChangedNotification"; |
| 42 | 43 |
| (...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 256 #pragma mark Public Methods | 257 #pragma mark Public Methods |
| 257 | 258 |
| 258 - (id)initWithBrowser:(Browser*)browser | 259 - (id)initWithBrowser:(Browser*)browser |
| 259 containerView:(BrowserActionsContainerView*)container { | 260 containerView:(BrowserActionsContainerView*)container { |
| 260 DCHECK(browser && container); | 261 DCHECK(browser && container); |
| 261 | 262 |
| 262 if ((self = [super init])) { | 263 if ((self = [super init])) { |
| 263 browser_ = browser; | 264 browser_ = browser; |
| 264 profile_ = browser->profile(); | 265 profile_ = browser->profile(); |
| 265 | 266 |
| 267 // TODO(joi): Do all registrations up front. |
| 266 if (!profile_->GetPrefs()->FindPreference( | 268 if (!profile_->GetPrefs()->FindPreference( |
| 267 prefs::kBrowserActionContainerWidth)) | 269 prefs::kBrowserActionContainerWidth)) |
| 268 [BrowserActionsController registerUserPrefs:profile_->GetPrefs()]; | 270 [BrowserActionsController registerUserPrefs:( |
| 271 (PrefRegistrySyncable*) |
| 272 profile_->GetPrefs()->DeprecatedGetPrefRegistry())]; |
| 269 | 273 |
| 270 observer_.reset(new ExtensionServiceObserverBridge(self, browser_)); | 274 observer_.reset(new ExtensionServiceObserverBridge(self, browser_)); |
| 271 ExtensionService* extensionService = | 275 ExtensionService* extensionService = |
| 272 extensions::ExtensionSystem::Get(profile_)->extension_service(); | 276 extensions::ExtensionSystem::Get(profile_)->extension_service(); |
| 273 // |extensionService| can be NULL in Incognito. | 277 // |extensionService| can be NULL in Incognito. |
| 274 if (extensionService) { | 278 if (extensionService) { |
| 275 toolbarModel_ = extensionService->toolbar_model(); | 279 toolbarModel_ = extensionService->toolbar_model(); |
| 276 toolbarModel_->AddObserver(observer_.get()); | 280 toolbarModel_->AddObserver(observer_.get()); |
| 277 } | 281 } |
| 278 | 282 |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 433 if (effect == NSViewAnimationFadeInEffect) { | 437 if (effect == NSViewAnimationFadeInEffect) { |
| 434 return NO; | 438 return NO; |
| 435 } else if (effect == NSViewAnimationFadeOutEffect) { | 439 } else if (effect == NSViewAnimationFadeOutEffect) { |
| 436 return YES; | 440 return YES; |
| 437 } | 441 } |
| 438 | 442 |
| 439 NOTREACHED(); | 443 NOTREACHED(); |
| 440 return YES; | 444 return YES; |
| 441 } | 445 } |
| 442 | 446 |
| 443 + (void)registerUserPrefs:(PrefServiceSyncable*)prefs { | 447 + (void)registerUserPrefs:(PrefRegistrySyncable*)registry { |
| 444 prefs->RegisterDoublePref(prefs::kBrowserActionContainerWidth, | 448 registry->RegisterDoublePref(prefs::kBrowserActionContainerWidth, |
| 445 0, | 449 0, |
| 446 PrefServiceSyncable::UNSYNCABLE_PREF); | 450 PrefRegistrySyncable::UNSYNCABLE_PREF); |
| 447 } | 451 } |
| 448 | 452 |
| 449 #pragma mark - | 453 #pragma mark - |
| 450 #pragma mark NSMenuDelegate | 454 #pragma mark NSMenuDelegate |
| 451 | 455 |
| 452 - (void)menuNeedsUpdate:(NSMenu*)menu { | 456 - (void)menuNeedsUpdate:(NSMenu*)menu { |
| 453 [menu removeAllItems]; | 457 [menu removeAllItems]; |
| 454 | 458 |
| 455 // See menu_button.h for documentation on why this is needed. | 459 // See menu_button.h for documentation on why this is needed. |
| 456 [menu addItemWithTitle:@"" action:nil keyEquivalent:@""]; | 460 [menu addItemWithTitle:@"" action:nil keyEquivalent:@""]; |
| (...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 870 const extensions::ExtensionList& toolbar_items = | 874 const extensions::ExtensionList& toolbar_items = |
| 871 toolbarModel_->toolbar_items(); | 875 toolbarModel_->toolbar_items(); |
| 872 if (index < toolbar_items.size()) { | 876 if (index < toolbar_items.size()) { |
| 873 const Extension* extension = toolbar_items[index]; | 877 const Extension* extension = toolbar_items[index]; |
| 874 return [buttons_ objectForKey:base::SysUTF8ToNSString(extension->id())]; | 878 return [buttons_ objectForKey:base::SysUTF8ToNSString(extension->id())]; |
| 875 } | 879 } |
| 876 return nil; | 880 return nil; |
| 877 } | 881 } |
| 878 | 882 |
| 879 @end | 883 @end |
| OLD | NEW |