[rsafor] Add test for permission granted case
Bug: 1410556 Change-Id: I4f52d05ab923efcbe96dec2067ab38711291f793 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4215354 Reviewed-by: Avi Drissman <avi@chromium.org> Commit-Queue: Matt Reichhoff <mreichhoff@chromium.org> Code-Coverage: Findit <findit-for-me@appspot.gserviceaccount.com> Reviewed-by: Andy Paicu <andypaicu@chromium.org> Cr-Commit-Position: refs/heads/main@{#1102452}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
fcae9593ed
commit
bf15745b84
content
public
web_test
third_party/blink
renderer
bindings
modules
web_tests
external
wpt
top-level-storage-access-api
@ -99,6 +99,12 @@ GetSwitchDependentFeatureOverrides(const base::CommandLine& command_line) {
|
|||||||
{switches::kEnableExperimentalWebPlatformFeatures,
|
{switches::kEnableExperimentalWebPlatformFeatures,
|
||||||
std::cref(net::features::kThirdPartyStoragePartitioning),
|
std::cref(net::features::kThirdPartyStoragePartitioning),
|
||||||
base::FeatureList::OVERRIDE_ENABLE_FEATURE},
|
base::FeatureList::OVERRIDE_ENABLE_FEATURE},
|
||||||
|
{switches::kEnableExperimentalWebPlatformFeatures,
|
||||||
|
std::cref(blink::features::kStorageAccessAPI),
|
||||||
|
base::FeatureList::OVERRIDE_ENABLE_FEATURE},
|
||||||
|
{switches::kEnableExperimentalWebPlatformFeatures,
|
||||||
|
std::cref(blink::features::kStorageAccessAPIForOriginExtension),
|
||||||
|
base::FeatureList::OVERRIDE_ENABLE_FEATURE},
|
||||||
|
|
||||||
// Overrides for --enable-experimental-cookie-features.
|
// Overrides for --enable-experimental-cookie-features.
|
||||||
{switches::kEnableExperimentalCookieFeatures,
|
{switches::kEnableExperimentalCookieFeatures,
|
||||||
|
@ -275,8 +275,14 @@ void WebTestPermissionManager::SetPermission(
|
|||||||
std::move(callback).Run(false);
|
std::move(callback).Run(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
GURL applicable_permission_url = url;
|
||||||
|
if (PermissionUtil::IsDomainOverride(descriptor)) {
|
||||||
|
const auto overridden_origin =
|
||||||
|
PermissionUtil::ExtractDomainOverride(descriptor);
|
||||||
|
applicable_permission_url = overridden_origin.GetURL();
|
||||||
|
}
|
||||||
|
|
||||||
SetPermission(*type, status, url, embedding_url);
|
SetPermission(*type, status, applicable_permission_url, embedding_url);
|
||||||
std::move(callback).Run(true);
|
std::move(callback).Run(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -817,6 +817,8 @@ generated_dictionary_sources_in_modules = [
|
|||||||
"$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_push_subscription_change_event_init.h",
|
"$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_push_subscription_change_event_init.h",
|
||||||
"$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_push_subscription_options_init.cc",
|
"$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_push_subscription_options_init.cc",
|
||||||
"$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_push_subscription_options_init.h",
|
"$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_push_subscription_options_init.h",
|
||||||
|
"$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_top_level_storage_access_permission_descriptor.cc",
|
||||||
|
"$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_top_level_storage_access_permission_descriptor.h",
|
||||||
"$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_query_options.cc",
|
"$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_query_options.cc",
|
||||||
"$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_query_options.h",
|
"$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_query_options.h",
|
||||||
"$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_registration_options.cc",
|
"$root_gen_dir/third_party/blink/renderer/bindings/modules/v8/v8_registration_options.cc",
|
||||||
|
@ -601,6 +601,7 @@ static_idl_files_in_modules = get_path_info(
|
|||||||
"//third_party/blink/renderer/modules/permissions/permission_status.idl",
|
"//third_party/blink/renderer/modules/permissions/permission_status.idl",
|
||||||
"//third_party/blink/renderer/modules/permissions/permissions.idl",
|
"//third_party/blink/renderer/modules/permissions/permissions.idl",
|
||||||
"//third_party/blink/renderer/modules/permissions/push_permission_descriptor.idl",
|
"//third_party/blink/renderer/modules/permissions/push_permission_descriptor.idl",
|
||||||
|
"//third_party/blink/renderer/modules/permissions/top_level_storage_access_permission_descriptor.idl",
|
||||||
"//third_party/blink/renderer/modules/permissions/worker_navigator_permissions.idl",
|
"//third_party/blink/renderer/modules/permissions/worker_navigator_permissions.idl",
|
||||||
"//third_party/blink/renderer/modules/picture_in_picture/document_picture_in_picture.idl",
|
"//third_party/blink/renderer/modules/picture_in_picture/document_picture_in_picture.idl",
|
||||||
"//third_party/blink/renderer/modules/picture_in_picture/html_video_element_picture_in_picture.idl",
|
"//third_party/blink/renderer/modules/picture_in_picture/html_video_element_picture_in_picture.idl",
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#include "third_party/blink/renderer/bindings/modules/v8/v8_midi_permission_descriptor.h"
|
#include "third_party/blink/renderer/bindings/modules/v8/v8_midi_permission_descriptor.h"
|
||||||
#include "third_party/blink/renderer/bindings/modules/v8/v8_permission_descriptor.h"
|
#include "third_party/blink/renderer/bindings/modules/v8/v8_permission_descriptor.h"
|
||||||
#include "third_party/blink/renderer/bindings/modules/v8/v8_push_permission_descriptor.h"
|
#include "third_party/blink/renderer/bindings/modules/v8/v8_push_permission_descriptor.h"
|
||||||
|
#include "third_party/blink/renderer/bindings/modules/v8/v8_top_level_storage_access_permission_descriptor.h"
|
||||||
#include "third_party/blink/renderer/core/dom/document.h"
|
#include "third_party/blink/renderer/core/dom/document.h"
|
||||||
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
|
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
|
||||||
#include "third_party/blink/renderer/core/workers/worker_global_scope.h"
|
#include "third_party/blink/renderer/core/workers/worker_global_scope.h"
|
||||||
@ -152,6 +153,21 @@ PermissionDescriptorPtr CreateVideoCapturePermissionDescriptor(
|
|||||||
return descriptor;
|
return descriptor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PermissionDescriptorPtr CreateTopLevelStorageAccessPermissionDescriptor(
|
||||||
|
const KURL& origin_as_kurl) {
|
||||||
|
auto descriptor =
|
||||||
|
CreatePermissionDescriptor(PermissionName::TOP_LEVEL_STORAGE_ACCESS);
|
||||||
|
scoped_refptr<SecurityOrigin> supplied_origin =
|
||||||
|
SecurityOrigin::Create(origin_as_kurl);
|
||||||
|
auto top_level_storage_access_extension =
|
||||||
|
mojom::blink::TopLevelStorageAccessPermissionDescriptor::New();
|
||||||
|
top_level_storage_access_extension->requestedOrigin = supplied_origin;
|
||||||
|
descriptor->extension =
|
||||||
|
mojom::blink::PermissionDescriptorExtension::NewTopLevelStorageAccess(
|
||||||
|
std::move(top_level_storage_access_extension));
|
||||||
|
return descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
PermissionDescriptorPtr ParsePermissionDescriptor(
|
PermissionDescriptorPtr ParsePermissionDescriptor(
|
||||||
ScriptState* script_state,
|
ScriptState* script_state,
|
||||||
const ScriptValue& raw_descriptor,
|
const ScriptValue& raw_descriptor,
|
||||||
@ -301,7 +317,21 @@ PermissionDescriptorPtr ParsePermissionDescriptor(
|
|||||||
"The requestStorageAccessForOrigin API is not enabled.");
|
"The requestStorageAccessForOrigin API is not enabled.");
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
return CreatePermissionDescriptor(PermissionName::TOP_LEVEL_STORAGE_ACCESS);
|
TopLevelStorageAccessPermissionDescriptor*
|
||||||
|
top_level_storage_access_permission =
|
||||||
|
NativeValueTraits<TopLevelStorageAccessPermissionDescriptor>::
|
||||||
|
NativeValue(script_state->GetIsolate(),
|
||||||
|
raw_descriptor.V8Value(), exception_state);
|
||||||
|
if (exception_state.HadException()) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
KURL origin_as_kurl{top_level_storage_access_permission->requestedOrigin()};
|
||||||
|
if (!origin_as_kurl.IsValid()) {
|
||||||
|
exception_state.ThrowTypeError("The requested origin is invalid.");
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return CreateTopLevelStorageAccessPermissionDescriptor(origin_as_kurl);
|
||||||
}
|
}
|
||||||
if (name == "window-management") {
|
if (name == "window-management") {
|
||||||
UseCounter::Count(CurrentExecutionContext(script_state->GetIsolate()),
|
UseCounter::Count(CurrentExecutionContext(script_state->GetIsolate()),
|
||||||
|
8
third_party/blink/renderer/modules/permissions/top_level_storage_access_permission_descriptor.idl
vendored
Normal file
8
third_party/blink/renderer/modules/permissions/top_level_storage_access_permission_descriptor.idl
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
// Copyright 2023 The Chromium Authors
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
dictionary TopLevelStorageAccessPermissionDescriptor : PermissionDescriptor {
|
||||||
|
// https://privacycg.github.io/requestStorageAccessForOrigin/#dictdef-toplevelstorageaccesspermissiondescriptor
|
||||||
|
USVString requestedOrigin = "";
|
||||||
|
};
|
@ -124,6 +124,18 @@ if (topLevelDocument) {
|
|||||||
'[' + testPrefix +
|
'[' + testPrefix +
|
||||||
'] document.requestStorageAccessForOrigin() should be rejected when called with an opaque origin');
|
'] document.requestStorageAccessForOrigin() should be rejected when called with an opaque origin');
|
||||||
|
|
||||||
|
|
||||||
|
promise_test(
|
||||||
|
async t => {
|
||||||
|
await test_driver.set_permission(
|
||||||
|
{ name: 'top-level-storage-access', requestedOrigin: 'https://foo.com' }, 'granted');
|
||||||
|
|
||||||
|
await RunCallbackWithGesture(
|
||||||
|
() => document.requestStorageAccessForOrigin('https://foo.com'));
|
||||||
|
},
|
||||||
|
'[' + testPrefix +
|
||||||
|
'] document.requestStorageAccessForOrigin() should be resolved when called properly with a user gesture');
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
promise_test(
|
promise_test(
|
||||||
async t => {
|
async t => {
|
||||||
|
Reference in New Issue
Block a user