use requestPermission callback