Safari's Extensions prefs panel behavior can confuse users

Originator:manytricks.rg
Number:rdar://FB7709629 Date Originated:5/21/2020
Status:Open Resolved:
Product:Safari Product Version:13.1
Classification:Incorrect/Unexpected Behavior Reproducible:Always
 
We've heard from a number of our users who have blamed our apps for breaking Safari's Extensions preferences panel in macOS Catalina. Paraphrased, they tell us: "While running one of your apps, I am unable to activate extensions in Safari's preferences panel. The button merely flashes quickly, but nothing happens. I can disable any already-running extension, but not enable any disabled extensions. Please fix your app!"

After investigating, we've replicated the issue, and found two of our apps, Displaperture and Keymou, that seem to cause the problem.

Displaperture: https://manytricks.com/displaperture (free)
Keymou: https://manytricks.com/keymou (free trial)

Both apps use an invisible window—Displaperture all the time, and Keymou when it's operating in a certain mode. It's our theory that Safari is actively blocking extensions from being enabled when an app with an invisible window is running, for fear that it's malware that may be trying to enable a malicious extension. We have no idea if that theory is correct.

If this is intentional, we believe Safari should let the user know what's happening. As it works now, the user has to go through a time-consuming process of elimination to identify the app that's causing the problem.

Once they identify it, they email us (or other developer) and blame us for the issue. Unfortunately, there's nothing we can do to fix this. A simple dialog explaining what's happening would help the users (no wasted time, understanding what's going on) and developers (no wasted time, no upset emails from users blaming us for things we cannot control).

If this behavior *isn't* intentional, then consider this a bug report: You cannot enable Safari extensions when an app that uses a full-screen invisible window is running. 

The attached movie shows the problem when using Keymou, and here are the steps to reproduce the situation yourself:

1) Install Keymou (it has a free trial mode, or you can get a free Apple license here: https://manytricks.com/buy/keymou/aquaticprime/nfrgenerator__apple.com.php), and set its preferences (in Advanced) to run as a menu bar app. (This is not required, it just makes this simpler.) Grant permissions as requested by macOS.

2) Open Safari's preferences and switch to the Extensions tab.

3) Verify the Keymou is running, and that you can enable and disable extensions as you wish.

4) Click on Keymou's menu bar icon and select Highlight Mouse Permanently.

5) Click to a different tab of Safari's preferences, like Websites or Privacy or Advanced—this will work.

6) Switch back to the Extensions section—this will also work.

7) Disable a running extension—this will also work.

8) Try to enable any disabled extension—this will *not* work.

9) Disable Keymou's Highlight Mouse Permanently feature.

10) Return to Safari, and extensions can be enabled and disabled at will.

No error messages are ever shown to the user, and it's not obvious why the buttons can't be clicked. With our other app, Displaperture, the problem is even worse, because the invisible window is always there. (Displaperture rounds the corners of the Mac's screen by way of an invisible window.) In the case of Displaperture, it's not like there's a feature the user enabled that suddenly made the buttons not work, as with Keymou.

And to further confuse users, only *some* buttons (those in the Extensions panel) don't work, while others do. And there's absolutely no feedback given about this, which makes it impossible for the user to figure out what's going on.

What should happen: A user is clicking a button, and it should reflect that action. This is not a synthetic mouse click, it's a user clicking a mouse on a button, and nothing is happening. If this is a security feature, then the user should be informed as to what's going on, much like what happens when an app asks for Accessibility access. We're not suggesting users should necessarily be in control of this process, but they should at least know why it's happening, again assuming it's intentional.

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!