// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // This file contains forward declarations for items in later SDKs than the // default one with which Chromium is built (currently 10.10). // If you call any function from this header, be sure to check at runtime for // respondsToSelector: before calling these functions (else your code will crash // on older OS X versions that chrome still supports). #ifndef BASE_MAC_SDK_FORWARD_DECLARATIONS_H_ #define BASE_MAC_SDK_FORWARD_DECLARATIONS_H_ #import #import #import #import #import #import #include #include "base/base_export.h" #include "base/mac/availability.h" // ---------------------------------------------------------------------------- // Define typedefs, enums, and protocols not available in the version of the // OSX SDK being compiled against. // ---------------------------------------------------------------------------- #if !defined(MAC_OS_X_VERSION_10_11) || \ MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_11 enum { NSPressureBehaviorUnknown = -1, NSPressureBehaviorPrimaryDefault = 0, NSPressureBehaviorPrimaryClick = 1, NSPressureBehaviorPrimaryGeneric = 2, NSPressureBehaviorPrimaryAccelerator = 3, NSPressureBehaviorPrimaryDeepClick = 5, NSPressureBehaviorPrimaryDeepDrag = 6 }; typedef NSInteger NSPressureBehavior; @interface NSPressureConfiguration : NSObject - (instancetype)initWithPressureBehavior:(NSPressureBehavior)pressureBehavior; @end enum { NSSpringLoadingHighlightNone = 0, NSSpringLoadingHighlightStandard, NSSpringLoadingHighlightEmphasized }; typedef NSUInteger NSSpringLoadingHighlight; #endif // MAC_OS_X_VERSION_10_11 #if !defined(MAC_OS_X_VERSION_10_12) || \ MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12 // The protocol was formalized by the 10.12 SDK, but it was informally used // before. @protocol CAAnimationDelegate - (void)animationDidStart:(CAAnimation*)animation; - (void)animationDidStop:(CAAnimation*)animation finished:(BOOL)finished; @end @protocol CALayerDelegate @end #endif // MAC_OS_X_VERSION_10_12 // ---------------------------------------------------------------------------- // Define NSStrings only available in newer versions of the OSX SDK to force // them to be statically linked. // ---------------------------------------------------------------------------- extern "C" { #if !defined(MAC_OS_X_VERSION_10_10) || \ MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10 BASE_EXPORT extern NSString* const CIDetectorTypeQRCode; BASE_EXPORT extern NSString* const NSUserActivityTypeBrowsingWeb; BASE_EXPORT extern NSString* const NSAppearanceNameVibrantDark; BASE_EXPORT extern NSString* const NSAppearanceNameVibrantLight; #endif // MAC_OS_X_VERSION_10_10 } // extern "C" // ---------------------------------------------------------------------------- // If compiling against an older version of the OSX SDK, declare classes and // functions that are available in newer versions of the OSX SDK. If compiling // against a newer version of the OSX SDK, redeclare those same classes and // functions to suppress -Wpartial-availability warnings. // ---------------------------------------------------------------------------- // Once Chrome no longer supports OSX 10.9, everything within this preprocessor // block can be removed. #if !defined(MAC_OS_X_VERSION_10_10) || \ MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10 @interface NSUserActivity (YosemiteSDK) @property(readonly, copy) NSString* activityType; @property(copy) NSDictionary* userInfo; @property(copy) NSURL* webpageURL; @property(copy) NSString* title; - (instancetype)initWithActivityType:(NSString*)activityType; - (void)becomeCurrent; - (void)invalidate; @end @interface CBUUID (YosemiteSDK) - (NSString*)UUIDString; @end @interface NSViewController (YosemiteSDK) - (void)viewDidLoad; @end @interface NSWindow (YosemiteSDK) - (void)setTitlebarAppearsTransparent:(BOOL)flag; @end @interface NSProcessInfo (YosemiteSDK) @property(readonly) NSOperatingSystemVersion operatingSystemVersion; @end @interface NSLayoutConstraint (YosemiteSDK) @property(getter=isActive) BOOL active; + (void)activateConstraints:(NSArray*)constraints; @end @interface NSVisualEffectView (YosemiteSDK) - (void)setState:(NSVisualEffectState)state; @end @class NSVisualEffectView; @interface CIQRCodeFeature (YosemiteSDK) @property(readonly) CGRect bounds; @property(readonly) CGPoint topLeft; @property(readonly) CGPoint topRight; @property(readonly) CGPoint bottomLeft; @property(readonly) CGPoint bottomRight; @property(readonly, copy) NSString* messageString; @end @class CIQRCodeFeature; @interface NSView (YosemiteSDK) - (BOOL)isAccessibilitySelectorAllowed:(SEL)selector; @property(copy) NSString* accessibilityLabel; @end #endif // MAC_OS_X_VERSION_10_10 // Once Chrome no longer supports OSX 10.10.2, everything within this // preprocessor block can be removed. #if !defined(MAC_OS_X_VERSION_10_10_3) || \ MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10_3 @interface NSEvent (Yosemite_3_SDK) @property(readonly) NSInteger stage; @end #endif // MAC_OS_X_VERSION_10_10 // ---------------------------------------------------------------------------- // Define NSStrings only available in newer versions of the OSX SDK to force // them to be statically linked. // ---------------------------------------------------------------------------- extern "C" { #if !defined(MAC_OS_X_VERSION_10_11) || \ MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11 BASE_EXPORT extern NSString* const CIDetectorTypeText; #endif // MAC_OS_X_VERSION_10_11 } // extern "C" // Once Chrome no longer supports OSX 10.10, everything within this // preprocessor block can be removed. #if !defined(MAC_OS_X_VERSION_10_11) || \ MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_11 @class NSLayoutDimension; @class NSLayoutXAxisAnchor; @class NSLayoutYAxisAnchor; @interface NSObject (ElCapitanSDK) - (NSLayoutConstraint*)constraintEqualToConstant:(CGFloat)c; - (NSLayoutConstraint*)constraintGreaterThanOrEqualToConstant:(CGFloat)c; @end @interface NSView (ElCapitanSDK) - (void)setPressureConfiguration:(NSPressureConfiguration*)aConfiguration API_AVAILABLE(macos(10.11)); @property(readonly, strong) NSLayoutXAxisAnchor* leftAnchor API_AVAILABLE(macos(10.11)); @property(readonly, strong) NSLayoutXAxisAnchor* rightAnchor API_AVAILABLE(macos(10.11)); @property(readonly, strong) NSLayoutYAxisAnchor* bottomAnchor API_AVAILABLE(macos(10.11)); @property(readonly, strong) NSLayoutDimension* widthAnchor API_AVAILABLE(macos(10.11)); @end @interface NSWindow (ElCapitanSDK) - (void)performWindowDragWithEvent:(NSEvent*)event; @end @interface CIRectangleFeature (ElCapitanSDK) @property(readonly) CGRect bounds; @end @class CIRectangleFeature; #endif // MAC_OS_X_VERSION_10_11 // Once Chrome no longer supports OSX 10.11, everything within this // preprocessor block can be removed. #if !defined(MAC_OS_X_VERSION_10_12) || \ MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12 @interface NSWindow (SierraSDK) @property(class) BOOL allowsAutomaticWindowTabbing; @end #endif // MAC_OS_X_VERSION_10_12 // Once Chrome no longer supports OSX 10.12.0, everything within this // preprocessor block can be removed. #if !defined(MAC_OS_X_VERSION_10_12_1) || \ MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_12_1 @interface NSButton (SierraPointOneSDK) @property(copy) NSColor* bezelColor; @property BOOL imageHugsTitle; + (instancetype)buttonWithTitle:(NSString*)title target:(id)target action:(SEL)action; + (instancetype)buttonWithImage:(NSImage*)image target:(id)target action:(SEL)action; + (instancetype)buttonWithTitle:(NSString*)title image:(NSImage*)image target:(id)target action:(SEL)action; @end @interface NSSegmentedControl (SierraPointOneSDK) + (instancetype)segmentedControlWithImages:(NSArray*)images trackingMode:(NSSegmentSwitchTracking)trackingMode target:(id)target action:(SEL)action; @end @interface NSTextField (SierraPointOneSDK) + (instancetype)labelWithAttributedString: (NSAttributedString*)attributedStringValue; @end #endif // MAC_OS_X_VERSION_10_12_1 // Once Chrome no longer supports OSX 10.12, everything within this // preprocessor block can be removed. #if !defined(MAC_OS_X_VERSION_10_13) || \ MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_13 // VNRequest forward declarations. @class VNRequest; typedef void (^VNRequestCompletionHandler)(VNRequest* request, NSError* error); @interface VNRequest : NSObject - (instancetype)initWithCompletionHandler: (VNRequestCompletionHandler)completionHandler NS_DESIGNATED_INITIALIZER; @property(readonly, nonatomic, copy) NSArray* results; @end // VNDetectFaceLandmarksRequest forward declarations. @interface VNImageBasedRequest : VNRequest @end @protocol VNFaceObservationAccepting @end @interface VNDetectFaceLandmarksRequest : VNImageBasedRequest @end // VNImageRequestHandler forward declarations. typedef NSString* VNImageOption NS_STRING_ENUM; @interface VNImageRequestHandler : NSObject - (instancetype)initWithCIImage:(CIImage*)image options:(NSDictionary*)options; - (BOOL)performRequests:(NSArray*)requests error:(NSError**)error; @end // VNFaceLandmarks2D forward declarations. @interface VNFaceLandmarkRegion : NSObject @property(readonly) NSUInteger pointCount; @end @interface VNFaceLandmarkRegion2D : VNFaceLandmarkRegion @property(readonly, assign) const CGPoint* normalizedPoints NS_RETURNS_INNER_POINTER; @end @interface VNFaceLandmarks2D : NSObject @property(readonly) VNFaceLandmarkRegion2D* leftEye; @property(readonly) VNFaceLandmarkRegion2D* rightEye; @property(readonly) VNFaceLandmarkRegion2D* outerLips; @property(readonly) VNFaceLandmarkRegion2D* nose; @end // VNFaceObservation forward declarations. @interface VNObservation : NSObject @end @interface VNDetectedObjectObservation : VNObservation @property(readonly, nonatomic, assign) CGRect boundingBox; @end @interface VNFaceObservation : VNDetectedObjectObservation @property(readonly, nonatomic, strong) VNFaceLandmarks2D* landmarks; @end #endif // MAC_OS_X_VERSION_10_13 // ---------------------------------------------------------------------------- // The symbol for kCWSSIDDidChangeNotification is available in the // CoreWLAN.framework for OSX versions 10.6 through 10.10. The symbol is not // declared in the OSX 10.9+ SDK, so when compiling against an OSX 10.9+ SDK, // declare the symbol. // ---------------------------------------------------------------------------- BASE_EXPORT extern "C" NSString* const kCWSSIDDidChangeNotification; #endif // BASE_MAC_SDK_FORWARD_DECLARATIONS_H_