// 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.6). // 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 <CoreWLAN/CoreWLAN.h> #import <ImageCaptureCore/ImageCaptureCore.h> #import <IOBluetooth/IOBluetooth.h> #include "base/base_export.h" #if !defined(MAC_OS_X_VERSION_10_7) || \ MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7 enum { NSEventPhaseNone = 0, // event not associated with a phase. NSEventPhaseBegan = 0x1 << 0, NSEventPhaseStationary = 0x1 << 1, NSEventPhaseChanged = 0x1 << 2, NSEventPhaseEnded = 0x1 << 3, NSEventPhaseCancelled = 0x1 << 4 }; typedef NSUInteger NSEventPhase; enum { NSFullScreenWindowMask = 1 << 14, }; enum { NSApplicationPresentationFullScreen = 1 << 10, }; enum { NSWindowCollectionBehaviorFullScreenPrimary = 1 << 7, NSWindowCollectionBehaviorFullScreenAuxiliary = 1 << 8, }; enum { NSEventSwipeTrackingLockDirection = 0x1 << 0, NSEventSwipeTrackingClampGestureAmount = 0x1 << 1, }; typedef NSUInteger NSEventSwipeTrackingOptions; enum { NSWindowAnimationBehaviorDefault = 0, NSWindowAnimationBehaviorNone = 2, NSWindowAnimationBehaviorDocumentWindow = 3, NSWindowAnimationBehaviorUtilityWindow = 4, NSWindowAnimationBehaviorAlertPanel = 5 }; typedef NSInteger NSWindowAnimationBehavior; enum { NSWindowDocumentVersionsButton = 6, NSWindowFullScreenButton, }; typedef NSUInteger NSWindowButton; @interface NSEvent (LionSDK) + (BOOL)isSwipeTrackingFromScrollEventsEnabled; - (NSEventPhase)momentumPhase; - (NSEventPhase)phase; - (BOOL)hasPreciseScrollingDeltas; - (CGFloat)scrollingDeltaX; - (CGFloat)scrollingDeltaY; - (void)trackSwipeEventWithOptions:(NSEventSwipeTrackingOptions)options dampenAmountThresholdMin:(CGFloat)minDampenThreshold max:(CGFloat)maxDampenThreshold usingHandler:(void (^)(CGFloat gestureAmount, NSEventPhase phase, BOOL isComplete, BOOL *stop))trackingHandler; - (BOOL)isDirectionInvertedFromDevice; @end @interface NSApplication (LionSDK) - (void)disableRelaunchOnLogin; @end @interface CALayer (LionSDK) - (CGFloat)contentsScale; - (void)setContentsScale:(CGFloat)contentsScale; @end @interface NSScreen (LionSDK) - (CGFloat)backingScaleFactor; - (NSRect)convertRectToBacking:(NSRect)aRect; @end @interface NSWindow (LionSDK) - (CGFloat)backingScaleFactor; - (NSWindowAnimationBehavior)animationBehavior; - (void)setAnimationBehavior:(NSWindowAnimationBehavior)newAnimationBehavior; - (void)toggleFullScreen:(id)sender; - (void)setRestorable:(BOOL)flag; @end @interface NSCursor (LionSDKDeclarations) + (NSCursor*)IBeamCursorForVerticalLayout; @end @interface NSAnimationContext (LionSDK) + (void)runAnimationGroup:(void (^)(NSAnimationContext *context))changes completionHandler:(void (^)(void))completionHandler; @property(copy) void(^completionHandler)(void); @end @interface NSView (LionSDK) - (NSSize)convertSizeFromBacking:(NSSize)size; - (void)setWantsBestResolutionOpenGLSurface:(BOOL)flag; @end @interface NSObject (ICCameraDeviceDelegateLionSDK) - (void)deviceDidBecomeReadyWithCompleteContentCatalog:(ICDevice*)device; - (void)didDownloadFile:(ICCameraFile*)file error:(NSError*)error options:(NSDictionary*)options contextInfo:(void*)contextInfo; @end @interface NSScroller (LionSDK) + (NSInteger)preferredScrollerStyle; @end @interface CWInterface (LionSDK) - (BOOL)associateToNetwork:(CWNetwork*)network password:(NSString*)password error:(NSError**)error; - (NSSet*)scanForNetworksWithName:(NSString*)networkName error:(NSError**)error; @end enum CWChannelBand { kCWChannelBandUnknown = 0, kCWChannelBand2GHz = 1, kCWChannelBand5GHz = 2, }; @interface CWChannel : NSObject @property(readonly) CWChannelBand channelBand; @end enum { kCWSecurityNone = 0, kCWSecurityWEP = 1, kCWSecurityWPAPersonal = 2, kCWSecurityWPAPersonalMixed = 3, kCWSecurityWPA2Personal = 4, kCWSecurityPersonal = 5, kCWSecurityDynamicWEP = 6, kCWSecurityWPAEnterprise = 7, kCWSecurityWPAEnterpriseMixed = 8, kCWSecurityWPA2Enterprise = 9, kCWSecurityEnterprise = 10, kCWSecurityUnknown = NSIntegerMax, }; typedef NSInteger CWSecurity; @interface CWNetwork (LionSDK) @property(readonly) CWChannel* wlanChannel; @property(readonly) NSInteger rssiValue; - (BOOL)supportsSecurity:(CWSecurity)security; @end @interface IOBluetoothHostController (LionSDK) - (NSString*)nameAsString; - (BluetoothHCIPowerState)powerState; @end enum { kBluetoothFeatureLESupportedController = (1 << 6L), }; @protocol IOBluetoothDeviceInquiryDelegate - (void)deviceInquiryStarted:(IOBluetoothDeviceInquiry*)sender; - (void)deviceInquiryDeviceFound:(IOBluetoothDeviceInquiry*)sender device:(IOBluetoothDevice*)device; - (void)deviceInquiryComplete:(IOBluetoothDeviceInquiry*)sender error:(IOReturn)error aborted:(BOOL)aborted; @end @interface IOBluetoothL2CAPChannel (LionSDK) @property(readonly) BluetoothL2CAPMTU outgoingMTU; @end @interface IOBluetoothDevice (LionSDK) - (NSString*)addressString; - (unsigned int)classOfDevice; - (BluetoothConnectionHandle)connectionHandle; - (BluetoothHCIRSSIValue)rawRSSI; - (NSArray*)services; - (IOReturn)performSDPQuery:(id)target uuids:(NSArray*)uuids; @end BASE_EXPORT extern "C" NSString* const NSWindowWillEnterFullScreenNotification; #endif // MAC_OS_X_VERSION_10_7 #if !defined(MAC_OS_X_VERSION_10_8) || \ MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_8 enum { NSEventPhaseMayBegin = 0x1 << 5 }; @interface NSColor (MountainLionSDK) - (CGColorRef)CGColor; @end #endif // MAC_OS_X_VERSION_10_8 #if !defined(MAC_OS_X_VERSION_10_9) || \ MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_9 // NSProgress is public API in 10.9, but a version of it exists and is usable // in 10.8. @interface NSProgress : NSObject - (instancetype)initWithParent:(NSProgress*)parentProgressOrNil userInfo:(NSDictionary*)userInfoOrNil; @property (copy) NSString* kind; @property int64_t totalUnitCount; @property int64_t completedUnitCount; @property (getter=isCancellable) BOOL cancellable; @property (getter=isPausable) BOOL pausable; @property (readonly, getter=isCancelled) BOOL cancelled; @property (readonly, getter=isPaused) BOOL paused; @property (copy) void (^cancellationHandler)(void); @property (copy) void (^pausingHandler)(void); - (void)cancel; - (void)pause; - (void)setUserInfoObject:(id)objectOrNil forKey:(NSString*)key; - (NSDictionary*)userInfo; @property (readonly, getter=isIndeterminate) BOOL indeterminate; @property (readonly) double fractionCompleted; - (void)publish; - (void)unpublish; @end @interface NSScreen (MavericksSDK) + (BOOL)screensHaveSeparateSpaces; @end // NSAppearance is a new class in the 10.9 SDK. New classes cannot be // forward-declared because they also require an @implementation, which would // produce conflicting linkage. Instead, just declare the necessary pieces of // the interface as a protocol, and treat objects of this type as id. @protocol CrNSAppearance<NSObject> + (id<NSObject>)appearanceNamed:(NSString*)name; @end @interface NSView (MavericksSDK) - (void)setCanDrawSubviewsIntoLayer:(BOOL)flag; - (id<CrNSAppearance>)effectiveAppearance; @end enum { NSWindowOcclusionStateVisible = 1UL << 1, }; typedef NSUInteger NSWindowOcclusionState; @interface NSWindow (MavericksSDK) - (NSWindowOcclusionState)occlusionState; @end #else // !MAC_OS_X_VERSION_10_9 typedef enum { kCWSecurityModeOpen = 0, kCWSecurityModeWEP, kCWSecurityModeWPA_PSK, kCWSecurityModeWPA2_PSK, kCWSecurityModeWPA_Enterprise, kCWSecurityModeWPA2_Enterprise, kCWSecurityModeWPS, kCWSecurityModeDynamicWEP } CWSecurityMode; @interface CWNetwork (SnowLeopardSDK) @property(readonly) NSNumber* rssi; @property(readonly) NSNumber* securityMode; @end BASE_EXPORT extern "C" NSString* const kCWSSIDDidChangeNotification; #endif // MAC_OS_X_VERSION_10_9 #if !defined(MAC_OS_X_VERSION_10_10) || \ MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_10 @interface NSUserActivity : NSObject @property (readonly, copy) NSString* activityType; @property (copy) NSURL* webPageURL; @end BASE_EXPORT extern "C" NSString* const NSUserActivityTypeBrowsingWeb; BASE_EXPORT extern "C" NSString* const NSAppearanceNameVibrantDark; #endif // MAC_OS_X_VERSION_10_10 #endif // BASE_MAC_SDK_FORWARD_DECLARATIONS_H_