| // 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_ |