在哪里可以找到有关 Chromium 的“信息亭模式”的技术描述?

在哪里可以找到有关 Chromium 的“信息亭模式”的技术描述?

我正在尝试评估通过命令行参数启用的 Chromium 的“信息亭模式”是否适合我的目的。

在哪里可以找到关于该论点效果的准确技术描述--kiosk

以下任何一项都会有帮助:

  • Chromium 源代码树中注释代码的链接
  • 官方维基页面或官方博客文章的链接
  • Chromium 问题跟踪器中问题的链接

谢谢

答案1

消歧义

Chrome 中有两个不同的概念,它们都使用名称信息亭模式

  1. 当在桌面操作系统(即 Windows、Mac OS X、Linux)上将 Chrome 作为传统 Web 浏览器运行时,可能会传递命令行参数--kiosk,导致 Web 浏览器以所谓的信息亭模式
  2. Chrome 应用可能会声明自己是自助服务终端应用程序并且 ChromeOS 设备可能配置为在信息亭模式

这两个概念完全不相关!

为了避免混淆,我将分别称它们为:

  1. 桌面信息亭模式, 和
  2. ChromeOS 信息亭模式

这个问题要求对桌面信息亭模式


ChromeOS 信息亭模式

请记住,Google 的策略是让 Chrome 成为应用程序的交付机制。

这是一个比简单的“制作更好的网络浏览器”更深层次的策略,它为 Chrome 中的许多设计决策提供了指导。

例如,与其他浏览器不同,Chrome 在全屏运行时不会显示浏览器控件(前进/后退、地址栏等)。添加此类控件的请求是拒绝因为它们与拥有丰富的 Web 应用程序提供自己的导航隐喻的目标相冲突。

ChromeOS 信息亭模式是官方支持的功能,并且与 Google 在该领域的更广泛战略一致。

您可以在网上找到关于它的技术信息;该功能在问题跟踪器中有一个标签;人们似乎正在成功地用它构建软件。

至关重要的是:您可以对其进行推理,并且期望它不会在下一个版本中突然中断或消失。


桌面信息亭模式

尽管表面上如此,但不是官方支持的功能。

网上找不到信息的原因是不存在此类信息

该功能最初于 2009 年底作为补丁被接受(参见#23145),以模仿 Internet Explorer 中的现有功能。

我浏览了源代码,发现它目前(至少)可以做这些事情:

  • 强制全屏(并抑制通知“气泡”)
  • 禁用开发人员工具
  • 禁用上下文菜单
  • 抑制额外权限请求(例如位置)

然而,它还:

  • 不抑制通过键盘快捷键导航(后退/前进)
  • 不通过键盘快捷键抑制剪贴板操作
  • 不抑制打印
  • 不抑制缩放
  • ETC。

基本上没有定义如何桌面信息亭模式应该发挥作用(即没有对需求进行正式的分析),它只是一堆散落在代码库中的 UI 黑客,显然很少有人拥有它们。

唯一的测试覆盖范围(仅在 Windows 上执行)是:

IN_PROC_BROWSER_TEST_F(KioskModeTest, MAYBE_EnableKioskModeTest) {
  // Check if browser is in fullscreen mode.
  ASSERT_TRUE(browser()->window()->IsFullscreen());
  ASSERT_FALSE(browser()->window()->IsFullscreenBubbleVisible());
}

因此,出现大量回归现象也就不足为奇了(例如#470265#552778) 版本之间。

没有任何要求,也没有测试覆盖,浏览器和操作系统之间的任何地方都可能出错,而且这个边界非常大。

输入法(屏幕键盘等)对于自助服务终端来说尤其有趣,但也存在一些倒退(例如#491516) 版本之间。

打印是一个特别糟糕的领域:有额外的命令行参数(例如--kiosk-printing--disable-print-preview),这会增加复杂性,并且错误跟踪器中充斥着该领域的回归。

没有尝试与 Mac OS X 的 kiosk API 集成,这会阻止访问 dock 等。

有趣的是,你甚至不能保证自己桌面信息亭模式,因为命令行参数可能会默默失败(#566496)。

最令人不安的是,代码根本没有所有者。查看问题跟踪器评论,大多数开发人员似乎不知道桌面信息亭模式甚至存在!它经常与ChromeOS 信息亭模式,错误被错误标记。它被描述为“没有得到很好的支持”,甚至有一个建议(#470265) 应该被删除。唯一一个对这个功能表示出模糊喜爱的 Chromium 开发人员是[电子邮件保护]

我还没有开始研究更有趣的领域,例如:

  • 它如何与安全浏览互动?
  • 它如何与 Chrome 扩展程序交互?
  • 如果用户访问的页面存在证书问题怎么办?
  • 它如何影响软件更新机制?

结论

不是使用--kiosk标志(桌面信息亭模式) 在您的系统中。

  • 你无法推断这种系统的安全性
  • Chrome 更新可能会破坏你的系统

如果您想利用Chrome生态系统来构建信息亭系统,使用ChromeOS似乎是更好的选择。

答案2

Chromium 的源代码是“已编入索引并可在网络上查阅“正是因为这个原因。”

使用代码搜索,您可以kiosk搜索整个项目

摘录自其中一篇首次搜索我用过你可能会感兴趣的,

  // In kiosk mode, we want to always be fullscreen, so switch to that now.
  if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode) ||
      base::CommandLine::ForCurrentProcess()->HasSwitch(
          switches::kStartFullscreen)) {
    // It's possible for there to be no browser window, e.g. if someone
    // specified a non-sensical combination of options
    // ("--kiosk --no_startup_window"); do nothing in that case.
    Browser* browser = BrowserList::GetInstance()->GetLastActive();
    if (browser)
      chrome::ToggleFullscreenMode(browser);
  }

相关内容