Disambiguation
В Chrome есть две разные концепции, каждая из которых использует режим названия киоска.
- При запуске Chrome в качестве традиционного веб-браузера на настольной ОС (т. Е. Windows, Mac OS X, Linux) может быть передан аргумент командной строки
--kiosk
, в результате чего веб-браузер будет работать в так называемом режиме киоска.
- Приложение Chrome может объявить себя приложением Kiosk , а устройство ChromeOS может быть настроено для запуска этого приложения в режиме киоска.
Эти два понятия совершенно не связаны!
Чтобы избежать путаницы, я буду обозначать их соответственно как:
- режим рабочего стола и
- Режим киоска ChromeOS.
Этот вопрос задан для технического описания режима настольного киоска.
Режим ChromeOS Kiosk
Помните, что стратегия Google заключается в том, чтобы Chrome был механизмом доставки приложений.
Это гораздо более глубокая стратегия, чем просто «сделать лучший веб-браузер», и она дает информацию о многих дизайнерских решениях в Chrome.
Например, в отличие от других браузеров, Chrome не отображает элементы управления браузером (вперед / назад, адресную строку и т.д.) При работе в полноэкранном режиме Chrome. Запросы на добавление таких элементов управления отклоняются, поскольку они вступают в противоречие с целью создания многофункциональных веб-приложений, предоставляющих собственную навигационную метафору.
Режим киоска ChromeOS является официально поддерживаемой функцией и соответствует более широкой стратегии Google в этой области.
Вы можете найти техническую информацию об этом в Интернете; у функции есть метка в трекере проблем; люди, кажется, успешно создают программное обеспечение с его помощью.
Критически: вы можете рассуждать об этом, и есть ожидание, что он не внезапно сломается или исчезнет в следующей версии.
Режим настольного киоска
Несмотря на внешность, это не официально поддерживаемая функция.
Причина того, что в Интернете нет информации, заключается в том, что такой информации не существует.
Эта функция была первоначально принята как исправление в конце 2009 года (см. # 23145), чтобы имитировать существующую функцию в Internet Explorer.
Я просмотрел исходный код и обнаружил, что он в настоящее время делает (по крайней мере) эти вещи:
- заставить полноэкранный режим (и подавить уведомление «пузырь»)
- отключить инструменты разработчика
- отключить контекстное меню
- подавить запросы на дополнительные разрешения (например, местоположение)
Однако это также:
- не подавляет навигацию (назад / вперед) с помощью сочетания клавиш
- не подавляет действия буфера обмена с помощью сочетания клавиш
- не подавляет печать
- не подавляет масштабирование
- и т.п.
В основном нет определения того, как должен функционировать режим киоска рабочего стола (то есть нет формального анализа требований), это просто набор хаков 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
), которые увеличивают сложность, и средство отслеживания ошибок изобилует регрессиями в этой области.
Не делается попытки интеграции с API-интерфейсом киоска Mac OS X, который препятствовал бы доступу к док-станции и т.д.
Интересно, что вы не можете гарантировать, что находитесь даже в режиме киоска на рабочем столе, поскольку аргумент командной строки может завершиться сбоем (# 566496).
Наиболее тревожным аспектом является то, что у кода просто нет владельца. Просматривая комментарии к трекерам, большинство разработчиков, кажется, не знают, что режим киоска на рабочем столе даже существует! Это часто путают с режимом киоска ChromeOS с ошибками, помеченными неправильно. Он по-разному описывается как "не очень хорошо поддерживаемый", и даже есть предположение (# 470265), что его следует просто удалить. Единственный разработчик Chromium, который выражает смутную привязанность к этой функции, - это pkasting@chromium.org.
Я не начал смотреть на более интересные области, например:
- как это взаимодействует с безопасным просмотром?
- как это взаимодействует с расширениями Chrome?
- Что делать, если пользователь заходит на страницу с проблемой сертификата?
- как это влияет на механизм обновления программного обеспечения?
Заключение
Не используйте флаг --kiosk
(настольный режим киоска) в вашей системе.
- Вы не можете рассуждать о безопасности такой системы
- обновления Chrome могут сломать вашу систему
Если вы хотите использовать экосистему Chrome для построения системы киосков, лучше использовать ChromeOS.