mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
533 lines
16 KiB
Objective-C
533 lines
16 KiB
Objective-C
// 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"
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Either define or forward declare classes only available in OSX 10.7+.
|
|
// ----------------------------------------------------------------------------
|
|
|
|
#if !defined(MAC_OS_X_VERSION_10_7) || \
|
|
MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
|
|
|
|
@interface CWChannel : NSObject
|
|
@end
|
|
|
|
@interface CBPeripheral : NSObject
|
|
@end
|
|
|
|
@interface CBCentralManager : NSObject
|
|
@end
|
|
|
|
@interface CBUUID : NSObject
|
|
@end
|
|
|
|
#else
|
|
|
|
@class CWChannel;
|
|
@class CBPeripheral;
|
|
@class CBCentralManager;
|
|
@class CBUUID;
|
|
|
|
#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
|
|
|
|
@interface NSUUID : NSObject
|
|
@end
|
|
|
|
#else
|
|
|
|
@class NSUUID;
|
|
|
|
#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
|
|
@end
|
|
|
|
@interface NSAppearance : NSObject
|
|
@end
|
|
|
|
#else
|
|
|
|
@class NSProgress;
|
|
@class NSAppearance;
|
|
|
|
#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
|
|
@end
|
|
|
|
#else
|
|
|
|
@class NSUserActivity;
|
|
|
|
#endif // MAC_OS_X_VERSION_10_10
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Define typedefs, enums, and protocols not available in the version of the
|
|
// OSX SDK being compiled against.
|
|
// ----------------------------------------------------------------------------
|
|
|
|
#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;
|
|
|
|
enum CWChannelBand {
|
|
kCWChannelBandUnknown = 0,
|
|
kCWChannelBand2GHz = 1,
|
|
kCWChannelBand5GHz = 2,
|
|
};
|
|
|
|
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;
|
|
|
|
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
|
|
|
|
enum {
|
|
CBPeripheralStateDisconnected = 0,
|
|
CBPeripheralStateConnecting,
|
|
CBPeripheralStateConnected,
|
|
};
|
|
typedef NSInteger CBPeripheralState;
|
|
|
|
enum {
|
|
CBCentralManagerStateUnknown = 0,
|
|
CBCentralManagerStateResetting,
|
|
CBCentralManagerStateUnsupported,
|
|
CBCentralManagerStateUnauthorized,
|
|
CBCentralManagerStatePoweredOff,
|
|
CBCentralManagerStatePoweredOn,
|
|
};
|
|
typedef NSInteger CBCentralManagerState;
|
|
|
|
@protocol CBCentralManagerDelegate;
|
|
|
|
@protocol CBCentralManagerDelegate<NSObject>
|
|
- (void)centralManagerDidUpdateState:(CBCentralManager*)central;
|
|
- (void)centralManager:(CBCentralManager*)central
|
|
didDiscoverPeripheral:(CBPeripheral*)peripheral
|
|
advertisementData:(NSDictionary*)advertisementData
|
|
RSSI:(NSNumber*)RSSI;
|
|
@end
|
|
|
|
#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 };
|
|
|
|
#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
|
|
|
|
enum {
|
|
NSWindowOcclusionStateVisible = 1UL << 1,
|
|
};
|
|
typedef NSUInteger NSWindowOcclusionState;
|
|
|
|
enum { NSWorkspaceLaunchWithErrorPresentation = 0x00000040 };
|
|
|
|
#endif // MAC_OS_X_VERSION_10_9
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// 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_7) || \
|
|
MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
|
|
BASE_EXPORT extern NSString* const NSWindowWillEnterFullScreenNotification;
|
|
BASE_EXPORT extern NSString* const NSWindowWillExitFullScreenNotification;
|
|
BASE_EXPORT extern NSString* const NSWindowDidEnterFullScreenNotification;
|
|
BASE_EXPORT extern NSString* const NSWindowDidExitFullScreenNotification;
|
|
BASE_EXPORT extern NSString* const
|
|
NSWindowDidChangeBackingPropertiesNotification;
|
|
BASE_EXPORT extern NSString* const CBAdvertisementDataServiceDataKey;
|
|
BASE_EXPORT extern NSString* const
|
|
NSPreferredScrollerStyleDidChangeNotification;
|
|
#endif // MAC_OS_X_VERSION_10_7
|
|
|
|
#if !defined(MAC_OS_X_VERSION_10_9) || \
|
|
MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_9
|
|
BASE_EXPORT extern NSString* const NSWindowDidChangeOcclusionStateNotification;
|
|
BASE_EXPORT extern NSString* const CBAdvertisementDataIsConnectable;
|
|
#endif // MAC_OS_X_VERSION_10_9
|
|
|
|
#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 NSUserActivityTypeBrowsingWeb;
|
|
BASE_EXPORT extern NSString* const NSAppearanceNameVibrantDark;
|
|
#endif // MAC_OS_X_VERSION_10_10
|
|
} // extern "C"
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// If compiling against an older version of the OSX SDK, declare functions that
|
|
// are available in newer versions of the OSX SDK. If compiling against a newer
|
|
// version of the OSX SDK, redeclare those same functions to suppress
|
|
// -Wpartial-availability warnings.
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// Once Chrome no longer supports OSX 10.6, everything within this preprocessor
|
|
// block can be removed.
|
|
#if !defined(MAC_OS_X_VERSION_10_7) || \
|
|
MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
|
|
|
|
@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;
|
|
- (NSRect)convertRectFromScreen:(NSRect)aRect;
|
|
@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
|
|
|
|
@interface CWChannel (LionSDK)
|
|
@property(readonly) CWChannelBand channelBand;
|
|
@end
|
|
|
|
@interface CWNetwork (LionSDK)
|
|
@property(readonly) CWChannel* wlanChannel;
|
|
@property(readonly) NSInteger rssiValue;
|
|
- (BOOL)supportsSecurity:(CWSecurity)security;
|
|
@end
|
|
|
|
@interface IOBluetoothHostController (LionSDK)
|
|
- (NSString*)nameAsString;
|
|
- (BluetoothHCIPowerState)powerState;
|
|
@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
|
|
|
|
@interface CBPeripheral (LionSDK)
|
|
@property(readonly, nonatomic) CFUUIDRef UUID;
|
|
@property(retain, readonly) NSString* name;
|
|
@property(readonly) BOOL isConnected;
|
|
@end
|
|
|
|
@interface CBCentralManager (LionSDK)
|
|
@property(readonly) CBCentralManagerState state;
|
|
- (id)initWithDelegate:(id<CBCentralManagerDelegate>)delegate
|
|
queue:(dispatch_queue_t)queue;
|
|
- (void)scanForPeripheralsWithServices:(NSArray*)serviceUUIDs
|
|
options:(NSDictionary*)options;
|
|
- (void)stopScan;
|
|
@end
|
|
|
|
@interface CBUUID (LionSDK)
|
|
@property(nonatomic, readonly) NSData* data;
|
|
+ (CBUUID*)UUIDWithString:(NSString*)theString;
|
|
@end
|
|
|
|
#endif // MAC_OS_X_VERSION_10_7
|
|
|
|
// Once Chrome no longer supports OSX 10.7, everything within this preprocessor
|
|
// block can be removed.
|
|
#if !defined(MAC_OS_X_VERSION_10_8) || \
|
|
MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8
|
|
|
|
@interface NSColor (MountainLionSDK)
|
|
- (CGColorRef)CGColor;
|
|
@end
|
|
|
|
@interface NSUUID (MountainLionSDK)
|
|
- (NSString*)UUIDString;
|
|
@end
|
|
|
|
@interface NSControl (MountainLionSDK)
|
|
@property BOOL allowsExpansionToolTips;
|
|
@end
|
|
|
|
#endif // MAC_OS_X_VERSION_10_8
|
|
|
|
// Once Chrome no longer supports OSX 10.8, everything within this preprocessor
|
|
// block can be removed.
|
|
#if !defined(MAC_OS_X_VERSION_10_9) || \
|
|
MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_9
|
|
|
|
@interface NSProgress (MavericksSDK)
|
|
|
|
- (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
|
|
|
|
@interface NSView (MavericksSDK)
|
|
- (void)setCanDrawSubviewsIntoLayer:(BOOL)flag;
|
|
- (NSAppearance*)effectiveAppearance;
|
|
@end
|
|
|
|
@interface NSWindow (MavericksSDK)
|
|
- (NSWindowOcclusionState)occlusionState;
|
|
@end
|
|
|
|
@interface NSAppearance (MavericksSDK)
|
|
+ (id<NSObject>)appearanceNamed:(NSString*)name;
|
|
@end
|
|
|
|
@interface CBPeripheral (MavericksSDK)
|
|
@property(readonly, nonatomic) NSUUID* identifier;
|
|
@end
|
|
|
|
#endif // MAC_OS_X_VERSION_10_9
|
|
|
|
// 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;
|
|
|
|
- (instancetype)initWithActivityType:(NSString*)activityType;
|
|
- (void)becomeCurrent;
|
|
- (void)invalidate;
|
|
|
|
@end
|
|
|
|
@interface CBUUID (YosemiteSDK)
|
|
- (NSString*)UUIDString;
|
|
@end
|
|
|
|
#endif // MAC_OS_X_VERSION_10_10
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// Chrome uses -[CWNetwork securityMode] and -[CWNetwork rssi] on OSX 10.6. The
|
|
// former method relies on the enum CWSecurityMode which was removed in the OSX
|
|
// 10.9 SDK. In order for Chrome to compile against an OSX 10.9+ SDK, Chrome
|
|
// must define this enum. Chrome must also declare these methods.
|
|
//
|
|
// These declarations and definitions will not be necessary once Chrome no
|
|
// longer runs on OSX 10.6.
|
|
// ----------------------------------------------------------------------------
|
|
#if defined(MAC_OS_X_VERSION_10_9) && \
|
|
MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_6
|
|
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
|
|
#endif
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// 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.
|
|
// ----------------------------------------------------------------------------
|
|
#if defined(MAC_OS_X_VERSION_10_9) && \
|
|
MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9
|
|
BASE_EXPORT extern "C" NSString* const kCWSSIDDidChangeNotification;
|
|
#endif
|
|
#endif // BASE_MAC_SDK_FORWARD_DECLARATIONS_H_
|