1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef CHROME_BROWSER_UI_COCOA_APPS_APP_SHIM_MENU_CONTROLLER_MAC_H_ 6#define CHROME_BROWSER_UI_COCOA_APPS_APP_SHIM_MENU_CONTROLLER_MAC_H_ 7 8#import <Cocoa/Cocoa.h> 9 10#include "base/mac/scoped_nsobject.h" 11 12@class DoppelgangerMenuItem; 13 14// This controller listens to NSWindowDidBecomeMainNotification and 15// NSWindowDidResignMainNotification and modifies the main menu bar to mimic a 16// main menu for the app. When an app window becomes main, all Chrome menu items 17// are hidden and menu items for the app are appended to the main menu. When the 18// app window resigns main, its menu items are removed and all Chrome menu items 19// are unhidden. 20@interface AppShimMenuController : NSObject { 21 @private 22 // The extension id of the currently focused packaged app. 23 base::scoped_nsobject<NSString> appId_; 24 // Items that need a doppelganger. 25 base::scoped_nsobject<DoppelgangerMenuItem> aboutDoppelganger_; 26 base::scoped_nsobject<DoppelgangerMenuItem> hideDoppelganger_; 27 base::scoped_nsobject<DoppelgangerMenuItem> quitDoppelganger_; 28 base::scoped_nsobject<DoppelgangerMenuItem> newDoppelganger_; 29 base::scoped_nsobject<DoppelgangerMenuItem> openDoppelganger_; 30 base::scoped_nsobject<DoppelgangerMenuItem> allToFrontDoppelganger_; 31 // Menu items for the currently focused packaged app. 32 base::scoped_nsobject<NSMenuItem> appMenuItem_; 33 base::scoped_nsobject<NSMenuItem> fileMenuItem_; 34 base::scoped_nsobject<NSMenuItem> editMenuItem_; 35 base::scoped_nsobject<NSMenuItem> windowMenuItem_; 36} 37 38@end 39 40#endif // CHROME_BROWSER_UI_COCOA_APPS_APP_SHIM_MENU_CONTROLLER_MAC_H_ 41