@@ -62,7 +62,7 @@ pub struct PermissionDeniedError {
6262 pub access : String ,
6363 pub name : & ' static str ,
6464 pub custom_message : Option < String > ,
65- pub is_ignored : bool ,
65+ pub state : PermissionState ,
6666}
6767
6868fn format_permission_error ( name : & ' static str ) -> String {
@@ -134,7 +134,8 @@ pub enum PermissionState {
134134 #[ default]
135135 Prompt = 2 ,
136136 Denied = 3 ,
137- Ignored = 4 ,
137+ DeniedPartial = 4 ,
138+ Ignored = 5 ,
138139}
139140
140141#[ derive( Debug , Clone , Copy , PartialEq , Eq ) ]
@@ -446,12 +447,13 @@ impl PermissionState {
446447 fn permission_denied_error (
447448 name : & ' static str ,
448449 info : Option < & str > ,
450+ state : PermissionState ,
449451 ) -> PermissionDeniedError {
450452 PermissionDeniedError {
451453 access : Self :: fmt_access ( name, info) ,
452454 name,
453455 custom_message : None ,
454- is_ignored : false ,
456+ state ,
455457 }
456458 }
457459
@@ -474,9 +476,14 @@ impl PermissionState {
474476 Self :: log_perm_access ( name, || info. map ( |i| i. to_string ( ) ) ) ;
475477 ( Ok ( ( ) ) , true )
476478 }
477- PromptResponse :: Deny => {
478- ( Err ( Self :: permission_denied_error ( name, info) ) , false )
479- }
479+ PromptResponse :: Deny => (
480+ Err ( Self :: permission_denied_error (
481+ name,
482+ info,
483+ PermissionState :: Denied ,
484+ ) ) ,
485+ false ,
486+ ) ,
480487 }
481488 }
482489
@@ -501,7 +508,7 @@ impl PermissionState {
501508 access : Self :: fmt_access ( name, info ( ) . as_deref ( ) ) ,
502509 name,
503510 custom_message : message,
504- is_ignored : false ,
511+ state : PermissionState :: Denied ,
505512 } ) ,
506513 false ,
507514 false ,
@@ -535,9 +542,8 @@ impl PermissionState {
535542 } ) ;
536543 ( result, true , is_allow_all)
537544 }
538- _ => {
539- let mut err = Self :: permission_denied_error ( name, info ( ) . as_deref ( ) ) ;
540- err. is_ignored = matches ! ( self , PermissionState :: Ignored ) ;
545+ state => {
546+ let err = Self :: permission_denied_error ( name, info ( ) . as_deref ( ) , state) ;
541547 ( Err ( err) , false , false )
542548 }
543549 }
@@ -550,7 +556,9 @@ impl fmt::Display for PermissionState {
550556 PermissionState :: Granted => f. pad ( "granted" ) ,
551557 PermissionState :: GrantedPartial => f. pad ( "granted-partial" ) ,
552558 PermissionState :: Prompt => f. pad ( "prompt" ) ,
553- PermissionState :: Denied => f. pad ( "denied" ) ,
559+ PermissionState :: Denied | PermissionState :: DeniedPartial => {
560+ f. pad ( "denied" )
561+ }
554562 PermissionState :: Ignored => f. pad ( "ignored" ) ,
555563 }
556564 }
@@ -852,7 +860,7 @@ impl<
852860 AllowPartial :: TreatAsGranted => PermissionState :: Granted ,
853861 AllowPartial :: TreatAsDenied => {
854862 if self . is_partial_flag_denied ( desc) {
855- PermissionState :: Denied
863+ PermissionState :: DeniedPartial
856864 } else {
857865 PermissionState :: Granted
858866 }
@@ -870,7 +878,7 @@ impl<
870878 } else if matches ! ( allow_partial, AllowPartial :: TreatAsDenied )
871879 && self . is_partial_flag_denied ( desc)
872880 {
873- PermissionState :: Denied
881+ PermissionState :: DeniedPartial
874882 } else {
875883 PermissionState :: Prompt
876884 }
@@ -3780,6 +3788,7 @@ impl PermissionsContainer {
37803788 PermissionState :: permission_denied_error (
37813789 "all" ,
37823790 Some ( display_name. as_ref ( ) ) ,
3791+ PermissionState :: Denied ,
37833792 )
37843793 . into ( ) ,
37853794 )
0 commit comments