Link to 'Permissions-Policy' header from FrameDetailsView
If a feature is disabled by a 'permissions-policy' or 'feature-policy'
header, display a link from the frame details' permission-policy section
pointing directly to this header in the network panel.
Video: https://i.imgur.com/OmiXv4z.mp4
Bug: 1158827
Change-Id: I18c86fffeee6cc905d5b22041ea8ddf4f480df3e
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2810283
Commit-Queue: Wolfgang Beyer <[email protected]>
Reviewed-by: Sigurd Schneider <[email protected]>
diff --git a/front_end/panels/application/FrameDetailsView.ts b/front_end/panels/application/FrameDetailsView.ts
index c48cba0..a7546f9 100644
--- a/front_end/panels/application/FrameDetailsView.ts
+++ b/front_end/panels/application/FrameDetailsView.ts
@@ -414,6 +414,20 @@
i18nString(UIStrings.disabledByIframe) :
blockReason === Protocol.Page.PermissionsPolicyBlockReason.Header ? i18nString(UIStrings.disabledByHeader) :
'';
+ const revealHeader = async(): Promise<void> => {
+ if (!linkTargetRequest) {
+ return;
+ }
+ const headerName =
+ linkTargetRequest.responseHeaderValue('permissions-policy') ? 'permissions-policy' : 'feature-policy';
+ const requestLocation = Network.NetworkSearchScope.UIRequestLocation.responseHeaderMatch(
+ linkTargetRequest,
+ {name: headerName, value: ''},
+ );
+ // TODO(crbug.com/1196676) Refactor to use Common.Revealer
+ await Network.NetworkPanel.RequestLocationRevealer.instance().reveal(requestLocation);
+ };
+
return LitHtml.html`
<div class="permissions-row">
<div>
@@ -433,12 +447,11 @@
(): Promise<void> => Common.Revealer.reveal(linkTargetDOMNode),
) :
LitHtml.nothing}
- ${
+ ${
linkTargetRequest ? this.renderIconLink(
'network_panel_icon',
i18nString(UIStrings.clickToShowHeader),
- (): Promise<void> => Network.NetworkPanel.NetworkPanel.selectAndShowRequest(
- linkTargetRequest, Network.NetworkItemView.Tabs.Headers),
+ revealHeader,
) :
LitHtml.nothing}
</div>