Yes, it has, but is hard to use.
In this filter,
You can get 'data' as "delete", "added", "changed" or "cleared".
(reference:
https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIPermissionManager#Remarks)
And a 'subject' object which have permission attributes:
https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIPermission#Attributes
This hacks too much, but you can use, for example:
perm-changed&data==='changed'&&subject.QueryInterface(Components.interfaces.nsIPermission).capability===Components.interfaces.nsIPermissionManager.ALLOW_ACTION
When you change a premission to "allowed", nsIPermissionManager.ALLOW_ACTION will be 1. (you can write 1, instead of nsIPermissionManager.ALLOW_ACTION)
The problem is, in about:permissions, not all 'allowed' is 1,
I must use
perm-changed&Noise.log(subject.QueryInterface(Components.interfaces.nsIPermission).capability)
and open debug console to see what is the value for each option.