コマンドライン引数で有効にしたChromiumの「kioskモード」が私の目的に適しているかどうかを評価しようとしています。
--kiosk
引数の効果に関する正確な技術的説明はどこにありますか?
これらのいずれかが役立ちます:
ありがとう
Chromeには2つの異なる概念があり、どちらも名前kioskモードを使用します。
--kiosk
が渡され、Webブラウザがで実行される場合があります。いわゆるkioskモード。これらの2つの概念は完全に無関係です!
混乱を避けるために、私はそれらをそれぞれ次のように呼びます。
この質問では、デスクトップキオスクモードの技術的な説明を求めました。
Googleの戦略は、Chromeをアプリの配信メカニズムにすることです。
これは、単に「より優れたWebブラウザーを作成する」よりもはるかに深い戦略であり、Chromeの設計上の決定の多くに情報を提供します。
たとえば、他のブラウザとは異なり、Chromeをフルスクリーンで実行している場合、Chromeはブラウザコントロール(進む/戻る、アドレスバーなど)を表示しません。このようなコントロールを追加するリクエストは 拒否 です。これは、リッチWebアプリケーションが独自のナビゲーションメタファーを提供するという目標と矛盾するためです。
ChromeOSキオスクモードは公式にサポートされている機能であり、この分野でのGoogleのより広範な戦略と一致しています。
あなたはそれに関する技術情報をウェブ上で見つけることができます。この機能には、課題トラッカーにラベルがあります。人々はそれを使ってソフトウェアをうまく構築しているようです。
批判的に:あなたはそれについて推論することができます、そしてそれが次のバージョンで突然壊れたり消えたりしないという期待があります。
見た目にもかかわらず、これは公式にサポートされている機能ではありません。
オンラインで情報が見つからない理由は、そのような情報が存在しないためです。
この機能は、Internet Explorerの既存の機能を模倣するために、2009年後半にパッチとして最初に受け入れられました( #23145を参照 )。
私はソースコードを閲覧し、現在(少なくとも)次のことを行っていることを発見しました。
ただし、次のこともあります。
基本的にデスクトップキオスクモードがどのように機能するかについての定義はありません(つまり、要件の正式な分析はありません) 、それは明らかに所有権がほとんどないコードベースに横たわっている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のキオスクAPIと統合する試みはありません。これにより、ドックなどへのアクセスが妨げられます。
興味深いことに、コマンドライン引数がサイレントに失敗する可能性があるため、デスクトップキオスクモードであることを保証することはできません( #566496 )。
最も厄介な側面は、コードに所有者がいないことです。課題追跡システムのコメントを見ると、ほとんどの開発者はデスクトップキオスクモードが存在することさえ知らないようです! ChromeOSキオスクモードと混同されることが多く、バグのラベルが誤っています。 「十分にサポートされていない」とさまざまに説明されており、単に削除する必要があるという提案( #470265 )もあります。この機能に対する漠然とした愛情を表現する唯一のChromiumdev 'は [email protected] です。
私はもっと興味深い分野を見始めていません。例:
システムで--kiosk
フラグ(デスクトップキオスクモード)を使用しないしない。
Chromeエコシステムを使用してキオスクシステムを構築する場合は、ChromeOSを使用することをお勧めします。
Chromiumのソースコードは、 " インデックスが作成され、Webで入手可能 "です。これがまさにこの理由によるものです。
コード検索 を使用すると、 プロジェクト全体 に対してkiosk
を検索できます。
最初の検索 私が使用したものの1つの抜粋で、興味があるかもしれませんが、
// 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);
}