[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,
|
||||
std::cref(net::features::kThirdPartyStoragePartitioning),
|
||||
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.
|
||||
{switches::kEnableExperimentalCookieFeatures,
|
||||
|
@ -275,8 +275,14 @@ void WebTestPermissionManager::SetPermission(
|
||||
std::move(callback).Run(false);
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -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_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_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.h",
|
||||
"$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/permissions.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/picture_in_picture/document_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_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/execution_context/execution_context.h"
|
||||
#include "third_party/blink/renderer/core/workers/worker_global_scope.h"
|
||||
@ -152,6 +153,21 @@ PermissionDescriptorPtr CreateVideoCapturePermissionDescriptor(
|
||||
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(
|
||||
ScriptState* script_state,
|
||||
const ScriptValue& raw_descriptor,
|
||||
@ -301,7 +317,21 @@ PermissionDescriptorPtr ParsePermissionDescriptor(
|
||||
"The requestStorageAccessForOrigin API is not enabled.");
|
||||
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") {
|
||||
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 +
|
||||
'] 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 {
|
||||
promise_test(
|
||||
async t => {
|
||||
|
Reference in New Issue
Block a user