当前位置:   article > 正文

Chromium-UI项目调研学习(一)-UI术语及DevTools工具

Chromium-UI项目调研学习(一)-UI术语及DevTools工具

一、UI 术语:

  • AshChrome操作系统的窗口系统环境,负责非浏览器的用户界面,如登录屏幕、系统托盘和各种内置控制面版。与Chrome一样,Ash的用户界面也是使用Views工具包建立的。
  • Arua:一个跨平台的窗口管理器抽象,主要目标是提供一个跨平台的、高效的窗口管理系统,用于 macOS以外的桌面平台。 Aura 处理的任务包括显示屏幕上的窗口和响应本地输入事件。
  • AX " 可及性 " 的缩写。许多带有 "AX 前缀的不同类别参与了对视图的可及性信息的暴露。
  • Cocoa: macOS 上的应用环境。最初, Chrome for Mac 的用户界面完全是用 Cocoa编写的;现在大多数原生用户界面都使用视图,但 Cocoa 中仍有部分作品。
  • Combox :从一个选项列表中显示一个选定的选择,即组合框控件(选择下拉框)。
  • Compositor :一个负责为widget制作最终可显示图形的系统,给定一个视图层次结构。合成器管理一个层树,使其能够缓存、转换和混合各种图形层,从而最大限度地减少重新涂抹,加速滚动,并与底层显示刷新率同步动画。
  • HWND:特定窗口。一个系统原生窗口的不透明解决句柄,用于向各种 Windows 本地 API 传递。
  • Ink drop:实现对视图的悬停和点击效果的类的集合。使用动态创建的层来绘制半透明的覆盖物,这些覆盖物可能包含在视图的边界内或延伸到视图之外。
  • Focus Ring :当物体有焦点时,物体周围的彩色轮廓是可见的,当焦点消失时,物体是隐藏的。它通常是由FocusRing 对象绘制的,这是一个视图子类,可以处理沿着路径绘制彩色边界。在创建焦点环时,重要的是给它们着色,使它们与环内的颜色和环外的颜色形成对比。
  • Ink drop:实现对视图的悬停和点击效果的类的集合。使用动态创建的层来绘制半透明的覆盖物,这些覆盖物可能包含在视图的边界内或延伸到视图之外。
  • LaCrOS "Linux Chrome 操作系统 " 的缩写。
  • Layer :被 Compositor 用于管理纹理涂抹的对象树的一个节点。
  • Layout:一个视图设置其所有子节点的边界的操作。在一个View上调用InvalidateLayout()会递归地将View和所有祖先标记为dirty;然后在某个时刻,Widget::LayoutRootViewIfNecessary()会在
    RootView 上调用 Layout() ,它将在其内容上调用 Layout() ,以此类推在树上,进而通过覆盖虚拟 Layout()方法来实现视图的自定义布局。
  • NativeWidget :支持跨平台 Widget 对象的特定平台对象; Widget 通过调用 NativeWidget 上的方法来实现其API
  • NS* "NeXTSTEP " 的缩写。该类型是 macOS中一个长期存在的基本类型。
  • Omnibox :浏览器窗口工具栏中的组合搜索和地址栏。
  • Progressive Web App (PWA):一个可以提供各种类似本地应用程序功能的网站,如可安装性、与系统硬件的集成和 / 或持久性。
  • SkColor :一个 32bpp (每个通道 8 比特)的非预乘 ARGB 颜色值,存储为 uint32_t,是视图中与绘画和绘画 API 交互时最常见的颜色类型。
  • Skia Chrome 使用的二维图形库,提供硬件加速的绘图原语。
  • Skia Gold:一个用于比较像素测试结果图像与验证基线的网络应用程序。浏览器测试或交互式测试中的测试可以选择像素测试,然后产生由 Skia Gold 实例管理的结果图像。
  • Throbber :一个动画对象,用于向用户表示明确或不确定的进展。视图中的具体控制是一个 16 DIP的旋转圈。
  • Views (library) :一个用于创建 " 本地 "用户界面的跨平台用户界面工具包(相对于由网络技术建立的用户界面)。视图对 Chrome 浏览器和 Ash 中的 Chrome 操作系统本地用户界面都很重要。视图是在Chrome 的早期创建的,以抽象出对平台特定功能的调用,并使其有可能为多个操作系统建立Chrome 用户界面;与其他跨平台工具包如 wxWidgets GTK 不同,它旨在实现平台原生的感觉(特别是在Windows上)和最小的API,旨在完成Chrome的需要。
  • View (class) :用于表示 UI的对象树中的一个节点。一个视图有矩形的边界,一个(可能是空的)子视图集,以及一个大的 API集,以允许交互和扩展。它的主要目标是抽象出用户的互动,并将数据呈现给浏览器进行显示。
  • Widget :代表视图工具包中的 " 窗口 "的跨平台抽象。它是视图库和操作系统平台之间的网关。每个小工具正好包含一个 RootView 对象,该对象持有一个代表该窗口中用户界面的视图层次。 Widget是由一个特定平台的 NativeWidget 轮流实现的。

二、UI 两大类型:

  • Content Area (UI in a Tab)
    • 内容区域的UI,使用HTML实现,此HTML可以是WebUI,也可以是与Chrome相关的HTMLJS
  • Non-Content Area (UI in Popups or in Chrome’s Chrome)-Native UI
    • 内容区域之外的 UI 应使用 Windows/Linux/ChromeOS Views (在 C++ 中)实现。
    • 由Browser 进程管理,如浏览器上部分的各种UI(缩小、放大、关闭、回退等)
      Native UI 通过 UI DevTools 查看和调试,对比前端开发的 Web HTML 是使用 Devtools 来查看和调试。即 Native UI chromium 、或使用 chromium 内核的 Web APP 方绘制的,通过 UI Devtools 查看 和调试。而 Web content 是前端 绘制的,通过 Devtools 查看和调试。浏览器下部分的 Content 部分才是 Renderer 进程管理。
inspect Native UI
  • chrome://flags/ : enable ui-debug-tools, 才可以使用inspect Native UI
    • Debugging tools for UI :打开 Native UI 。用于 inspect Native UI。

  • 重启浏览器后可以在 chrome://inspect 看到 chrome://inspect/#native-ui,随后直接 inspect Native UI 即可。

  • UI DevTools 可以 检查 Native UI,并可以实时更改并显示。
    • inspect mode 下,悬停Native UI处就可以显示对应的元素节点。
    • 点击就会固定节点,对应的节点的点击就会 显示其属性。
  • Source panel
    • 每个属性的右上角可以打开对应源文件,右键可以打开整个 类头文件,左键可以在Sources 面板打开来自本地文件的源码。
  • UI Element Tree SearchCtrl+F 可以打开搜索栏搜索element树 或者 元素的样式属性。
Content UI
  • 打开DevTools工具(浏览器内按F12)。
  • URL 内输入特定的 chromium 定制网页如 chrome://settings/ ,选择 select 工具(右上角红
    圈)选择 webui 里的 icon 图标,在 Sytle 里面可以看到文件的名字。

  • 找寻本地工程下的 chrome_logo_dark.svg 文件进行替换后重新编译即可

三、利用DevTools完成Chromium中WebContent页面版本号:

  • 打开指定页面,以 chrome://settings/ 为例,按下F12打开DevTools后进入Source目录,可以看到 这个页面下的相关web文件。
  • 打开指定页面,还是以 chrome://settings/ 为例,按下F12打开DevTools后进入Source目录,可以看到 这个页面下的相关web文件。
  • 修改本地工程下该html文件。
  1. ...
  2. <settings-section page-title="竹园餐厅" section="about">
  3. <div class="cr-row two-line first">
  4. <img id="product-logo" on-click="onProductLogoClick_"
  5. srcset="chrome://theme/current-channel-logo@1x 1x,
  6. chrome://theme/current-channel-logo@2x 2x"
  7. alt="竹园餐厅"
  8. role="presentation">
  9. <div class="product-title">竹园餐厅</div>
  10. </div>
  11. <div class="cr-row two-line">
  12. ...
  13. <div class="secondary">1.1.1.1(开发者内部版本)</div>
  14. </div>
  15. ...
  16. <cr-link-row class="hr" id="help" on-click="onHelpClick_"
  17. label="竹园餐厅"
  18. external></cr-link-row>
  19. ...
  20. <settings-section>
  21. <div class="info-sections">
  22. <div class="info-section">
  23. <div class="secondary">竹园餐厅</div>
  24. <div class="secondary">版权待定</div>
  25. </div>
  26. <div class="info-section">
  27. <div class="secondary">竹园餐厅1.1.1.1</div>
  • 菜单修改,对左侧菜单栏中的内容进行修改,在DevTools中的 Source 中的 settings_menu.html.js 中可以看到左侧菜单栏的内容
  • 修改本地工程下该html文件。
  • 进入该文件,修改代码中和chromium相关的内容,如下所示。
  1. ...
  2. <a role="menuitem"
  3. id="people" href="/people" hidden="[[!pageVisibility.people]]"
  4. class="cr-nav-menu-item">
  5. <iron-icon icon="cr:person"></iron-icon>
  6. 您与竹园餐厅
  7. <paper-ripple></paper-ripple>
  8. </a>
  9. ...
  10. <a role="menuitem" id="about-menu" href="/help"
  11. class="cr-nav-menu-item">
  12. <span id="aboutIcon" class="cr-icon" role="presentation"></span>
  13. 关于竹园餐厅
  14. <paper-ripple></paper-ripple>
  15. </a>
  16. ...
  • 执行编译。

 
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/363856
推荐阅读
相关标签
  

闽ICP备14008679号