Chrome-Funktionen verstehen: Ein tiefgehender Blick in runtime_enabled_features.json5
Dieser Artikel beleuchtet die Datei runtime_enabled_features.json5
innerhalb des Blink-Rendering-Engins von Chromium. Sie erlernen ihre Struktur, Bedeutung und die verschiedenen Parameter, die steuern, wie experimentelle und stabile Funktionen in Chrome aktiviert werden.
Was ist runtime_enabled_features.json5
?
Die Datei runtime_enabled_features.json5
ist eine Konfigurationsdatei, die eine zentrale Rolle bei der Verwaltung von Funktionen im Blink-Rendering-Engine spielt. Sie dient als Schaltzentrale, die bestimmt, welche experimentellen oder stabilen Funktionen in verschiedenen Chrome-Konfigurationen aktiviert sein sollen. Dies ermöglicht eine flexible Steuerung und das Testen neuer Features ohne diese standardmäßig für alle Benutzer zu aktivieren.
Aufbau und Struktur der Konfigurationsdatei
Die Datei ist im JSON5-Format aufgebaut und gliedert sich in zwei Hauptbereiche:
parameters
: Definiert die gültigen Optionen und Einstellungen für die einzelnen Funktionen.data
: Enthält eine Liste von Feature-Definitionen, wobei jede Definition den Namen, den Status und weitere Eigenschaften einer spezifischen Funktion enthält.
Die Bedeutung des status
-Parameters
Der status
-Parameter ist entscheidend für die Aktivierung von Features. Er kann verschiedene Werte annehmen, die den Reifegrad und die Verfügbarkeit der Funktion bestimmen:
stable
: Die Funktion ist in allen Blink-Konfigurationen aktiviert und gilt als ausgereift.experimental
: Die Funktion ist in der Entwicklung und kann über die Chrome-Flags (chrome://flags
) aktiviert werden.test
: Die Funktion ist nur in ContentShell für Testzwecke aktiviert.
Der status
-Parameter kann auch plattformspezifisch definiert werden, z. B. um eine Funktion nur unter Android oder Windows zu aktivieren.
implied_by
und depends_on
: Feature-Abhängigkeiten verstehen
Diese Parameter definieren Beziehungen zwischen verschiedenen Features:
implied_by
: Wenn eines der in dieser Liste genannten Features aktiviert ist, wird das aktuelle Feature automatisch ebenfalls aktiviert.depends_on
: Das aktuelle Feature kann nur aktiviert werden, wenn alle in dieser Liste genannten Features bereits aktiviert sind.
Origin Trials: Funktionen zeitlich begrenzt testen
Der Parameter origin_trial_feature_name
ermöglicht die Integration von Funktionen in das Origin Trials Framework. Dadurch können Entwickler eine Funktion auf einer Pro-Page-Basis aktivieren, indem sie ein signiertes Token verwenden. Zusätzlich kann mit origin_trial_os
festgelegt werden, auf welchen Betriebssystemen die Origin Trial verfügbar ist.
Weitere wichtige Parameter im Detail
settable_from_internals
: Gibt an, ob eine Funktion überinternals.runtimeFlags
festgelegt werden kann.public
: Definiert, ob eine Funktion überthird_party/blink/public/platform/web_runtime_features.h
mit speziellen Methoden zugänglich ist.base_feature
: Verbindet das Feature mit einerbase::Feature
in C++, wodurch ein Killswitch über Finch ermöglicht wird.base_feature_status
: Hiermit kann der Standardwert der verknüpftenbase::Feature
Instanz überschrieben werden.copied_from_base_feature_if
: Steuert, wie der Wert des Blink-Features basierend auf dem Wert derbase::Feature
aktualisiert wird (z.B. "enabled_or_overridden", "overridden").
Beispiele für Feature-Definitionen
Hier sind einige Beispiele aus der data
-Sektion die verdeutlichen, wie Funktionen definiert werden:
Accelerated2dCanvas
: Eine stabile Funktion, die überinternals
aktiviert werden kann.AccessibilityAriaVirtualContent
: Eine experimentelle Funktion mit einer Public API undbase_feature: "none"
, die keine Verknüpfung zu einer C++base::Feature
hat.AdInterestGroupAPI
: Eine stabile Funktion, die durch Origin Trials gesteuert wird und vonFledge
undParakeet
impliziert wird.
Auswirkungen für Webentwickler und Chrome-Nutzer
Durch das Verständnis der runtime_enabled_features.json5
-Datei können Webentwickler besser nachvollziehen, welche experimentellen Funktionen verfügbar sind und wie sie aktiviert werden können. Chrome-Nutzer können über die Chrome-Flags (chrome://flags
) gezielt experimentelle Funktionen aktivieren, um neue Features auszuprobieren.
Fazit
Die runtime_enabled_features.json5
-Datei ist ein zentrales Element in der Entwicklung und Steuerung von Chrome-Funktionen. Sie bietet ein flexibles System zur Aktivierung und Deaktivierung von Features, wodurch experimentelle Entwicklungen getestet und stabile Funktionen verwaltet werden können. Das Verständnis dieser Datei ist für jeden, der sich mit der Entwicklung von Webbrowsern auseinandersetzt, von großem Vorteil.