There are a large number of different mechanisms for enabling and disabling features in Blink. As far as possible, the differences between these should be reconciled, and we can separate the code which performs the enabling/disabling from the code which determines *which* features to enable/disable and when.
At a very high level, there are just two kinds of features: Those which are context-independent, which should be turned on (or not) in every document in every renderer; and those which are context-dependent, and are enabled or disabled based on the requirements of a given origin or document (or other factor of the execution context itself).
The first kind includes things like runtime-enabled features, finch-controlled features. The second includes origin trials, feature policy, [SecureContext] and interventions.
Proposal doc:
https://docs.google.com/document/d/1PHkCEyfUKwhoJEiRwcio9JWU5xQ1OuvIRb8enSbfYxY/edit
Comment 1 by iclell...@chromium.org
, Aug 10 2017