We discussed yesterday with Jamie and Christian, and the best would be to get this implemented in the usensord service. So the idea is that service would expose a property the settings application can change. Toolkit will not read any setting, but will call the Haptics as it did before. On the other hand, sensors service must check who was the caller of the vibration, to differentiate whether the call came from OSK or the app itself. It will then decide to vibrate or not, based on the setting.
So changes would need to be done on 1. usensord - expose the property system settings app can change, identify the caller and do or do not vibrate depending on the setting 2. system settings app should read/write this property 3. toolkit calls the haptics (vibrate) as it did before, without checking the enabled flag Now, how does this sound? -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to apparmor-easyprof-ubuntu in Ubuntu. https://bugs.launchpad.net/bugs/1433590 Title: apparmor dbus denial for org.freedesktop.Accounts Status in the base for Ubuntu mobile products: Confirmed Status in apparmor-easyprof-ubuntu package in Ubuntu: Fix Released Status in ubuntu-system-settings package in Ubuntu: Confirmed Status in ubuntu-ui-toolkit package in Ubuntu: Confirmed Bug description: This affects vivid and (somewhat recently?) 14.09. At some point, apps started to request access to org.freedesktop.Accounts for something, but I'm not sure what. It has been conjectured in this bug that it is due to vibration settings. Filing against ubuntu-system-settings for now, but please feel free to move to the correct package. This happens with webapps: Apr 7 08:42:17 ubuntu-phablet dbus[797]: apparmor="DENIED" operation="dbus_method_call" bus="system" path="/org/freedesktop/Accounts" interface="org.freedesktop.DBus.Introspectable" member="Introspect" mask="send" name="org.freedesktop.Accounts" pid=2632 profile="com.ubuntu.developer.webapps.webapp-facebook_webapp-facebook_1.0.26" peer_pid=1596 peer_profile="unconfined" Apr 7 08:42:17 ubuntu-phablet dbus[797]: apparmor="DENIED" operation="dbus_method_call" bus="system" path="/org/freedesktop/Accounts" interface="org.freedesktop.Accounts" member="FindUserById" mask="send" name="org.freedesktop.Accounts" pid=2632 profile="com.ubuntu.developer.webapps.webapp-facebook_webapp-facebook_1.0.26" peer_pid=1596 peer_profile="unconfined" and QML apps: Apr 7 08:43:40 ubuntu-phablet dbus[797]: apparmor="DENIED" operation="dbus_method_call" bus="system" path="/org/freedesktop/Accounts" interface="org.freedesktop.DBus.Introspectable" member="Introspect" mask="send" name="org.freedesktop.Accounts" pid=3377 profile="com.ubuntu.calculator_calculator_1.3.339" peer_pid=1596 peer_profile="unconfined" Apr 7 08:43:40 ubuntu-phablet dbus[797]: apparmor="DENIED" operation="dbus_method_call" bus="system" path="/org/freedesktop/Accounts" interface="org.freedesktop.Accounts" member="FindUserById" mask="send" name="org.freedesktop.Accounts" pid=3377 profile="com.ubuntu.calculator_calculator_1.3.339" peer_pid=1596 peer_profile="unconfined" The following rules allow the requested access: dbus (send) bus=system path="/org/freedesktop/Accounts" interface="org.freedesktop.DBus.{Introspectable,Properties}" member=Introspect peer=(name=org.freedesktop.Accounts,label=unconfined), dbus (send) bus=system path="/org/freedesktop/Accounts" interface="org.freedesktop.Accounts" member=FindUserById peer=(name=org.freedesktop.Accounts,label=unconfined), dbus (send) bus=system path="/org/freedesktop/Accounts/User[0-9]*" interface="org.freedesktop.DBus.Properties" member=Get peer=(name=org.freedesktop.Accounts,label=unconfined), However, the above is too lenient and constitutes a privacy leak for apps. FindUserById could be used by a malicious app to enumerate usernames on multiuser systems and because we can't mediate method data with apparmor, the Get() method can be used to obtain any information provided by this interface. The following can be used to see what can be leaked to a malicious app: gdbus introspect --system -d org.freedesktop.Accounts -o /org/freedesktop/Accounts/User`id -u phablet` This can be solved in a couple of ways: 1. add whatever information the app is trying to access to a new helper service that only exposes things that the app needs. This could be a single standalone service, perhaps something from ubuntu-system-settings, that could expose any number of things-- the current locale, if the locale changed, if the grid units changed, the vibration settings, etc. Since this service wouldn't have any sensitive information, you could use standard dbus properties/Get()/etc 2. add a new dbus API to an existing service such that apparmor rules can then be used to allow by method (eg, GetVibration() or something) I won't dictate the implementation except to mention that '1' seems like something generally useful and I believe that it was something the ubuntu-system-settings devs were already looking at for detecting locale changes without rebooting. Original description starting an app in vivid (image 135 on arale currently) produces a bunch of dbus denials in syslog ... (there is also a /dev/tty one but i think this is just because soemthing tries to write an error to console ... so transient) http://paste.ubuntu.com/10620834/ To manage notifications about this bug go to: https://bugs.launchpad.net/canonical-devices-system-image/+bug/1433590/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : [email protected] Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp

