1 // Copyright 2014 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 #ifndef UI_BASE_COCOA_REMOTE_LAYER_API_H_ 6 #define UI_BASE_COCOA_REMOTE_LAYER_API_H_ 7 8 #if defined(__OBJC__) 9 #import <Cocoa/Cocoa.h> 10 #endif // __OBJC__ 11 12 #include "ui/base/ui_base_export.h" 13 14 // The CGSConnectionID is used to create the CAContext in the process that is 15 // going to share the CALayers that it is rendering to another process to 16 // display. 17 extern "C" { 18 typedef uint32_t CGSConnectionID; 19 CGSConnectionID CGSMainConnectionID(void); 20 }; 21 22 // The CAContextID type identifies a CAContext across processes. This is the 23 // token that is passed from the process that is sharing the CALayer that it is 24 // rendering to the process that will be displaying that CALayer. 25 typedef uint32_t CAContextID; 26 27 #if defined(__OBJC__) 28 29 // The CAContext has a static CAContextID which can be sent to another process. 30 // When a CALayerHost is created using that CAContextID in another process, the 31 // content displayed by that CALayerHost will be the content of the CALayer 32 // that is set as the |layer| property on the CAContext. 33 @interface CAContext : NSObject 34 + (id)contextWithCGSConnection:(CAContextID)contextId 35 options:(NSDictionary*)optionsDict; 36 @property(readonly) CAContextID contextId; 37 @property(retain) CALayer *layer; 38 @end 39 40 // The CALayerHost is created in the process that will display the content 41 // being rendered by another process. Setting the |contextId| property on 42 // an object of this class will make this layer display the content of the 43 // CALayer that is set to the CAContext with that CAContextID in the layer 44 // sharing process. 45 @interface CALayerHost : CALayer 46 @property CAContextID contextId; 47 @end 48 49 #endif // __OBJC__ 50 51 namespace ui { 52 53 // This function will check if all of the interfaces listed above are supported 54 // on the system, and return true if they are. 55 bool UI_BASE_EXPORT RemoteLayerAPISupported(); 56 57 } // namespace ui 58 59 #endif // UI_BASE_COCOA_REMOTE_LAYER_API_H_ 60