|  | // 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 <AppKit/AppKit.h> | 
|  | #import <CoreBluetooth/CoreBluetooth.h> | 
|  | #import <CoreWLAN/CoreWLAN.h> | 
|  | #import <IOBluetooth/IOBluetooth.h> | 
|  | #import <ImageCaptureCore/ImageCaptureCore.h> | 
|  | #import <QuartzCore/QuartzCore.h> | 
|  | #include <stdint.h> | 
|  |  | 
|  | #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<NSCopying> | 
|  | - (instancetype)initWithCompletionHandler: | 
|  | (VNRequestCompletionHandler)completionHandler NS_DESIGNATED_INITIALIZER; | 
|  | @property(readonly, nonatomic, copy) NSArray* results; | 
|  | @end | 
|  |  | 
|  | // VNDetectFaceLandmarksRequest forward declarations. | 
|  | @interface VNImageBasedRequest : VNRequest | 
|  | @end | 
|  |  | 
|  | @protocol VNFaceObservationAccepting<NSObject> | 
|  | @end | 
|  |  | 
|  | @interface VNDetectFaceLandmarksRequest | 
|  | : VNImageBasedRequest<VNFaceObservationAccepting> | 
|  | @end | 
|  |  | 
|  | // VNImageRequestHandler forward declarations. | 
|  | typedef NSString* VNImageOption NS_STRING_ENUM; | 
|  |  | 
|  | @interface VNImageRequestHandler : NSObject | 
|  | - (instancetype)initWithCIImage:(CIImage*)image | 
|  | options:(NSDictionary<VNImageOption, id>*)options; | 
|  | - (BOOL)performRequests:(NSArray<VNRequest*>*)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<NSCopying, NSSecureCoding> | 
|  | @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_ |