• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // This file contains forward declarations for items in later SDKs than the
6 // default one with which Chromium is built (currently 10.6).
7 // If you call any function from this header, be sure to check at runtime for
8 // respondsToSelector: before calling these functions (else your code will crash
9 // on older OS X versions that chrome still supports).
10 
11 #ifndef BASE_MAC_SDK_FORWARD_DECLARATIONS_H_
12 #define BASE_MAC_SDK_FORWARD_DECLARATIONS_H_
13 
14 #import <AppKit/AppKit.h>
15 #import <CoreBluetooth/CoreBluetooth.h>
16 #import <CoreWLAN/CoreWLAN.h>
17 #import <ImageCaptureCore/ImageCaptureCore.h>
18 #import <IOBluetooth/IOBluetooth.h>
19 #include <stdint.h>
20 
21 #include "base/base_export.h"
22 
23 // ----------------------------------------------------------------------------
24 // Either define or forward declare classes only available in OSX 10.7+.
25 // ----------------------------------------------------------------------------
26 
27 #if !defined(MAC_OS_X_VERSION_10_7) || \
28     MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
29 
30 @interface CWChannel : NSObject
31 @end
32 
33 @interface CBPeripheral : NSObject
34 @end
35 
36 @interface CBCentralManager : NSObject
37 @end
38 
39 @interface CBUUID : NSObject
40 @end
41 
42 #else
43 
44 @class CWChannel;
45 @class CBPeripheral;
46 @class CBCentralManager;
47 @class CBUUID;
48 
49 #endif  // MAC_OS_X_VERSION_10_7
50 
51 #if !defined(MAC_OS_X_VERSION_10_8) || \
52     MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_8
53 
54 @interface NSUUID : NSObject
55 @end
56 
57 #else
58 
59 @class NSUUID;
60 
61 #endif  // MAC_OS_X_VERSION_10_8
62 
63 #if !defined(MAC_OS_X_VERSION_10_9) || \
64     MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_9
65 
66 // NSProgress is public API in 10.9, but a version of it exists and is usable
67 // in 10.8.
68 @interface NSProgress : NSObject
69 @end
70 
71 @interface NSAppearance : NSObject
72 @end
73 
74 #else
75 
76 @class NSProgress;
77 @class NSAppearance;
78 
79 #endif  // MAC_OS_X_VERSION_10_9
80 
81 // ----------------------------------------------------------------------------
82 // Define typedefs, enums, and protocols not available in the version of the
83 // OSX SDK being compiled against.
84 // ----------------------------------------------------------------------------
85 
86 #if !defined(MAC_OS_X_VERSION_10_7) || \
87     MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
88 
89 enum {
90   NSEventPhaseNone = 0,  // event not associated with a phase.
91   NSEventPhaseBegan = 0x1 << 0,
92   NSEventPhaseStationary = 0x1 << 1,
93   NSEventPhaseChanged = 0x1 << 2,
94   NSEventPhaseEnded = 0x1 << 3,
95   NSEventPhaseCancelled = 0x1 << 4
96 };
97 typedef NSUInteger NSEventPhase;
98 
99 enum {
100   NSFullScreenWindowMask = 1 << 14,
101 };
102 
103 enum {
104   NSApplicationPresentationFullScreen = 1 << 10,
105 };
106 
107 enum {
108   NSWindowCollectionBehaviorFullScreenPrimary = 1 << 7,
109   NSWindowCollectionBehaviorFullScreenAuxiliary = 1 << 8,
110 };
111 
112 enum {
113   NSEventSwipeTrackingLockDirection = 0x1 << 0,
114   NSEventSwipeTrackingClampGestureAmount = 0x1 << 1,
115 };
116 typedef NSUInteger NSEventSwipeTrackingOptions;
117 
118 enum {
119   NSWindowAnimationBehaviorDefault = 0,
120   NSWindowAnimationBehaviorNone = 2,
121   NSWindowAnimationBehaviorDocumentWindow = 3,
122   NSWindowAnimationBehaviorUtilityWindow = 4,
123   NSWindowAnimationBehaviorAlertPanel = 5
124 };
125 typedef NSInteger NSWindowAnimationBehavior;
126 
127 enum {
128   NSWindowDocumentVersionsButton = 6,
129   NSWindowFullScreenButton,
130 };
131 typedef NSUInteger NSWindowButton;
132 
133 enum CWChannelBand {
134   kCWChannelBandUnknown = 0,
135   kCWChannelBand2GHz = 1,
136   kCWChannelBand5GHz = 2,
137 };
138 
139 enum {
140   kCWSecurityNone = 0,
141   kCWSecurityWEP = 1,
142   kCWSecurityWPAPersonal = 2,
143   kCWSecurityWPAPersonalMixed = 3,
144   kCWSecurityWPA2Personal = 4,
145   kCWSecurityPersonal = 5,
146   kCWSecurityDynamicWEP = 6,
147   kCWSecurityWPAEnterprise = 7,
148   kCWSecurityWPAEnterpriseMixed = 8,
149   kCWSecurityWPA2Enterprise = 9,
150   kCWSecurityEnterprise = 10,
151   kCWSecurityUnknown = NSIntegerMax,
152 };
153 
154 typedef NSInteger CWSecurity;
155 
156 enum {
157   kBluetoothFeatureLESupportedController = (1 << 6L),
158 };
159 
160 @protocol IOBluetoothDeviceInquiryDelegate
161 - (void)deviceInquiryStarted:(IOBluetoothDeviceInquiry*)sender;
162 - (void)deviceInquiryDeviceFound:(IOBluetoothDeviceInquiry*)sender
163                           device:(IOBluetoothDevice*)device;
164 - (void)deviceInquiryComplete:(IOBluetoothDeviceInquiry*)sender
165                         error:(IOReturn)error
166                       aborted:(BOOL)aborted;
167 @end
168 
169 enum {
170   CBPeripheralStateDisconnected = 0,
171   CBPeripheralStateConnecting,
172   CBPeripheralStateConnected,
173 };
174 typedef NSInteger CBPeripheralState;
175 
176 enum {
177   CBCentralManagerStateUnknown = 0,
178   CBCentralManagerStateResetting,
179   CBCentralManagerStateUnsupported,
180   CBCentralManagerStateUnauthorized,
181   CBCentralManagerStatePoweredOff,
182   CBCentralManagerStatePoweredOn,
183 };
184 typedef NSInteger CBCentralManagerState;
185 
186 @protocol CBCentralManagerDelegate;
187 
188 @protocol CBCentralManagerDelegate<NSObject>
189 - (void)centralManagerDidUpdateState:(CBCentralManager*)central;
190 - (void)centralManager:(CBCentralManager*)central
191     didDiscoverPeripheral:(CBPeripheral*)peripheral
192         advertisementData:(NSDictionary*)advertisementData
193                      RSSI:(NSNumber*)RSSI;
194 @end
195 
196 #endif  // MAC_OS_X_VERSION_10_7
197 
198 #if !defined(MAC_OS_X_VERSION_10_8) || \
199     MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_8
200 
201 enum { NSEventPhaseMayBegin = 0x1 << 5 };
202 
203 #endif  // MAC_OS_X_VERSION_10_8
204 
205 #if !defined(MAC_OS_X_VERSION_10_9) || \
206     MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_9
207 
208 enum {
209   NSWindowOcclusionStateVisible = 1UL << 1,
210 };
211 typedef NSUInteger NSWindowOcclusionState;
212 
213 enum { NSWorkspaceLaunchWithErrorPresentation = 0x00000040 };
214 
215 #endif  // MAC_OS_X_VERSION_10_9
216 
217 #if !defined(MAC_OS_X_VERSION_10_11) || \
218     MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_11
219 
220 enum {
221   NSPressureBehaviorUnknown = -1,
222   NSPressureBehaviorPrimaryDefault = 0,
223   NSPressureBehaviorPrimaryClick = 1,
224   NSPressureBehaviorPrimaryGeneric = 2,
225   NSPressureBehaviorPrimaryAccelerator = 3,
226   NSPressureBehaviorPrimaryDeepClick = 5,
227   NSPressureBehaviorPrimaryDeepDrag = 6
228 };
229 typedef NSInteger NSPressureBehavior;
230 
231 @interface NSPressureConfiguration : NSObject
232 - (instancetype)initWithPressureBehavior:(NSPressureBehavior)pressureBehavior;
233 @end
234 
235 #endif // MAC_OS_X_VERSION_10_11
236 
237 // ----------------------------------------------------------------------------
238 // Define NSStrings only available in newer versions of the OSX SDK to force
239 // them to be statically linked.
240 // ----------------------------------------------------------------------------
241 
242 extern "C" {
243 #if !defined(MAC_OS_X_VERSION_10_7) || \
244     MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
245 BASE_EXPORT extern NSString* const NSWindowWillEnterFullScreenNotification;
246 BASE_EXPORT extern NSString* const NSWindowWillExitFullScreenNotification;
247 BASE_EXPORT extern NSString* const NSWindowDidEnterFullScreenNotification;
248 BASE_EXPORT extern NSString* const NSWindowDidExitFullScreenNotification;
249 BASE_EXPORT extern NSString* const
250     NSWindowDidChangeBackingPropertiesNotification;
251 BASE_EXPORT extern NSString* const CBAdvertisementDataServiceDataKey;
252 BASE_EXPORT extern NSString* const CBAdvertisementDataServiceUUIDsKey;
253 #endif  // MAC_OS_X_VERSION_10_7
254 
255 #if !defined(MAC_OS_X_VERSION_10_9) || \
256     MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_9
257 BASE_EXPORT extern NSString* const NSWindowDidChangeOcclusionStateNotification;
258 BASE_EXPORT extern NSString* const CBAdvertisementDataOverflowServiceUUIDsKey;
259 BASE_EXPORT extern NSString* const CBAdvertisementDataIsConnectable;
260 #endif  // MAC_OS_X_VERSION_10_9
261 
262 #if !defined(MAC_OS_X_VERSION_10_10) || \
263     MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10
264 BASE_EXPORT extern NSString* const NSUserActivityTypeBrowsingWeb;
265 BASE_EXPORT extern NSString* const NSAppearanceNameVibrantDark;
266 BASE_EXPORT extern NSString* const NSAppearanceNameVibrantLight;
267 #endif  // MAC_OS_X_VERSION_10_10
268 }  // extern "C"
269 
270 // ----------------------------------------------------------------------------
271 // If compiling against an older version of the OSX SDK, declare functions that
272 // are available in newer versions of the OSX SDK. If compiling against a newer
273 // version of the OSX SDK, redeclare those same functions to suppress
274 // -Wpartial-availability warnings.
275 // ----------------------------------------------------------------------------
276 
277 // Once Chrome no longer supports OSX 10.6, everything within this preprocessor
278 // block can be removed.
279 #if !defined(MAC_OS_X_VERSION_10_7) || \
280     MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
281 
282 @interface NSEvent (LionSDK)
283 + (BOOL)isSwipeTrackingFromScrollEventsEnabled;
284 - (NSEventPhase)momentumPhase;
285 - (NSEventPhase)phase;
286 - (BOOL)hasPreciseScrollingDeltas;
287 - (CGFloat)scrollingDeltaX;
288 - (CGFloat)scrollingDeltaY;
289 - (void)trackSwipeEventWithOptions:(NSEventSwipeTrackingOptions)options
290           dampenAmountThresholdMin:(CGFloat)minDampenThreshold
291                                max:(CGFloat)maxDampenThreshold
292                       usingHandler:(void (^)(CGFloat gestureAmount,
293                                              NSEventPhase phase,
294                                              BOOL isComplete,
295                                              BOOL* stop))trackingHandler;
296 - (BOOL)isDirectionInvertedFromDevice;
297 @end
298 
299 @interface NSApplication (LionSDK)
300 - (void)disableRelaunchOnLogin;
301 @end
302 
303 @interface CALayer (LionSDK)
304 - (CGFloat)contentsScale;
305 - (void)setContentsScale:(CGFloat)contentsScale;
306 @end
307 
308 @interface NSScreen (LionSDK)
309 - (CGFloat)backingScaleFactor;
310 - (NSRect)convertRectToBacking:(NSRect)aRect;
311 @end
312 
313 @interface NSWindow (LionSDK)
314 - (CGFloat)backingScaleFactor;
315 - (NSWindowAnimationBehavior)animationBehavior;
316 - (void)setAnimationBehavior:(NSWindowAnimationBehavior)newAnimationBehavior;
317 - (void)toggleFullScreen:(id)sender;
318 - (void)setRestorable:(BOOL)flag;
319 - (NSRect)convertRectFromScreen:(NSRect)aRect;
320 - (NSRect)convertRectToScreen:(NSRect)aRect;
321 @end
322 
323 @interface NSCursor (LionSDKDeclarations)
324 + (NSCursor*)IBeamCursorForVerticalLayout;
325 @end
326 
327 @interface NSAnimationContext (LionSDK)
328 + (void)runAnimationGroup:(void (^)(NSAnimationContext* context))changes
329         completionHandler:(void (^)(void))completionHandler;
330 @property(copy) void (^completionHandler)(void);
331 @end
332 
333 @interface NSView (LionSDK)
334 - (NSSize)convertSizeFromBacking:(NSSize)size;
335 - (void)setWantsBestResolutionOpenGLSurface:(BOOL)flag;
336 - (NSDraggingSession*)beginDraggingSessionWithItems:(NSArray*)items
337                                               event:(NSEvent*)event
338                                              source:
339                                                  (id<NSDraggingSource>)source;
340 @end
341 
342 @interface NSObject (ICCameraDeviceDelegateLionSDK)
343 - (void)deviceDidBecomeReadyWithCompleteContentCatalog:(ICDevice*)device;
344 - (void)didDownloadFile:(ICCameraFile*)file
345                   error:(NSError*)error
346                 options:(NSDictionary*)options
347             contextInfo:(void*)contextInfo;
348 @end
349 
350 @interface CWInterface (LionSDK)
351 - (BOOL)associateToNetwork:(CWNetwork*)network
352                   password:(NSString*)password
353                      error:(NSError**)error;
354 - (NSSet*)scanForNetworksWithName:(NSString*)networkName error:(NSError**)error;
355 @end
356 
357 @interface CWChannel (LionSDK)
358 @property(readonly) CWChannelBand channelBand;
359 @end
360 
361 @interface CWNetwork (LionSDK)
362 @property(readonly) CWChannel* wlanChannel;
363 @property(readonly) NSInteger rssiValue;
364 - (BOOL)supportsSecurity:(CWSecurity)security;
365 @end
366 
367 @interface IOBluetoothHostController (LionSDK)
368 - (NSString*)nameAsString;
369 - (BluetoothHCIPowerState)powerState;
370 @end
371 
372 @interface IOBluetoothL2CAPChannel (LionSDK)
373 @property(readonly) BluetoothL2CAPMTU outgoingMTU;
374 @end
375 
376 @interface IOBluetoothDevice (LionSDK)
377 - (NSString*)addressString;
378 - (unsigned int)classOfDevice;
379 - (BluetoothConnectionHandle)connectionHandle;
380 - (BluetoothHCIRSSIValue)rawRSSI;
381 - (NSArray*)services;
382 - (IOReturn)performSDPQuery:(id)target uuids:(NSArray*)uuids;
383 @end
384 
385 @interface CBPeripheral (LionSDK)
386 @property(readonly, nonatomic) CFUUIDRef UUID;
387 @property(retain, readonly) NSString* name;
388 @property(readonly) BOOL isConnected;
389 @end
390 
391 @interface CBCentralManager (LionSDK)
392 @property(readonly) CBCentralManagerState state;
393 - (id)initWithDelegate:(id<CBCentralManagerDelegate>)delegate
394                  queue:(dispatch_queue_t)queue;
395 - (void)scanForPeripheralsWithServices:(NSArray*)serviceUUIDs
396                                options:(NSDictionary*)options;
397 - (void)stopScan;
398 @end
399 
400 @interface CBUUID (LionSDK)
401 @property(nonatomic, readonly) NSData* data;
402 + (CBUUID*)UUIDWithString:(NSString*)theString;
403 @end
404 
405 BASE_EXPORT extern "C" void NSAccessibilityPostNotificationWithUserInfo(
406     id object,
407     NSString* notification,
408     NSDictionary* user_info);
409 
410 #endif  // MAC_OS_X_VERSION_10_7
411 
412 // Once Chrome no longer supports OSX 10.7, everything within this preprocessor
413 // block can be removed.
414 #if !defined(MAC_OS_X_VERSION_10_8) || \
415     MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8
416 
417 @interface NSColor (MountainLionSDK)
418 - (CGColorRef)CGColor;
419 @end
420 
421 @interface NSUUID (MountainLionSDK)
422 - (NSString*)UUIDString;
423 @end
424 
425 @interface NSControl (MountainLionSDK)
426 @property BOOL allowsExpansionToolTips;
427 @end
428 
429 #endif  // MAC_OS_X_VERSION_10_8
430 
431 // Once Chrome no longer supports OSX 10.8, everything within this preprocessor
432 // block can be removed.
433 #if !defined(MAC_OS_X_VERSION_10_9) || \
434     MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_9
435 
436 @interface NSProgress (MavericksSDK)
437 
438 - (instancetype)initWithParent:(NSProgress*)parentProgressOrNil
439                       userInfo:(NSDictionary*)userInfoOrNil;
440 @property(copy) NSString* kind;
441 
442 @property int64_t totalUnitCount;
443 @property int64_t completedUnitCount;
444 
445 @property(getter=isCancellable) BOOL cancellable;
446 @property(getter=isPausable) BOOL pausable;
447 @property(readonly, getter=isCancelled) BOOL cancelled;
448 @property(readonly, getter=isPaused) BOOL paused;
449 @property(copy) void (^cancellationHandler)(void);
450 @property(copy) void (^pausingHandler)(void);
451 - (void)cancel;
452 - (void)pause;
453 
454 - (void)setUserInfoObject:(id)objectOrNil forKey:(NSString*)key;
455 - (NSDictionary*)userInfo;
456 
457 @property(readonly, getter=isIndeterminate) BOOL indeterminate;
458 @property(readonly) double fractionCompleted;
459 
460 - (void)publish;
461 - (void)unpublish;
462 
463 @end
464 
465 @interface NSScreen (MavericksSDK)
466 + (BOOL)screensHaveSeparateSpaces;
467 @end
468 
469 @interface NSView (MavericksSDK)
470 - (void)setCanDrawSubviewsIntoLayer:(BOOL)flag;
471 - (void)setAppearance:(NSAppearance*)appearance;
472 - (NSAppearance*)effectiveAppearance;
473 @end
474 
475 @interface NSWindow (MavericksSDK)
476 - (NSWindowOcclusionState)occlusionState;
477 @end
478 
479 @interface NSAppearance (MavericksSDK)
480 + (id<NSObject>)appearanceNamed:(NSString*)name;
481 @end
482 
483 @interface CBPeripheral (MavericksSDK)
484 @property(readonly, nonatomic) NSUUID* identifier;
485 @end
486 
487 #endif  // MAC_OS_X_VERSION_10_9
488 
489 // Once Chrome no longer supports OSX 10.9, everything within this preprocessor
490 // block can be removed.
491 #if !defined(MAC_OS_X_VERSION_10_10) || \
492     MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10
493 
494 @interface CBUUID (YosemiteSDK)
495 - (NSString*)UUIDString;
496 @end
497 
498 @interface NSViewController (YosemiteSDK)
499 - (void)viewDidLoad;
500 @end
501 
502 @interface NSWindow (YosemiteSDK)
503 - (void)setTitlebarAppearsTransparent:(BOOL)flag;
504 @end
505 
506 #endif  // MAC_OS_X_VERSION_10_10
507 
508 // Once Chrome no longer supports OSX 10.10.2, everything within this
509 // preprocessor block can be removed.
510 #if !defined(MAC_OS_X_VERSION_10_10_3) || \
511     MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_10_3
512 
513 @interface NSEvent (YosemiteSDK)
514 @property(readonly) NSInteger stage;
515 @end
516 
517 @interface NSView (YosemiteSDK)
518 - (void)setPressureConfiguration:(NSPressureConfiguration*)aConfiguration;
519 @end
520 
521 #endif  // MAC_OS_X_VERSION_10_10
522 
523 // ----------------------------------------------------------------------------
524 // The symbol for kCWSSIDDidChangeNotification is available in the
525 // CoreWLAN.framework for OSX versions 10.6 through 10.10. The symbol is not
526 // declared in the OSX 10.9+ SDK, so when compiling against an OSX 10.9+ SDK,
527 // declare the symbol.
528 // ----------------------------------------------------------------------------
529 #if defined(MAC_OS_X_VERSION_10_9) && \
530     MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_9
531 BASE_EXPORT extern "C" NSString* const kCWSSIDDidChangeNotification;
532 #endif
533 #endif  // BASE_MAC_SDK_FORWARD_DECLARATIONS_H_
534