refactor(M3): remove webkit type assertions from main.go
Add SetHandlerContext and InternalFilterManager to port.Engine interface, implement both on webkit.Engine, and replace the two type assertions in cmd/dumber/main.go so the webkit import can be dropped entirely.
- commit
- 7ba658b60757d97582dd7292afbe10ecdc6d17fc
- author
- brice · · 2026-03-17 10:19 UTC
- parent
- 5163049
- signature
- GPG Verified
CD88F9E564E0102646FB6077A1A07C7C7C3E349D· arch-gpg Verified for the committer email
3 files · +17 -12
M cmd/dumber/main.go +2 -11
| @@ -24,7 +24,6 @@ import ( | |||
| 24 | 24 | "github.com/bnema/dumber/internal/infrastructure/idle" | |
| 25 | 25 | "github.com/bnema/dumber/internal/infrastructure/persistence/sqlite" | |
| 26 | 26 | "github.com/bnema/dumber/internal/infrastructure/updater" | |
| 27 | - | "github.com/bnema/dumber/internal/infrastructure/webkit" | |
| 28 | 27 | "github.com/bnema/dumber/internal/infrastructure/xdg" | |
| 29 | 28 | "github.com/bnema/dumber/internal/logging" | |
| 30 | 29 | "github.com/bnema/dumber/internal/ui" | |
| @@ -111,11 +110,7 @@ func runGUI() int { | |||
| 111 | 110 | logging.Trace().UpdateLogger(log) | |
| 112 | 111 | logCoreDumpLimits(ctx) | |
| 113 | 112 | ||
| 114 | - | if wkEngine, ok := engine.(*webkit.Engine); ok { | |
| 115 | - | if mr := wkEngine.InternalMessageRouter(); mr != nil { | |
| 116 | - | mr.SetBaseContext(ctx) | |
| 117 | - | } | |
| 118 | - | } | |
| 113 | + | engine.SetHandlerContext(ctx) | |
| 119 | 114 | ||
| 120 | 115 | useCases := createUseCases(repos, cfg) | |
| 121 | 116 | if needsEagerDB { | |
| @@ -513,11 +508,7 @@ func buildUIDependencies( | |||
| 513 | 508 | currentSessionID entity.SessionID, | |
| 514 | 509 | startupCrashReports []string, | |
| 515 | 510 | ) *ui.Dependencies { | |
| 516 | - | // Type-assert to *webkit.Engine to access FilterManager (not yet on port.Engine). | |
| 517 | - | var filterManager port.FilterManager | |
| 518 | - | if wkEngine, ok := engine.(*webkit.Engine); ok { | |
| 519 | - | filterManager = wkEngine.InternalFilterManager() | |
| 520 | - | } | |
| 511 | + | filterManager := engine.InternalFilterManager() | |
| 521 | 512 | ||
| 522 | 513 | return &ui.Dependencies{ | |
| 523 | 514 | Ctx: ctx, | |
| @@ -24,7 +24,6 @@ import ( | |||||
| 24 | "github.com/bnema/dumber/internal/infrastructure/idle" | 24 | "github.com/bnema/dumber/internal/infrastructure/idle" | ||
| 25 | "github.com/bnema/dumber/internal/infrastructure/persistence/sqlite" | 25 | "github.com/bnema/dumber/internal/infrastructure/persistence/sqlite" | ||
| 26 | "github.com/bnema/dumber/internal/infrastructure/updater" | 26 | "github.com/bnema/dumber/internal/infrastructure/updater" | ||
| 27 | - | "github.com/bnema/dumber/internal/infrastructure/webkit" | |||
| 28 | "github.com/bnema/dumber/internal/infrastructure/xdg" | 27 | "github.com/bnema/dumber/internal/infrastructure/xdg" | ||
| 29 | "github.com/bnema/dumber/internal/logging" | 28 | "github.com/bnema/dumber/internal/logging" | ||
| 30 | "github.com/bnema/dumber/internal/ui" | 29 | "github.com/bnema/dumber/internal/ui" | ||
| @@ -111,11 +110,7 @@ func runGUI() int { | |||||
| 111 | logging.Trace().UpdateLogger(log) | 110 | logging.Trace().UpdateLogger(log) | ||
| 112 | logCoreDumpLimits(ctx) | 111 | logCoreDumpLimits(ctx) | ||
| 113 | 112 | ||||
| 114 | - | if wkEngine, ok := engine.(*webkit.Engine); ok { | 113 | + | engine.SetHandlerContext(ctx) |
| 115 | - | if mr := wkEngine.InternalMessageRouter(); mr != nil { | |||
| 116 | - | mr.SetBaseContext(ctx) | |||
| 117 | - | } | |||
| 118 | - | } | |||
| 119 | 114 | ||||
| 120 | useCases := createUseCases(repos, cfg) | 115 | useCases := createUseCases(repos, cfg) | ||
| 121 | if needsEagerDB { | 116 | if needsEagerDB { | ||
| @@ -513,11 +508,7 @@ func buildUIDependencies( | |||||
| 513 | currentSessionID entity.SessionID, | 508 | currentSessionID entity.SessionID, | ||
| 514 | startupCrashReports []string, | 509 | startupCrashReports []string, | ||
| 515 | ) *ui.Dependencies { | 510 | ) *ui.Dependencies { | ||
| 516 | - | // Type-assert to *webkit.Engine to access FilterManager (not yet on port.Engine). | 511 | + | filterManager := engine.InternalFilterManager() |
| 517 | - | var filterManager port.FilterManager | |||
| 518 | - | if wkEngine, ok := engine.(*webkit.Engine); ok { | |||
| 519 | - | filterManager = wkEngine.InternalFilterManager() | |||
| 520 | - | } | |||
| 521 | 512 | ||||
| 522 | return &ui.Dependencies{ | 513 | return &ui.Dependencies{ | ||
| 523 | Ctx: ctx, | 514 | Ctx: ctx, | ||
M internal/application/port/engine.go +7 -0
| @@ -140,6 +140,13 @@ type Engine interface { | |||
| 140 | 140 | ||
| 141 | 141 | // UpdateSettings applies runtime config changes to engine internals. | |
| 142 | 142 | UpdateSettings(ctx context.Context, update EngineSettingsUpdate) error | |
| 143 | + | ||
| 144 | + | // SetHandlerContext sets the base context for message handler dispatch. | |
| 145 | + | SetHandlerContext(ctx context.Context) | |
| 146 | + | ||
| 147 | + | // InternalFilterManager returns the FilterManager for content filter lifecycle. | |
| 148 | + | // Returns nil if content filtering is not supported. | |
| 149 | + | InternalFilterManager() FilterManager | |
| 143 | 150 | } | |
| 144 | 151 | ||
| 145 | 152 | // EngineSettingsUpdate carries a runtime config change to the engine. | |
| @@ -140,6 +140,13 @@ type Engine interface { | |||||
| 140 | 140 | ||||
| 141 | // UpdateSettings applies runtime config changes to engine internals. | 141 | // UpdateSettings applies runtime config changes to engine internals. | ||
| 142 | UpdateSettings(ctx context.Context, update EngineSettingsUpdate) error | 142 | UpdateSettings(ctx context.Context, update EngineSettingsUpdate) error | ||
| 143 | + | ||||
| 144 | + | // SetHandlerContext sets the base context for message handler dispatch. | |||
| 145 | + | SetHandlerContext(ctx context.Context) | |||
| 146 | + | ||||
| 147 | + | // InternalFilterManager returns the FilterManager for content filter lifecycle. | |||
| 148 | + | // Returns nil if content filtering is not supported. | |||
| 149 | + | InternalFilterManager() FilterManager | |||
| 143 | } | 150 | } | ||
| 144 | 151 | ||||
| 145 | // EngineSettingsUpdate carries a runtime config change to the engine. | 152 | // EngineSettingsUpdate carries a runtime config change to the engine. | ||
M internal/infrastructure/webkit/engine.go +8 -1
| @@ -97,7 +97,14 @@ func (e *Engine) InternalInjector() *ContentInjector { return e.injector | |||
| 97 | 97 | func (e *Engine) InternalMessageRouter() *MessageRouter { return e.messageRouter } | |
| 98 | 98 | func (e *Engine) InternalPool() *WebViewPool { return e.pool } | |
| 99 | 99 | func (e *Engine) InternalFactory() *WebViewFactory { return e.factory } | |
| 100 | - | func (e *Engine) InternalFilterManager() *filtering.Manager { return e.filterManager } | |
| 100 | + | func (e *Engine) InternalFilterManager() port.FilterManager { return e.filterManager } | |
| 101 | + | ||
| 102 | + | // SetHandlerContext sets the base context for message handler dispatch. | |
| 103 | + | func (e *Engine) SetHandlerContext(ctx context.Context) { | |
| 104 | + | if e.messageRouter != nil { | |
| 105 | + | e.messageRouter.SetBaseContext(ctx) | |
| 106 | + | } | |
| 107 | + | } | |
| 101 | 108 | ||
| 102 | 109 | // RegisterHandlers registers all WebUI message bridge handlers. | |
| 103 | 110 | func (e *Engine) RegisterHandlers(ctx context.Context, deps port.HandlerDependencies) error { | |
| @@ -97,7 +97,14 @@ func (e *Engine) InternalInjector() *ContentInjector { return e.injector | |||||
| 97 | func (e *Engine) InternalMessageRouter() *MessageRouter { return e.messageRouter } | 97 | func (e *Engine) InternalMessageRouter() *MessageRouter { return e.messageRouter } | ||
| 98 | func (e *Engine) InternalPool() *WebViewPool { return e.pool } | 98 | func (e *Engine) InternalPool() *WebViewPool { return e.pool } | ||
| 99 | func (e *Engine) InternalFactory() *WebViewFactory { return e.factory } | 99 | func (e *Engine) InternalFactory() *WebViewFactory { return e.factory } | ||
| 100 | - | func (e *Engine) InternalFilterManager() *filtering.Manager { return e.filterManager } | 100 | + | func (e *Engine) InternalFilterManager() port.FilterManager { return e.filterManager } |
| 101 | + | ||||
| 102 | + | // SetHandlerContext sets the base context for message handler dispatch. | |||
| 103 | + | func (e *Engine) SetHandlerContext(ctx context.Context) { | |||
| 104 | + | if e.messageRouter != nil { | |||
| 105 | + | e.messageRouter.SetBaseContext(ctx) | |||
| 106 | + | } | |||
| 107 | + | } | |||
| 101 | 108 | ||||
| 102 | // RegisterHandlers registers all WebUI message bridge handlers. | 109 | // RegisterHandlers registers all WebUI message bridge handlers. | ||
| 103 | func (e *Engine) RegisterHandlers(ctx context.Context, deps port.HandlerDependencies) error { | 110 | func (e *Engine) RegisterHandlers(ctx context.Context, deps port.HandlerDependencies) error { | ||