Add GPSForCurrentDocument() into PermissionControllerDelegate.
As part of the Permission API hardening go/permissions-api-hardening GetPermissionStatusForCurrentDocument was previously added in PermissionController. This CL adds GetPermissionStatusForCurrentDocument into all PermissionControllerDelegate implementations. Bug: 1271543 Change-Id: I4d5549aba621891e0745866e739fafbc1b142038 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3525774 Reviewed-by: Arthur Sonzogni <arthursonzogni@chromium.org> Reviewed-by: Andy Paicu <andypaicu@chromium.org> Reviewed-by: Sergey Ulanov <sergeyu@chromium.org> Reviewed-by: Sean Topping <seantopping@chromium.org> Reviewed-by: Michael Bai <michaelbai@chromium.org> Reviewed-by: Andrey Kosyakov <caseq@chromium.org> Commit-Queue: Illia Klimov <elklm@chromium.org> Cr-Commit-Position: refs/heads/main@{#983759}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
4ad3c55fc5
commit
f28428456b
android_webview/browser
chromecast/browser
components/permissions
content
browser
android
font_access
idle
permissions
public
shell
web_test
fuchsia/engine/browser
headless/lib/browser
@ -467,6 +467,15 @@ PermissionStatus AwPermissionManager::GetPermissionStatusForFrame(
|
||||
render_frame_host));
|
||||
}
|
||||
|
||||
PermissionStatus AwPermissionManager::GetPermissionStatusForCurrentDocument(
|
||||
PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
return GetPermissionStatus(
|
||||
permission, render_frame_host->GetLastCommittedOrigin().GetURL(),
|
||||
permissions::PermissionUtil::GetLastCommittedOriginAsURL(
|
||||
render_frame_host));
|
||||
}
|
||||
|
||||
AwPermissionManager::SubscriptionId
|
||||
AwPermissionManager::SubscribePermissionStatusChange(
|
||||
PermissionType permission,
|
||||
|
@ -53,6 +53,9 @@ class AwPermissionManager : public content::PermissionControllerDelegate {
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
const GURL& requesting_origin) override;
|
||||
blink::mojom::PermissionStatus GetPermissionStatusForCurrentDocument(
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host) override;
|
||||
SubscriptionId SubscribePermissionStatusChange(
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
|
@ -168,6 +168,15 @@ CastPermissionManager::GetPermissionStatusForFrame(
|
||||
requesting_origin);
|
||||
}
|
||||
|
||||
blink::mojom::PermissionStatus
|
||||
CastPermissionManager::GetPermissionStatusForCurrentDocument(
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
return GetPermissionStatusInternal(
|
||||
permission, render_frame_host,
|
||||
render_frame_host->GetLastCommittedOrigin().GetURL());
|
||||
}
|
||||
|
||||
CastPermissionManager::SubscriptionId
|
||||
CastPermissionManager::SubscribePermissionStatusChange(
|
||||
content::PermissionType permission,
|
||||
|
@ -48,6 +48,9 @@ class CastPermissionManager : public content::PermissionControllerDelegate {
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
const GURL& requesting_origin) override;
|
||||
blink::mojom::PermissionStatus GetPermissionStatusForCurrentDocument(
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host) override;
|
||||
SubscriptionId SubscribePermissionStatusChange(
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
|
@ -575,6 +575,14 @@ PermissionStatus PermissionManager::GetPermissionStatusForFrame(
|
||||
return ContentSettingToPermissionStatus(result.content_setting);
|
||||
}
|
||||
|
||||
PermissionStatus PermissionManager::GetPermissionStatusForCurrentDocument(
|
||||
PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
return GetPermissionStatusForFrame(
|
||||
permission, render_frame_host,
|
||||
render_frame_host->GetLastCommittedOrigin().GetURL());
|
||||
}
|
||||
|
||||
bool PermissionManager::IsPermissionOverridableByDevTools(
|
||||
content::PermissionType permission,
|
||||
const absl::optional<url::Origin>& origin) {
|
||||
|
@ -142,6 +142,9 @@ class PermissionManager : public KeyedService,
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
const GURL& requesting_origin) override;
|
||||
blink::mojom::PermissionStatus GetPermissionStatusForCurrentDocument(
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host) override;
|
||||
bool IsPermissionOverridableByDevTools(
|
||||
content::PermissionType permission,
|
||||
const absl::optional<url::Origin>& origin) override;
|
||||
|
@ -53,8 +53,8 @@ TEST_F(NFCHostTest, GetNFCTwice) {
|
||||
|
||||
NavigateAndCommit(GURL(kTestUrl));
|
||||
|
||||
EXPECT_CALL(mock_permission_manager(),
|
||||
GetPermissionStatusForFrame(PermissionType::NFC, main_rfh(), _))
|
||||
EXPECT_CALL(mock_permission_manager(), GetPermissionStatusForCurrentDocument(
|
||||
PermissionType::NFC, main_rfh()))
|
||||
.WillOnce(Return(blink::mojom::PermissionStatus::GRANTED))
|
||||
.WillOnce(Return(blink::mojom::PermissionStatus::GRANTED));
|
||||
EXPECT_CALL(mock_permission_manager(),
|
||||
|
@ -28,4 +28,11 @@ TestFontAccessPermissionManager::GetPermissionStatusForFrame(
|
||||
return permission_status_for_frame_;
|
||||
}
|
||||
|
||||
blink::mojom::PermissionStatus
|
||||
TestFontAccessPermissionManager::GetPermissionStatusForCurrentDocument(
|
||||
PermissionType permission,
|
||||
RenderFrameHost* render_frame_host) {
|
||||
return permission_status_for_frame_;
|
||||
}
|
||||
|
||||
} // namespace content
|
||||
|
@ -34,6 +34,10 @@ class TestFontAccessPermissionManager : public MockPermissionManager {
|
||||
RenderFrameHost* render_frame_host,
|
||||
const GURL& requesting_origin) override;
|
||||
|
||||
blink::mojom::PermissionStatus GetPermissionStatusForCurrentDocument(
|
||||
PermissionType permission,
|
||||
RenderFrameHost* render_frame_host) override;
|
||||
|
||||
void SetRequestCallback(
|
||||
base::RepeatingCallback<void(PermissionCallback)> request_callback) {
|
||||
request_callback_ = std::move(request_callback);
|
||||
|
@ -109,8 +109,8 @@ class IdleManagerTest : public RenderViewHostTestHarness {
|
||||
|
||||
void SetPermissionStatus(blink::mojom::PermissionStatus permission_status) {
|
||||
ON_CALL(*permission_manager_,
|
||||
GetPermissionStatusForFrame(PermissionType::IDLE_DETECTION,
|
||||
main_rfh(), url_))
|
||||
GetPermissionStatusForCurrentDocument(
|
||||
PermissionType::IDLE_DETECTION, main_rfh()))
|
||||
.WillByDefault(Return(permission_status));
|
||||
}
|
||||
|
||||
|
@ -100,7 +100,7 @@ void MergeOverriddenAndDelegatedResults(
|
||||
full_results.reserve(overridden_results.size());
|
||||
auto delegated_it = delegated_results.begin();
|
||||
for (auto& status : overridden_results) {
|
||||
if (!status.has_value()) {
|
||||
if (!status) {
|
||||
CHECK(delegated_it != delegated_results.end());
|
||||
status.emplace(*delegated_it++);
|
||||
}
|
||||
@ -350,7 +350,7 @@ PermissionControllerImpl::DeprecatedGetPermissionStatus(
|
||||
absl::optional<blink::mojom::PermissionStatus> status =
|
||||
devtools_permission_overrides_.Get(url::Origin::Create(requesting_origin),
|
||||
permission);
|
||||
if (status.has_value())
|
||||
if (status)
|
||||
return *status;
|
||||
|
||||
PermissionControllerDelegate* delegate =
|
||||
@ -374,9 +374,18 @@ blink::mojom::PermissionStatus
|
||||
PermissionControllerImpl::GetPermissionStatusForCurrentDocument(
|
||||
PermissionType permission,
|
||||
RenderFrameHost* render_frame_host) {
|
||||
return GetPermissionStatusForFrame(
|
||||
permission, render_frame_host,
|
||||
render_frame_host->GetLastCommittedOrigin().GetURL());
|
||||
absl::optional<blink::mojom::PermissionStatus> status =
|
||||
devtools_permission_overrides_.Get(
|
||||
render_frame_host->GetLastCommittedOrigin(), permission);
|
||||
if (status)
|
||||
return *status;
|
||||
|
||||
PermissionControllerDelegate* delegate =
|
||||
browser_context_->GetPermissionControllerDelegate();
|
||||
if (!delegate)
|
||||
return blink::mojom::PermissionStatus::DENIED;
|
||||
return delegate->GetPermissionStatusForCurrentDocument(permission,
|
||||
render_frame_host);
|
||||
}
|
||||
|
||||
blink::mojom::PermissionStatus
|
||||
@ -395,7 +404,7 @@ PermissionControllerImpl::GetPermissionStatusForFrame(
|
||||
absl::optional<blink::mojom::PermissionStatus> status =
|
||||
devtools_permission_overrides_.Get(url::Origin::Create(requesting_origin),
|
||||
permission);
|
||||
if (status.has_value())
|
||||
if (status)
|
||||
return *status;
|
||||
|
||||
PermissionControllerDelegate* delegate =
|
||||
|
@ -64,11 +64,21 @@ class CONTENT_EXPORT PermissionControllerDelegate {
|
||||
// TODO(raymes): Currently we still pass the |requesting_origin| as a separate
|
||||
// parameter because we can't yet guarantee that it matches the last committed
|
||||
// origin of the RenderFrameHost. See https://crbug.com/698985.
|
||||
// Deprecated. Use `GetPermissionStatusForCurrentDocument` instead.
|
||||
virtual blink::mojom::PermissionStatus GetPermissionStatusForFrame(
|
||||
PermissionType permission,
|
||||
RenderFrameHost* render_frame_host,
|
||||
const GURL& requesting_origin) = 0;
|
||||
|
||||
// Returns the permission status for the current document in the given
|
||||
// RenderFrameHost. Use this over `GetPermissionStatusForFrame` and
|
||||
// `GetPermissionStatus` whenever possible as this API takes into account the
|
||||
// lifecycle state of a given document (i.e. whether it's in back-forward
|
||||
// cache or being prerendered) in addition to its origin.
|
||||
virtual blink::mojom::PermissionStatus GetPermissionStatusForCurrentDocument(
|
||||
PermissionType permission,
|
||||
RenderFrameHost* render_frame_host) = 0;
|
||||
|
||||
// Sets the permission back to its default for the requesting_origin/
|
||||
// embedding_origin tuple.
|
||||
virtual void ResetPermission(PermissionType permission,
|
||||
|
@ -35,6 +35,10 @@ class MockPermissionManager : public PermissionControllerDelegate {
|
||||
PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
const GURL& requesting_origin));
|
||||
MOCK_METHOD2(GetPermissionStatusForCurrentDocument,
|
||||
blink::mojom::PermissionStatus(
|
||||
PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host));
|
||||
void RequestPermission(
|
||||
PermissionType permission,
|
||||
RenderFrameHost* render_frame_host,
|
||||
|
@ -145,6 +145,18 @@ ShellPermissionManager::GetPermissionStatusForFrame(
|
||||
content::WebContents::FromRenderFrameHost(render_frame_host)));
|
||||
}
|
||||
|
||||
blink::mojom::PermissionStatus
|
||||
ShellPermissionManager::GetPermissionStatusForCurrentDocument(
|
||||
PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
if (render_frame_host->IsNestedWithinFencedFrame())
|
||||
return blink::mojom::PermissionStatus::DENIED;
|
||||
return GetPermissionStatus(
|
||||
permission, render_frame_host->GetLastCommittedOrigin().GetURL(),
|
||||
permissions::PermissionUtil::GetLastCommittedOriginAsURL(
|
||||
render_frame_host));
|
||||
}
|
||||
|
||||
ShellPermissionManager::SubscriptionId
|
||||
ShellPermissionManager::SubscribePermissionStatusChange(
|
||||
PermissionType permission,
|
||||
|
@ -46,6 +46,9 @@ class ShellPermissionManager : public PermissionControllerDelegate {
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
const GURL& requesting_origin) override;
|
||||
blink::mojom::PermissionStatus GetPermissionStatusForCurrentDocument(
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host) override;
|
||||
SubscriptionId SubscribePermissionStatusChange(
|
||||
PermissionType permission,
|
||||
RenderFrameHost* render_frame_host,
|
||||
|
@ -156,6 +156,19 @@ WebTestPermissionManager::GetPermissionStatusForFrame(
|
||||
.DeprecatedGetOriginAsURL());
|
||||
}
|
||||
|
||||
blink::mojom::PermissionStatus
|
||||
WebTestPermissionManager::GetPermissionStatusForCurrentDocument(
|
||||
PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
if (render_frame_host->IsNestedWithinFencedFrame())
|
||||
return blink::mojom::PermissionStatus::DENIED;
|
||||
return GetPermissionStatus(
|
||||
permission, render_frame_host->GetLastCommittedOrigin().GetURL(),
|
||||
content::WebContents::FromRenderFrameHost(render_frame_host)
|
||||
->GetLastCommittedURL()
|
||||
.DeprecatedGetOriginAsURL());
|
||||
}
|
||||
|
||||
WebTestPermissionManager::SubscriptionId
|
||||
WebTestPermissionManager::SubscribePermissionStatusChange(
|
||||
PermissionType permission,
|
||||
|
@ -56,6 +56,9 @@ class WebTestPermissionManager
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
const GURL& requesting_origin) override;
|
||||
blink::mojom::PermissionStatus GetPermissionStatusForCurrentDocument(
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host) override;
|
||||
SubscriptionId SubscribePermissionStatusChange(
|
||||
PermissionType permission,
|
||||
RenderFrameHost* render_frame_host,
|
||||
|
@ -81,6 +81,16 @@ WebEnginePermissionDelegate::GetPermissionStatusForFrame(
|
||||
permission, url::Origin::Create(requesting_origin));
|
||||
}
|
||||
|
||||
blink::mojom::PermissionStatus
|
||||
WebEnginePermissionDelegate::GetPermissionStatusForCurrentDocument(
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
FrameImpl* frame = FrameImpl::FromRenderFrameHost(render_frame_host);
|
||||
DCHECK(frame);
|
||||
return frame->permission_controller()->GetPermissionState(
|
||||
permission, render_frame_host->GetLastCommittedOrigin());
|
||||
}
|
||||
|
||||
WebEnginePermissionDelegate::SubscriptionId
|
||||
WebEnginePermissionDelegate::SubscribePermissionStatusChange(
|
||||
content::PermissionType permission,
|
||||
|
@ -46,6 +46,9 @@ class WebEnginePermissionDelegate
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
const GURL& requesting_origin) override;
|
||||
blink::mojom::PermissionStatus GetPermissionStatusForCurrentDocument(
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host) override;
|
||||
SubscriptionId SubscribePermissionStatusChange(
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
|
@ -69,6 +69,13 @@ HeadlessPermissionManager::GetPermissionStatusForFrame(
|
||||
return blink::mojom::PermissionStatus::ASK;
|
||||
}
|
||||
|
||||
blink::mojom::PermissionStatus
|
||||
HeadlessPermissionManager::GetPermissionStatusForCurrentDocument(
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
return blink::mojom::PermissionStatus::ASK;
|
||||
}
|
||||
|
||||
HeadlessPermissionManager::SubscriptionId
|
||||
HeadlessPermissionManager::SubscribePermissionStatusChange(
|
||||
content::PermissionType permission,
|
||||
|
@ -52,6 +52,9 @@ class HeadlessPermissionManager : public content::PermissionControllerDelegate {
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
const GURL& requesting_origin) override;
|
||||
blink::mojom::PermissionStatus GetPermissionStatusForCurrentDocument(
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host) override;
|
||||
SubscriptionId SubscribePermissionStatusChange(
|
||||
content::PermissionType permission,
|
||||
content::RenderFrameHost* render_frame_host,
|
||||
|
Reference in New Issue
Block a user