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

Unified Diff: ui/base/cocoa/touch_bar_forward_declarations.h

Issue 2519563002: [Mac] Switch from NSObject categories to forward declarations for Touch Bar support. (Closed)
Patch Set: Tweak comment, change `retain` back to `strong` in interfaces from Apple headers. Created 4 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | ui/views/cocoa/bridged_content_view_touch_bar.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/base/cocoa/touch_bar_forward_declarations.h
diff --git a/ui/base/cocoa/touch_bar_forward_declarations.h b/ui/base/cocoa/touch_bar_forward_declarations.h
index 54c68ae534ba473664f61d8cdc69de1982752224..5fd9b962ac5f08c931c7c35b37142e2851bc86d3 100644
--- a/ui/base/cocoa/touch_bar_forward_declarations.h
+++ b/ui/base/cocoa/touch_bar_forward_declarations.h
@@ -5,54 +5,101 @@
#ifndef UI_BASE_COCOA_TOUCH_BAR_FORWARD_DECLARATIONS_H_
#define UI_BASE_COCOA_TOUCH_BAR_FORWARD_DECLARATIONS_H_
-// Once Chrome no longer supports OSX 10.12.0, this file can be deleted.
+// Once Chrome is built with the 10.12.1 SDK, the NSTouchBar… classes can be
+// referred to normally (instead of with NSClassFromString(@"…")), and this
+// file can be deleted.
#import <Foundation/Foundation.h>
#if !defined(MAC_OS_X_VERSION_10_12_1)
+#define __NSi_10_12_1 introduced = 10.12.1
-// The TouchBar classes do not exist at all without the 10.12.1 SDK. When
-// compiling with older SDKs, pretend they are NSObject and add categories to
-// NSObject to expose the methods.
-// To alloc one of these classes, use -[NSClassFromString(@"..") alloc].
+NS_ASSUME_NONNULL_BEGIN
-// Incomplete. Add more as necessary.
+@class NSTouchBar, NSTouchBarItem;
+@protocol NSTouchBarDelegate;
+
+typedef float NSTouchBarItemPriority;
+static const NSTouchBarItemPriority NSTouchBarItemPriorityHigh = 1000;
+static const NSTouchBarItemPriority NSTouchBarItemPriorityNormal = 0;
+static const NSTouchBarItemPriority NSTouchBarItemPriorityLow = -1000;
-typedef NSObject NSCustomTouchBarItem;
-typedef NSObject NSGroupTouchBarItem;
-typedef NSObject NSTouchBar;
-typedef NSObject NSTouchBarItem;
typedef NSString* NSTouchBarItemIdentifier;
+typedef NSString* NSTouchBarCustomizationIdentifier;
+
+NS_CLASS_AVAILABLE_MAC(10_12_1)
+@interface NSTouchBar : NSObject<NSCoding>
+
+- (instancetype)init NS_DESIGNATED_INITIALIZER;
+- (nullable instancetype)initWithCoder:(NSCoder*)aDecoder
+ NS_DESIGNATED_INITIALIZER;
+
+@property(copy, nullable)
+ NSTouchBarCustomizationIdentifier customizationIdentifier;
+@property(copy) NSArray* customizationAllowedItemIdentifiers;
+@property(copy) NSArray* customizationRequiredItemIdentifiers;
+@property(copy) NSArray* defaultItemIdentifiers;
+@property(copy, readonly) NSArray* itemIdentifiers;
+@property(copy, nullable) NSTouchBarItemIdentifier principalItemIdentifier;
+@property(copy) NSSet* templateItems;
+@property(nullable, weak) id<NSTouchBarDelegate> delegate;
+
+- (nullable __kindof NSTouchBarItem*)itemForIdentifier:
+ (NSTouchBarItemIdentifier)identifier;
+
+@property(readonly, getter=isVisible) BOOL visible;
-@protocol NSTouchBarDelegate<NSObject>
@end
-@interface NSObject (FakeNSCustomTouchBarItem)
-@property(readwrite, strong) NSView* view;
+NS_CLASS_AVAILABLE_MAC(10_12_1)
+@interface NSTouchBarItem : NSObject<NSCoding>
+
+- (instancetype)initWithIdentifier:(NSTouchBarItemIdentifier)identifier
+ NS_DESIGNATED_INITIALIZER;
+- (nullable instancetype)initWithCoder:(NSCoder*)coder
+ NS_DESIGNATED_INITIALIZER;
+- (instancetype)init NS_UNAVAILABLE;
+
+@property(readonly, copy) NSTouchBarItemIdentifier identifier;
+@property NSTouchBarItemPriority visibilityPriority;
+@property(readonly, nullable) NSView* view;
+@property(readonly, nullable) NSViewController* viewController;
+@property(readonly, copy) NSString* customizationLabel;
+@property(readonly, getter=isVisible) BOOL visible;
+
@end
-@interface NSObject (FakeNSGroupTouchBarItem)
+NS_CLASS_AVAILABLE_MAC(10_12_1)
+@interface NSGroupTouchBarItem : NSTouchBarItem
+
+ (NSGroupTouchBarItem*)groupItemWithIdentifier:
(NSTouchBarItemIdentifier)identifier
items:(NSArray*)items;
+
+@property(strong) NSTouchBar* groupTouchBar;
+@property(readwrite, copy, null_resettable) NSString* customizationLabel;
+
@end
-@interface NSObject (FakeNSTouchBar)
-@property(copy) NSArray* defaultItemIdentifiers;
-@property(copy) NSTouchBarItemIdentifier principalItemIdentifier;
-@property(weak) id<NSTouchBarDelegate> delegate;
+NS_CLASS_AVAILABLE_MAC(10_12_1)
+@interface NSCustomTouchBarItem : NSTouchBarItem
+
+@property(readwrite, strong) __kindof NSView* view;
+@property(readwrite, strong, nullable)
+ __kindof NSViewController* viewController;
+@property(readwrite, copy, null_resettable) NSString* customizationLabel;
+
@end
-#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12_1
+@protocol NSTouchBarDelegate<NSObject>
-// When compiling against the 10.12.1 SDK or later, just provide forward
-// declarations to suppress the partial availability warnings.
+@optional
+- (nullable NSTouchBarItem*)touchBar:(NSTouchBar*)touchBar
+ makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier
+ NS_AVAILABLE_MAC(10_12_1);
+@end
-@class NSCustomTouchBarItem;
-@class NSGroupTouchBarItem;
-@class NSTouchBar;
-@protocol NSTouchBarDelegate;
-@class NSTouchBarItem;
+NS_ASSUME_NONNULL_END
#endif // MAC_OS_X_VERSION_10_12_1
« no previous file with comments | « no previous file | ui/views/cocoa/bridged_content_view_touch_bar.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698