Home | History | Annotate | Download | only in cocoa
      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