Skip to content

Commit a4d46fa

Browse files
Fix GNOME Shell extension disabled logic on Ubuntu 24 (#30)
1 parent e12ab51 commit a4d46fa

File tree

1 file changed

+23
-16
lines changed

1 file changed

+23
-16
lines changed

crates/dbus/src/dbus/gnome_shell.rs

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -166,15 +166,15 @@ where
166166
}
167167

168168
match shell_extensions.get_extension_state().await? {
169-
state @ (ExtensionState::Enabled | ExtensionState::Disabled) => {
169+
state @ (ExtensionState::Enabled | ExtensionState::Disabled | ExtensionState::Initialized) => {
170170
if let Some(expected_version) = expected_version {
171171
let installed_version = shell_extensions.get_extension_version().await?;
172172
if installed_version != expected_version {
173173
return Ok(ExtensionInstallationStatus::UnexpectedVersion { installed_version });
174174
}
175175
}
176176

177-
if state == ExtensionState::Disabled {
177+
if state == ExtensionState::Disabled || state == ExtensionState::Initialized {
178178
Ok(ExtensionInstallationStatus::NotEnabled)
179179
} else {
180180
Ok(ExtensionInstallationStatus::Enabled)
@@ -833,21 +833,28 @@ mod tests {
833833
async fn test_extension_installed_but_not_enabled() {
834834
tracing_subscriber::fmt::try_init().ok();
835835

836-
let ctx = make_ctx().await;
837-
let shell_extensions = ShellExtensions::new_fake(Arc::downgrade(&ctx));
838-
let expected_version = 2;
839-
shell_extensions
840-
.install_for_fake(false, expected_version, Some(ExtensionState::Disabled))
841-
.await
842-
.unwrap();
843-
844-
// When
845-
let status = get_extension_status(&ctx, &shell_extensions, Some(expected_version))
846-
.await
847-
.unwrap();
836+
for disabled_state in &[ExtensionState::Disabled, ExtensionState::Initialized] {
837+
let ctx = make_ctx().await;
838+
let shell_extensions = ShellExtensions::new_fake(Arc::downgrade(&ctx));
839+
let expected_version = 2;
840+
shell_extensions
841+
.install_for_fake(false, expected_version, Some(*disabled_state))
842+
.await
843+
.unwrap();
848844

849-
// Then
850-
assert_eq!(status, ExtensionInstallationStatus::NotEnabled);
845+
// When
846+
let status = get_extension_status(&ctx, &shell_extensions, Some(expected_version))
847+
.await
848+
.unwrap();
849+
850+
// Then
851+
assert_eq!(
852+
status,
853+
ExtensionInstallationStatus::NotEnabled,
854+
"Extension with state {:?} should return NotEnabled",
855+
*disabled_state
856+
);
857+
}
851858
}
852859

853860
#[tokio::test]

0 commit comments

Comments
 (0)