This involves:
1. Adding a Mojo service (EngagementService) that is exposed on RenderFrames from the browser process.
2. Making the VibrationController query the EngagementService via its frame() object over Mojo whether it is allowed to vibrate.
3. Gating the EngagementService check on a feature using the Feature API (must be explicitly enabled)
4. Allowing the engagement threshold at which vibration is permitted to be tuned using Variations
Comment 1 by dominickn@chromium.org
, Oct 13 2016