detached 3d33f1d

refactor(engine): remove stubbed SchemeHandler and MessageRouter from Engine interface

commit
3d33f1dcc5756618dae03723d1cfba856759b48c
author
brice · · 2026-03-18 05:45 UTC
parent
9cd7713
signature
GPG VerifiedCD88F9E564E0102646FB6077A1A07C7C7C3E349D · arch-gpg Verified for the committer email
4 files · +0 -156
M internal/application/port/engine.go +0 -6
@@ -98,15 +98,9 @@ type Engine interface {
9898 // Pool returns the WebViewPool for acquiring pre-warmed WebView instances.
9999 Pool() WebViewPool
100100
101- // SchemeHandler returns the SchemeHandler for registering custom URI schemes.
102- SchemeHandler() SchemeHandler
103-
104101 // ContentInjector returns the ContentInjector for injecting scripts and styles.
105102 ContentInjector() ContentInjector
106103
107- // MessageRouter returns the MessageRouter for JS-to-Go message passing.
108- MessageRouter() MessageRouter
109-
110104 // SettingsApplier returns the SettingsApplier for applying browser settings.
111105 SettingsApplier() SettingsApplier
112106
@@ -98,15 +98,9 @@ type Engine interface {
98 // Pool returns the WebViewPool for acquiring pre-warmed WebView instances.98 // Pool returns the WebViewPool for acquiring pre-warmed WebView instances.
99 Pool() WebViewPool99 Pool() WebViewPool
100 100
101- // SchemeHandler returns the SchemeHandler for registering custom URI schemes.
102- SchemeHandler() SchemeHandler
103-
104 // ContentInjector returns the ContentInjector for injecting scripts and styles.101 // ContentInjector returns the ContentInjector for injecting scripts and styles.
105 ContentInjector() ContentInjector102 ContentInjector() ContentInjector
106 103
107- // MessageRouter returns the MessageRouter for JS-to-Go message passing.
108- MessageRouter() MessageRouter
109-
110 // SettingsApplier returns the SettingsApplier for applying browser settings.104 // SettingsApplier returns the SettingsApplier for applying browser settings.
111 SettingsApplier() SettingsApplier105 SettingsApplier() SettingsApplier
112 106
M internal/application/port/mocks/mocks.go +0 -92
@@ -2966,52 +2966,6 @@ func (_c *MockEngine_InternalSchemePath_Call) RunAndReturn(run func() string) *M
29662966 return _c
29672967 }
29682968
2969-// MessageRouter provides a mock function for the type MockEngine
2970-func (_mock *MockEngine) MessageRouter() port.MessageRouter {
2971- ret := _mock.Called()
2972-
2973- if len(ret) == 0 {
2974- panic("no return value specified for MessageRouter")
2975- }
2976-
2977- var r0 port.MessageRouter
2978- if returnFunc, ok := ret.Get(0).(func() port.MessageRouter); ok {
2979- r0 = returnFunc()
2980- } else {
2981- if ret.Get(0) != nil {
2982- r0 = ret.Get(0).(port.MessageRouter)
2983- }
2984- }
2985- return r0
2986-}
2987-
2988-// MockEngine_MessageRouter_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'MessageRouter'
2989-type MockEngine_MessageRouter_Call struct {
2990- *mock.Call
2991-}
2992-
2993-// MessageRouter is a helper method to define mock.On call
2994-func (_e *MockEngine_Expecter) MessageRouter() *MockEngine_MessageRouter_Call {
2995- return &MockEngine_MessageRouter_Call{Call: _e.mock.On("MessageRouter")}
2996-}
2997-
2998-func (_c *MockEngine_MessageRouter_Call) Run(run func()) *MockEngine_MessageRouter_Call {
2999- _c.Call.Run(func(args mock.Arguments) {
3000- run()
3001- })
3002- return _c
3003-}
3004-
3005-func (_c *MockEngine_MessageRouter_Call) Return(messageRouter port.MessageRouter) *MockEngine_MessageRouter_Call {
3006- _c.Call.Return(messageRouter)
3007- return _c
3008-}
3009-
3010-func (_c *MockEngine_MessageRouter_Call) RunAndReturn(run func() port.MessageRouter) *MockEngine_MessageRouter_Call {
3011- _c.Call.Return(run)
3012- return _c
3013-}
3014-
30152969 // OnToolkitReady provides a mock function for the type MockEngine
30162970 func (_mock *MockEngine) OnToolkitReady(ctx context.Context) error {
30172971 ret := _mock.Called(ctx)
@@ -3223,52 +3177,6 @@ func (_c *MockEngine_RegisterHandlers_Call) RunAndReturn(run func(ctx context.Co
32233177 return _c
32243178 }
32253179
3226-// SchemeHandler provides a mock function for the type MockEngine
3227-func (_mock *MockEngine) SchemeHandler() port.SchemeHandler {
3228- ret := _mock.Called()
3229-
3230- if len(ret) == 0 {
3231- panic("no return value specified for SchemeHandler")
3232- }
3233-
3234- var r0 port.SchemeHandler
3235- if returnFunc, ok := ret.Get(0).(func() port.SchemeHandler); ok {
3236- r0 = returnFunc()
3237- } else {
3238- if ret.Get(0) != nil {
3239- r0 = ret.Get(0).(port.SchemeHandler)
3240- }
3241- }
3242- return r0
3243-}
3244-
3245-// MockEngine_SchemeHandler_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SchemeHandler'
3246-type MockEngine_SchemeHandler_Call struct {
3247- *mock.Call
3248-}
3249-
3250-// SchemeHandler is a helper method to define mock.On call
3251-func (_e *MockEngine_Expecter) SchemeHandler() *MockEngine_SchemeHandler_Call {
3252- return &MockEngine_SchemeHandler_Call{Call: _e.mock.On("SchemeHandler")}
3253-}
3254-
3255-func (_c *MockEngine_SchemeHandler_Call) Run(run func()) *MockEngine_SchemeHandler_Call {
3256- _c.Call.Run(func(args mock.Arguments) {
3257- run()
3258- })
3259- return _c
3260-}
3261-
3262-func (_c *MockEngine_SchemeHandler_Call) Return(schemeHandler port.SchemeHandler) *MockEngine_SchemeHandler_Call {
3263- _c.Call.Return(schemeHandler)
3264- return _c
3265-}
3266-
3267-func (_c *MockEngine_SchemeHandler_Call) RunAndReturn(run func() port.SchemeHandler) *MockEngine_SchemeHandler_Call {
3268- _c.Call.Return(run)
3269- return _c
3270-}
3271-
32723180 // SetHandlerContext provides a mock function for the type MockEngine
32733181 func (_mock *MockEngine) SetHandlerContext(ctx context.Context) {
32743182 _mock.Called(ctx)
@@ -2966,52 +2966,6 @@ func (_c *MockEngine_InternalSchemePath_Call) RunAndReturn(run func() string) *M
2966 return _c2966 return _c
2967 }2967 }
2968 2968
2969-// MessageRouter provides a mock function for the type MockEngine
2970-func (_mock *MockEngine) MessageRouter() port.MessageRouter {
2971- ret := _mock.Called()
2972-
2973- if len(ret) == 0 {
2974- panic("no return value specified for MessageRouter")
2975- }
2976-
2977- var r0 port.MessageRouter
2978- if returnFunc, ok := ret.Get(0).(func() port.MessageRouter); ok {
2979- r0 = returnFunc()
2980- } else {
2981- if ret.Get(0) != nil {
2982- r0 = ret.Get(0).(port.MessageRouter)
2983- }
2984- }
2985- return r0
2986-}
2987-
2988-// MockEngine_MessageRouter_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'MessageRouter'
2989-type MockEngine_MessageRouter_Call struct {
2990- *mock.Call
2991-}
2992-
2993-// MessageRouter is a helper method to define mock.On call
2994-func (_e *MockEngine_Expecter) MessageRouter() *MockEngine_MessageRouter_Call {
2995- return &MockEngine_MessageRouter_Call{Call: _e.mock.On("MessageRouter")}
2996-}
2997-
2998-func (_c *MockEngine_MessageRouter_Call) Run(run func()) *MockEngine_MessageRouter_Call {
2999- _c.Call.Run(func(args mock.Arguments) {
3000- run()
3001- })
3002- return _c
3003-}
3004-
3005-func (_c *MockEngine_MessageRouter_Call) Return(messageRouter port.MessageRouter) *MockEngine_MessageRouter_Call {
3006- _c.Call.Return(messageRouter)
3007- return _c
3008-}
3009-
3010-func (_c *MockEngine_MessageRouter_Call) RunAndReturn(run func() port.MessageRouter) *MockEngine_MessageRouter_Call {
3011- _c.Call.Return(run)
3012- return _c
3013-}
3014-
3015 // OnToolkitReady provides a mock function for the type MockEngine2969 // OnToolkitReady provides a mock function for the type MockEngine
3016 func (_mock *MockEngine) OnToolkitReady(ctx context.Context) error {2970 func (_mock *MockEngine) OnToolkitReady(ctx context.Context) error {
3017 ret := _mock.Called(ctx)2971 ret := _mock.Called(ctx)
@@ -3223,52 +3177,6 @@ func (_c *MockEngine_RegisterHandlers_Call) RunAndReturn(run func(ctx context.Co
3223 return _c3177 return _c
3224 }3178 }
3225 3179
3226-// SchemeHandler provides a mock function for the type MockEngine
3227-func (_mock *MockEngine) SchemeHandler() port.SchemeHandler {
3228- ret := _mock.Called()
3229-
3230- if len(ret) == 0 {
3231- panic("no return value specified for SchemeHandler")
3232- }
3233-
3234- var r0 port.SchemeHandler
3235- if returnFunc, ok := ret.Get(0).(func() port.SchemeHandler); ok {
3236- r0 = returnFunc()
3237- } else {
3238- if ret.Get(0) != nil {
3239- r0 = ret.Get(0).(port.SchemeHandler)
3240- }
3241- }
3242- return r0
3243-}
3244-
3245-// MockEngine_SchemeHandler_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SchemeHandler'
3246-type MockEngine_SchemeHandler_Call struct {
3247- *mock.Call
3248-}
3249-
3250-// SchemeHandler is a helper method to define mock.On call
3251-func (_e *MockEngine_Expecter) SchemeHandler() *MockEngine_SchemeHandler_Call {
3252- return &MockEngine_SchemeHandler_Call{Call: _e.mock.On("SchemeHandler")}
3253-}
3254-
3255-func (_c *MockEngine_SchemeHandler_Call) Run(run func()) *MockEngine_SchemeHandler_Call {
3256- _c.Call.Run(func(args mock.Arguments) {
3257- run()
3258- })
3259- return _c
3260-}
3261-
3262-func (_c *MockEngine_SchemeHandler_Call) Return(schemeHandler port.SchemeHandler) *MockEngine_SchemeHandler_Call {
3263- _c.Call.Return(schemeHandler)
3264- return _c
3265-}
3266-
3267-func (_c *MockEngine_SchemeHandler_Call) RunAndReturn(run func() port.SchemeHandler) *MockEngine_SchemeHandler_Call {
3268- _c.Call.Return(run)
3269- return _c
3270-}
3271-
3272 // SetHandlerContext provides a mock function for the type MockEngine3180 // SetHandlerContext provides a mock function for the type MockEngine
3273 func (_mock *MockEngine) SetHandlerContext(ctx context.Context) {3181 func (_mock *MockEngine) SetHandlerContext(ctx context.Context) {
3274 _mock.Called(ctx)3182 _mock.Called(ctx)
M internal/infrastructure/webkit/engine.go +0 -10
@@ -60,16 +60,6 @@ func (e *Engine) Close() error {
6060 return nil
6161 }
6262
63-// SchemeHandler returns a port.SchemeHandler adapter for the DumbSchemeHandler.
64-func (e *Engine) SchemeHandler() port.SchemeHandler {
65- return &schemeHandlerAdapter{handler: e.schemeHandler, logger: e.logger}
66-}
67-
68-// MessageRouter returns a port.MessageRouter adapter for the internal MessageRouter.
69-func (e *Engine) MessageRouter() port.MessageRouter {
70- return &messageRouterAdapter{router: e.messageRouter, logger: e.logger}
71-}
72-
7363 // SettingsApplier returns a port.SettingsApplier adapter for the SettingsManager.
7464 func (e *Engine) SettingsApplier() port.SettingsApplier {
7565 return &settingsApplierAdapter{settings: e.settings}
@@ -60,16 +60,6 @@ func (e *Engine) Close() error {
60 return nil60 return nil
61 }61 }
62 62
63-// SchemeHandler returns a port.SchemeHandler adapter for the DumbSchemeHandler.
64-func (e *Engine) SchemeHandler() port.SchemeHandler {
65- return &schemeHandlerAdapter{handler: e.schemeHandler, logger: e.logger}
66-}
67-
68-// MessageRouter returns a port.MessageRouter adapter for the internal MessageRouter.
69-func (e *Engine) MessageRouter() port.MessageRouter {
70- return &messageRouterAdapter{router: e.messageRouter, logger: e.logger}
71-}
72-
73 // SettingsApplier returns a port.SettingsApplier adapter for the SettingsManager.63 // SettingsApplier returns a port.SettingsApplier adapter for the SettingsManager.
74 func (e *Engine) SettingsApplier() port.SettingsApplier {64 func (e *Engine) SettingsApplier() port.SettingsApplier {
75 return &settingsApplierAdapter{settings: e.settings}65 return &settingsApplierAdapter{settings: e.settings}
M internal/infrastructure/webkit/engine_adapters.go +0 -48
@@ -8,7 +8,6 @@ import (
88 "github.com/bnema/dumber/internal/infrastructure/filtering"
99 "github.com/bnema/dumber/internal/logging"
1010 "github.com/jwijenbergh/puregotk/v4/gio"
11- "github.com/rs/zerolog"
1211 )
1312
1413 // --- WebViewFactory adapter ---
@@ -84,53 +83,6 @@ func (a *webViewPoolAdapter) Close() {
8483 a.pool.Close(a.ctx)
8584 }
8685
87-// --- SchemeHandler adapter ---
88-
89-// schemeHandlerAdapter bridges *DumbSchemeHandler to port.SchemeHandler.
90-// DumbSchemeHandler uses a page-based registration pattern (RegisterPage) rather
91-// than a generic scheme+handler registration; this adapter is a stub until
92-// consumers are migrated.
93-type schemeHandlerAdapter struct {
94- handler *DumbSchemeHandler
95- logger zerolog.Logger
96-}
97-
98-func (a *schemeHandlerAdapter) RegisterScheme(scheme string, _ func(uri string) ([]byte, string, error)) {
99- // DumbSchemeHandler handles the "dumb" scheme exclusively via RegisterPage/RegisterWithContext.
100- // Generic scheme registration is not yet wired through this adapter.
101- a.logger.Warn().
102- Str("scheme", scheme).
103- Msg("schemeHandlerAdapter.RegisterScheme: not implemented — DumbSchemeHandler uses RegisterPage/RegisterWithContext pattern")
104-}
105-
106-// --- MessageRouter adapter ---
107-
108-// messageRouterAdapter bridges *MessageRouter to port.MessageRouter.
109-// The internal MessageRouter uses a typed MessageHandler interface rather than
110-// the simple func(string)(string,error) signature in the port interface.
111-// PostMessage is also not directly available on the internal type.
112-type messageRouterAdapter struct {
113- router *MessageRouter
114- logger zerolog.Logger
115-}
116-
117-func (a *messageRouterAdapter) RegisterHandler(name string, _ func(message string) (string, error)) {
118- // Internal MessageRouter.RegisterHandler takes a MessageHandler interface, not a plain func.
119- // Wire up via RegisterHandler(msgType, MessageHandlerFunc{...}) when consumers are migrated.
120- a.logger.Warn().
121- Str("handler", name).
122- Msg("messageRouterAdapter.RegisterHandler: not implemented — use MessageRouter.RegisterHandler(msgType, MessageHandler) directly")
123-}
124-
125-func (*messageRouterAdapter) PostMessage(webviewID port.WebViewID, message string) error {
126- wv := LookupWebView(webviewID)
127- if wv == nil {
128- return fmt.Errorf("webview %d not found", webviewID)
129- }
130- wv.RunJavaScript(context.Background(), message)
131- return nil
132-}
133-
13486 // --- SettingsApplier adapter ---
13587
13688 // settingsApplierAdapter bridges *SettingsManager to port.SettingsApplier.
@@ -8,7 +8,6 @@ import (
8 "github.com/bnema/dumber/internal/infrastructure/filtering"8 "github.com/bnema/dumber/internal/infrastructure/filtering"
9 "github.com/bnema/dumber/internal/logging"9 "github.com/bnema/dumber/internal/logging"
10 "github.com/jwijenbergh/puregotk/v4/gio"10 "github.com/jwijenbergh/puregotk/v4/gio"
11- "github.com/rs/zerolog"
12 )11 )
13 12
14 // --- WebViewFactory adapter ---13 // --- WebViewFactory adapter ---
@@ -84,53 +83,6 @@ func (a *webViewPoolAdapter) Close() {
84 a.pool.Close(a.ctx)83 a.pool.Close(a.ctx)
85 }84 }
86 85
87-// --- SchemeHandler adapter ---
88-
89-// schemeHandlerAdapter bridges *DumbSchemeHandler to port.SchemeHandler.
90-// DumbSchemeHandler uses a page-based registration pattern (RegisterPage) rather
91-// than a generic scheme+handler registration; this adapter is a stub until
92-// consumers are migrated.
93-type schemeHandlerAdapter struct {
94- handler *DumbSchemeHandler
95- logger zerolog.Logger
96-}
97-
98-func (a *schemeHandlerAdapter) RegisterScheme(scheme string, _ func(uri string) ([]byte, string, error)) {
99- // DumbSchemeHandler handles the "dumb" scheme exclusively via RegisterPage/RegisterWithContext.
100- // Generic scheme registration is not yet wired through this adapter.
101- a.logger.Warn().
102- Str("scheme", scheme).
103- Msg("schemeHandlerAdapter.RegisterScheme: not implemented — DumbSchemeHandler uses RegisterPage/RegisterWithContext pattern")
104-}
105-
106-// --- MessageRouter adapter ---
107-
108-// messageRouterAdapter bridges *MessageRouter to port.MessageRouter.
109-// The internal MessageRouter uses a typed MessageHandler interface rather than
110-// the simple func(string)(string,error) signature in the port interface.
111-// PostMessage is also not directly available on the internal type.
112-type messageRouterAdapter struct {
113- router *MessageRouter
114- logger zerolog.Logger
115-}
116-
117-func (a *messageRouterAdapter) RegisterHandler(name string, _ func(message string) (string, error)) {
118- // Internal MessageRouter.RegisterHandler takes a MessageHandler interface, not a plain func.
119- // Wire up via RegisterHandler(msgType, MessageHandlerFunc{...}) when consumers are migrated.
120- a.logger.Warn().
121- Str("handler", name).
122- Msg("messageRouterAdapter.RegisterHandler: not implemented — use MessageRouter.RegisterHandler(msgType, MessageHandler) directly")
123-}
124-
125-func (*messageRouterAdapter) PostMessage(webviewID port.WebViewID, message string) error {
126- wv := LookupWebView(webviewID)
127- if wv == nil {
128- return fmt.Errorf("webview %d not found", webviewID)
129- }
130- wv.RunJavaScript(context.Background(), message)
131- return nil
132-}
133-
134 // --- SettingsApplier adapter ---86 // --- SettingsApplier adapter ---
135 87
136 // settingsApplierAdapter bridges *SettingsManager to port.SettingsApplier.88 // settingsApplierAdapter bridges *SettingsManager to port.SettingsApplier.

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 8

Tags 42

↑↓ moveenter openesc close