diff --git a/lib/private/NavigationManager.php b/lib/private/NavigationManager.php index 468e2617d67f0..a20969c765a4b 100644 --- a/lib/private/NavigationManager.php +++ b/lib/private/NavigationManager.php @@ -312,7 +312,7 @@ public function setUnreadCounter(string $id, int $unreadCounter): void { #[Override] public function get(string $id): ?array { $this->resolveAppNavigationEntries(); - return $this->entries[$id]; + return $this->entries[$id] ?? null; } #[Override] diff --git a/tests/lib/NavigationManagerTest.php b/tests/lib/NavigationManagerTest.php index 1b2805f9c0860..154456fe872c9 100644 --- a/tests/lib/NavigationManagerTest.php +++ b/tests/lib/NavigationManagerTest.php @@ -171,6 +171,13 @@ public function testAddClosure(array $entry, array $expectedEntry): void { $this->assertEmpty($this->navigationManager->getAll('all'), 'Expected no navigation entry exists after clear()'); } + public function testGetUnknownEntryReturnsNull(): void { + // Requesting an entry no app has registered must return null without + // emitting an "Undefined array key" warning, e.g. when an app without + // a navigation entry renders a public page + $this->assertNull($this->navigationManager->get('unknown')); + } + public function testAddArrayClearGetAll(): void { $entry = [ 'id' => 'entry id',