extensionSystem: handle reloading broken extensions

Some extensions out there may fail to reload. When that happens,
we need to catch any exceptions so that we don't leave things in
a broken state that could lead to leaving extensions enabled in
the screen shield.

https://bugzilla.gnome.org/show_bug.cgi?id=781728
This commit is contained in:
Emilio Pozuelo Monfort 2017-04-25 17:27:42 +02:00
parent 812aa10119
commit e1e4ce7049

View File

@ -282,12 +282,20 @@ function _onVersionValidationChanged() {
// temporarily disable them all // temporarily disable them all
enabledExtensions = []; enabledExtensions = [];
for (let uuid in ExtensionUtils.extensions) for (let uuid in ExtensionUtils.extensions)
reloadExtension(ExtensionUtils.extensions[uuid]); try {
reloadExtension(ExtensionUtils.extensions[uuid]);
} catch(e) {
logExtensionError(uuid, e);
}
enabledExtensions = getEnabledExtensions(); enabledExtensions = getEnabledExtensions();
if (Main.sessionMode.allowExtensions) { if (Main.sessionMode.allowExtensions) {
enabledExtensions.forEach(function(uuid) { enabledExtensions.forEach(function(uuid) {
enableExtension(uuid); try {
enableExtension(uuid);
} catch(e) {
logExtensionError(uuid, e);
}
}); });
} }
} }