追記 20180918
Chromeではこういう形で実装されました (W3Cで提案されているものとは別物)
asnokaze.hatenablog.com
Permission Delegation To Embedded Web Applications
iframeで埋め込まれたクロスオリジンのWebアプリケーションがPermissionを要求するとこともあります、しかしユーザにとっても分かりづらく、扱いづらい点があります。Googleの調査でも、ユーザはiframe内のアプリケーションによるPermission要求を正しく理解していないという結果が出ているようです。
W3Cでは、公式のドキュメントにはなってませんが、「Permission Delegation To Embedded Web Applications」という、 iframeなどで埋め込まれたWebアプリケーションへのPermission委譲の仕様が議論されています。Chromeでも実装への議論がメーリングリスト上で行なわれています。
基本的に、埋め込む側がPermissionを保持し、そのPermissionを埋め込まれた側に委譲する仕組みです。こうすることで、ユーザとしてもどのオリジンにPermissionを許可しているか分かりやすくなります。ブラウザがPermissionを記憶したり解除する際もiframeを埋め込んでいるオリジンの管理だけで良くなりますし、管理画面も分かりやすくなるでしょう。
さらに、今までは埋め込まれる側がPermissionを要求することを規制できませんでしたが、委譲方式をとることで埋め込む側がコントロールできるようになります。
ただし、互換性の問題や、ユーザは今まで通り自身でPermission管理を行いたいという要望もあるかもしれません。
委譲方法
委譲方法は、iframeの属性に指定する方法と、JavaScriptから実行する方法があります。
以下の通り、permissionsに要求するpermissionを指定することで委譲することが出来ます。
<iframe id="embedee" src="https://maps.example.com/" permissions="geolocation"></iframe>
また、Javascriptからnavigator.permissions.delegateと実行することで指定されたiframeにPermissionを委譲出来ます。
var iframe = document.getElementById('embedee'); navigator.permissions.delegate({embedee: iframe, name: 'geolocation'}).then( function() { // Delegated geolocation. }).catch(function() { // Delegation failed. });
JavaScriptからは委譲を辞めることも出来ます。
navigator.permissions.undelegate({embedee: iframe, name: 'geolocation'});