mirror of
https://github.com/stablyai/orca.git
synced 2026-10-31 00:57:45 +00:00
perf: isolate browser eviction veto from pure retention selectors (#29765)
This commit is contained in:
+2
-4
@@ -1,9 +1,7 @@
|
||||
import { beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import type { BrowserWorkspace } from '../../../../../shared/browser-workspace-types'
|
||||
import {
|
||||
browserTabsVetoGuestEviction,
|
||||
selectBrowserGuestEvictionWorktreeIds
|
||||
} from './browser-guest-worktree-retention'
|
||||
import { browserTabsVetoGuestEviction } from './browser-guest-eviction-veto'
|
||||
import { selectBrowserGuestEvictionWorktreeIds } from './browser-guest-worktree-retention'
|
||||
import { hydrateBrowserDrivers } from '../../../lib/pane-manager/browser-mobile-driver-state'
|
||||
import { hydrateBrowserRemoteViewerPages } from '../../../lib/pane-manager/browser-remote-viewer-state'
|
||||
import {
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
import type { BrowserWorkspace } from '../../../../../shared/browser-workspace-types'
|
||||
import { browserTabVisibilityPageIds } from './browser-guest-worktree-retention'
|
||||
import { hasActiveBrowserPageDownload } from '../navigate/browser-page-download-activity'
|
||||
import { browserPageNeedsPaintRetention } from './browser-guest-paint-retention'
|
||||
|
||||
// Why eviction needs more than the paint terms: eviction DESTROYS the guest rather than parking
|
||||
// it, and main cancels a page's active downloads when its guest unregisters (tab-close semantics).
|
||||
export function browserTabsVetoGuestEviction(tabs: readonly BrowserWorkspace[]): boolean {
|
||||
return tabs.some((tab) =>
|
||||
browserTabVisibilityPageIds(tab).some(
|
||||
(pageId) => browserPageNeedsPaintRetention(pageId) || hasActiveBrowserPageDownload(pageId)
|
||||
)
|
||||
)
|
||||
}
|
||||
-12
@@ -1,6 +1,4 @@
|
||||
import type { BrowserPage, BrowserWorkspace } from '../../../../../shared/browser-workspace-types'
|
||||
import { hasActiveBrowserPageDownload } from '../navigate/browser-page-download-activity'
|
||||
import { browserPageNeedsPaintRetention } from './browser-guest-paint-retention'
|
||||
|
||||
// Why 4: every hidden worktree that retains browser guests keeps one Electron
|
||||
// guest process per page alive purely for instant revisits, so guest memory
|
||||
@@ -70,16 +68,6 @@ export function worktreeHoldsLiveBrowserGuests(
|
||||
})
|
||||
}
|
||||
|
||||
// Why eviction needs more than the paint terms: eviction DESTROYS the guest rather than parking
|
||||
// it, and main cancels a page's active downloads when its guest unregisters (tab-close semantics).
|
||||
export function browserTabsVetoGuestEviction(tabs: readonly BrowserWorkspace[]): boolean {
|
||||
return tabs.some((tab) =>
|
||||
browserTabVisibilityPageIds(tab).some(
|
||||
(pageId) => browserPageNeedsPaintRetention(pageId) || hasActiveBrowserPageDownload(pageId)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
// Mirrors BrowserOverlaySlot's page-id derivation so visibility pinning
|
||||
// (automation-visible / mobile-driven) protects exactly the slots it paints.
|
||||
export function browserTabVisibilityPageIds(tab: BrowserWorkspace): readonly string[] {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { useEffect } from 'react'
|
||||
import { useAppStore } from '../store'
|
||||
import { onBrowserGuestPaintRetentionChange } from './browser-pane/host-guest/browser-guest-paint-retention'
|
||||
import { browserTabsVetoGuestEviction } from './browser-pane/host-guest/browser-guest-eviction-veto'
|
||||
import {
|
||||
browserTabsVetoGuestEviction,
|
||||
selectBrowserGuestEvictionWorktreeIds,
|
||||
touchBrowserGuestWorktreeRecency,
|
||||
worktreeHoldsLiveBrowserGuests
|
||||
|
||||
Reference in New Issue
Block a user