feat: route frame based permission checks through our permission check handler (#19903)
* feat: route frame based permission checks through our permission check handler * docs: add change to setPermissionCheckHandler to breaking changes doc
This commit is contained in:
parent
3db4e612f4
commit
771e34a53a
3 changed files with 70 additions and 17 deletions
|
@ -224,7 +224,12 @@ blink::mojom::PermissionStatus ElectronPermissionManager::GetPermissionStatus(
|
|||
content::PermissionType permission,
|
||||
const GURL& requesting_origin,
|
||||
const GURL& embedding_origin) {
|
||||
return blink::mojom::PermissionStatus::GRANTED;
|
||||
base::DictionaryValue details;
|
||||
details.SetString("embeddingOrigin", embedding_origin.spec());
|
||||
bool granted = CheckPermissionWithDetails(permission, nullptr,
|
||||
requesting_origin, &details);
|
||||
return granted ? blink::mojom::PermissionStatus::GRANTED
|
||||
: blink::mojom::PermissionStatus::DENIED;
|
||||
}
|
||||
|
||||
int ElectronPermissionManager::SubscribePermissionStatusChange(
|
||||
|
@ -247,13 +252,28 @@ bool ElectronPermissionManager::CheckPermissionWithDetails(
|
|||
return true;
|
||||
}
|
||||
auto* web_contents =
|
||||
content::WebContents::FromRenderFrameHost(render_frame_host);
|
||||
render_frame_host
|
||||
? content::WebContents::FromRenderFrameHost(render_frame_host)
|
||||
: nullptr;
|
||||
auto mutable_details =
|
||||
details == nullptr ? base::DictionaryValue() : details->Clone();
|
||||
mutable_details.SetStringKey("requestingUrl",
|
||||
render_frame_host->GetLastCommittedURL().spec());
|
||||
mutable_details.SetBoolKey("isMainFrame",
|
||||
render_frame_host->GetParent() == nullptr);
|
||||
if (render_frame_host) {
|
||||
mutable_details.SetStringKey(
|
||||
"requestingUrl", render_frame_host->GetLastCommittedURL().spec());
|
||||
}
|
||||
mutable_details.SetBoolKey(
|
||||
"isMainFrame",
|
||||
render_frame_host && render_frame_host->GetParent() == nullptr);
|
||||
switch (permission) {
|
||||
case content::PermissionType::AUDIO_CAPTURE:
|
||||
mutable_details.SetStringKey("mediaType", "audio");
|
||||
break;
|
||||
case content::PermissionType::VIDEO_CAPTURE:
|
||||
mutable_details.SetStringKey("mediaType", "video");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return check_handler_.Run(web_contents, permission, requesting_origin,
|
||||
mutable_details);
|
||||
}
|
||||
|
@ -263,7 +283,11 @@ ElectronPermissionManager::GetPermissionStatusForFrame(
|
|||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
const GURL& requesting_origin) {
|
||||
return blink::mojom::PermissionStatus::GRANTED;
|
||||
base::DictionaryValue details;
|
||||
bool granted = CheckPermissionWithDetails(permission, render_frame_host,
|
||||
requesting_origin, &details);
|
||||
return granted ? blink::mojom::PermissionStatus::GRANTED
|
||||
: blink::mojom::PermissionStatus::DENIED;
|
||||
}
|
||||
|
||||
} // namespace electron
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue