Client API

The Aura Client API is an API Aura uses to communicate with the client application using the Aura system. Since Aura is very simple, providing just basic window and event types, there are many details it cannot know about directly. It delegates some functionality to its client (such as window stacking) and also provides the client API as a conduit for users of Aura to communicate with the embedding environment.

 
For example, Aura does not implement tooltips directly, these are a feature implemented by an client application. The Client API has knowledge of tooltips however so that a system like Views (which depends on Aura) can specify tooltip parameters. The client application can interpret this data and show the relevant UI.
 
The Aura Window class supports opaque properties, and a list of well known keys is provided as part of the Client API.
 
In the ChromeOS Desktop Window Manager, the Aura Client is a component known as the "Aura Shell" or "Ash":
 
A breakdown of responsibility between Aura and the Aura Shell (as implemented for ChromeOS):

Aura

  1. Basic window type and hierarchy
  2. Event dispatch
  3. Compositor integration
  4. Client API

Aura Shell

  1. "Window Manager" features like:
    1. Window dragging and resizing
    2. Transient and modal windows
    3. Maximize/Restore/Full Screen
    4. Tooltips
    5. Drag and drop
    6. Window embellishments like shadows
    7. Window stacking
    8. Advanced layout heuristics
  2. Shell features like:
    1. Application launcher(s)
    2. Customizable desktop background
    3. Global keyboard shortcuts
    4. Login/lock screens, screen savers, etc.

The Aura Shell implements the Aura Client API, and uses Aura and Views to achieve all of this.

 
In the diagram above, I show a second Aura Client API implementation. This is what we will end up with when we transition Desktop Chrome on Windows to use the Aura system, sometime in 2012. This will allow us to hardware accelerate our UI.
 
With this in mind, it is important to keep the Aura layer of the framework clean and simple, since much of the ChromeOS DWM functionality and feature set is not relevant to desktop Chrome, just the basic windowing primitives

最新文章

  1. 170106、用9种办法解决 JS 闭包经典面试题之 for 循环取 i
  2. GoLang语言
  3. POJ1986 Distance Queries (LCA)(倍增)
  4. [转载]ExtJs4 笔记(6) Ext.MessageBox 消息对话框
  5. 面试官的七种武器:Java篇
  6. (转)用AGG实现高质量图形输出(二)
  7. RegisterClientScriptBlock CommandName 模块列 操作完成 提示
  8. Effective MySQL之备份与恢复
  9. 移动端默认返回按键,使用h5+修改默认事件
  10. k-临近算法学习
  11. Uni-app事件处理
  12. 重建docker实例
  13. scala mkstring
  14. docker仓库harbor搭建
  15. Linux基本的命令使用2018-4-20 18:47:28
  16. 树莓派+tomcat+mysql安装及配置
  17. itext汇总 生成pdf
  18. 分析redis key大小的几种方法
  19. 2017-2018-1 20155231 《信息安全系统设计基础》实现mypwd
  20. UML实践

热门文章

  1. NOIP2017提高组模拟赛 8(总结)
  2. Bringing up the Avnet MicroZed with Vivado
  3. python 3.x 学习笔记8 (os模块及xml修改)
  4. Android ViewPager 动画效果
  5. jquery动态表格,动态添加表格行
  6. 【原创】MemCached中的参数解释
  7. 路飞学城Python-Day7(practise)
  8. php nusoap类的使用、用法、出错 及说明
  9. BZOJ 1190 [HNOI2007]梦幻岛宝珠(背包)
  10. BZOJ 1085 / LOJ 2151 [SCOI2005]骑士精神 (剪枝/A*迭代搜索)