From df8188e5d9593a6797745532e43922aebdcacf61 Mon Sep 17 00:00:00 2001 From: Matt Menke Date: Mon, 9 Oct 2023 15:20:16 -0400 Subject: [PATCH] Update spec.bs - make join permission imply leave permission. joinAdInterestGroup() can leave an interest group by using a duration of 0, so make a join permission imply a leave permission. Explainer has already been updated. We could alternatively make denying leave permissions override allowing join permissions, if we thought that was safer, though would have to update the explainer as well. --- spec.bs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/spec.bs b/spec.bs index e9ef60b5..3738cd8a 100644 --- a/spec.bs +++ b/spec.bs @@ -422,8 +422,10 @@ To check interest group permissions given an [=origin=] 1. Let |permissions| be the result of [=parsing JSON bytes to an Infra value=] with |resource|, returning false on failure. 1. If |permissions| is not an [=ordered map=], then return false. -1. If |joinOrLeave| is "`join`" and |permissions|["`joinAdInterestGroup`"] [=map/exists=], then - return |permissions|["`joinAdInterestGroup`"]. +1. Set |joinPermission| to false. +1. If |permissions|["`joinAdInterestGroup`"] [=map/exists=] set |joinPermission| to |permissions|["`joinAdInterestGroup`"]. +1. If |joinOrLeave| is "`join`" return |joinPermission|. +1. If |joinOrLeave| is "`leave`" and |joinPermission| is true, return true. 1. If |joinOrLeave| is "`leave`" and |permissions|["`leaveAdInterestGroup`"] [=map/exists=], then return |permissions|["`leaveAdInterestGroup`"]. 1. Return false.