weather: Only require auto-location authorization if sandboxed

Since commit 87e60ed97843, geoclue no longer pretends that authorization
is useful for system-installed apps (as they can easily lie about their
ID). Unfortunately this broke our auto-location support in case Weather
is installed non-sandboxed, as we are waiting for an authorization that
will never happen.

Unbreak it by only requiring authorization when installed as Flatpak.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/1823
This commit is contained in:
Florian Müllner 2019-11-27 23:01:15 +01:00
parent 7be1729cde
commit 5043e6d6bd

View File

@ -32,6 +32,7 @@ var WeatherClient = class {
this._gclueStarting = false; this._gclueStarting = false;
this._gclueLocationChangedId = 0; this._gclueLocationChangedId = 0;
this._needsAuth = true;
this._weatherAuthorized = false; this._weatherAuthorized = false;
this._permStore = new PermissionStore.PermissionStore((proxy, error) => { this._permStore = new PermissionStore.PermissionStore((proxy, error) => {
if (error) { if (error) {
@ -142,7 +143,7 @@ var WeatherClient = class {
get _useAutoLocation() { get _useAutoLocation() {
return this._autoLocationRequested && return this._autoLocationRequested &&
this._locationSettings.get_boolean('enabled') && this._locationSettings.get_boolean('enabled') &&
this._weatherAuthorized; (!this._needsAuth || this._weatherAuthorized);
} }
_onWeatherProxyReady(o, res) { _onWeatherProxyReady(o, res) {
@ -175,6 +176,13 @@ var WeatherClient = class {
if (hadApp !== haveApp) if (hadApp !== haveApp)
this.emit('changed'); this.emit('changed');
let neededAuth = this._needsAuth;
this._needsAuth = this._weatherApp === null ||
this._weatherApp.app_info.has_key('X-Flatpak');
if (neededAuth !== this._needsAuth)
this._updateAutoLocation();
} }
_loadInfo() { _loadInfo() {