gnome-shell/js/ui/status
Adam Williamson 33ffdd6061 Fix connection to wifi APs from user menu (RH #1628263)
In recent Fedora 29, connecting to wifi access points from the
user menu (top-right menu) does not work. Clicking the 'Connect'
button just animates it but does nothing else. The logs show an
error "JS ERROR: Error: Expected type utf8 for Argument
'specific_object' but got type 'undefined'".

Looking into this, it seems the problem is these uses of the
`path` property of an NMAccessPoint. NMAccessPoint inherits
from NMObject, and NMObject *does* have a path property:

https://developer.gnome.org/libnm/stable/NMObject.html#NMObject--path

so at first glance this seems fine. But I poked around a bit
using libnm via Python (which goes via introspection, just like
this JS code does), and found that indeed AccessPoint objects
don't seem to have a `path` property there either.

Looking at the libnm code, this actually makes sense, because
the property is marked "(skip)":

https://github.com/NetworkManager/NetworkManager/blob/master/libnm/nm-object.c#L1291

and the introspection docs suggest that means it should be left
out of introspected output:

https://wiki.gnome.org/Projects/GObjectIntrospection/Annotations#Symbol_visibility

I'm a bit concerned that this was only found recently - whereas
the change to use `.path` in gnome-shell dates from October 2017
(d71af5e5) and the property has been marked (skip) in NM since
at least 2016 - but this all seems to add up. The obvious fix is
to replace use of `.path` with `.get_path()`, which returns the
path and is *not* marked (skip) and so *is* available via
introspection. I tested that this works in Python and also did
a test build of gnome-shell with this change and installed it on
an affected system, it does seem to fix the bug.

Signed-off-by: Adam Williamson <awilliam@redhat.com>
2018-09-18 16:15:32 -07:00
..
accessibility.js cleanup: Use Function.prototype.bind() 2018-02-21 13:55:02 +00:00
bluetooth.js dbus: Move all interface descriptions into the resource 2018-09-17 07:34:49 +00:00
brightness.js dbus: Move all interface descriptions into the resource 2018-09-17 07:34:49 +00:00
keyboard.js Remove usage of MetaScreen 2018-07-06 19:56:19 +02:00
location.js dbus: Move all interface descriptions into the resource 2018-09-17 07:34:49 +00:00
network.js Fix connection to wifi APs from user menu (RH #1628263) 2018-09-18 16:15:32 -07:00
nightLight.js dbus: Move all interface descriptions into the resource 2018-09-17 07:34:49 +00:00
power.js dbus: Move all interface descriptions into the resource 2018-09-17 07:34:49 +00:00
remoteAccess.js remoteAccess: Make indicator orange 2018-07-27 18:10:35 +02:00
rfkill.js dbus: Move all interface descriptions into the resource 2018-09-17 07:34:49 +00:00
screencast.js cleanup: Use Function.prototype.bind() 2018-02-21 13:55:02 +00:00
system.js system: Don't execute Settings 2018-07-31 13:31:59 -03:00
thunderbolt.js dbus: Move all interface descriptions into the resource 2018-09-17 07:34:49 +00:00
volume.js volume: Show overamplified icon when in overdrive 2018-07-31 18:14:15 +00:00