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

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

Issue 2543703002: [Mac] Switch from NSObject categories to forward declarations for Touch Bar support. (Closed)
Patch Set: Created 4 years 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..52280c23ef0bdd6ab2400edf89bc0003b5f0d78a 100644
--- a/ui/base/cocoa/touch_bar_forward_declarations.h
+++ b/ui/base/cocoa/touch_bar_forward_declarations.h
@@ -11,38 +11,88 @@
#if !defined(MAC_OS_X_VERSION_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].
+#pragma clang assume_nonnull begin
tapted 2016/11/30 23:29:27 I think this is OK since we're replicating a syste
-// 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;
+
+@interface NSTouchBar : NSObject<NSCoding>
+
+- (instancetype)init NS_DESIGNATED_INITIALIZER;
tapted 2016/11/30 23:29:27 Internet suggests NS_DESIGNATED_INITIALIZER is XCo
+- (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:
tapted 2016/11/30 23:29:27 I think __kindof is Xcode 7 (10.11 SDK). But hopef
+ (NSTouchBarItemIdentifier)identifier;
+
+@property(readonly, getter=isVisible) BOOL visible;
-@protocol NSTouchBarDelegate<NSObject>
@end
-@interface NSObject (FakeNSCustomTouchBarItem)
-@property(readwrite, strong) NSView* view;
+@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)
+@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;
+@interface NSCustomTouchBarItem : NSTouchBarItem
+
+@property(readwrite, strong) __kindof NSView* view;
+@property(readwrite, strong, nullable)
+ __kindof NSViewController* viewController;
+@property(readwrite, copy, null_resettable) NSString* customizationLabel;
+
@end
+@protocol NSTouchBarDelegate<NSObject>
+
+@optional
+- (nullable NSTouchBarItem*)touchBar:(NSTouchBar*)touchBar
+ makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier;
+@end
+
+#pragma clang assume_nonnull end
+
#elif MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12_1
// When compiling against the 10.12.1 SDK or later, just provide forward
« 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