| 1 | package hostrpc |
| 2 | |
| 3 | import ( |
| 4 | "context" |
| 5 | "testing" |
| 6 | |
| 7 | "reasonix/internal/extension/rpcwire" |
| 8 | ) |
| 9 | |
| 10 | func TestBrowserControlHookReceivesEnabledFlag(t *testing.T) { |
| 11 | var seen []bool |
| 12 | h := newHarness(t, &fixtureTarget{}, Hooks{ |
| 13 | BrowserControl: func(_ context.Context, enabled bool) error { |
| 14 | seen = append(seen, enabled) |
| 15 | return nil |
| 16 | }, |
| 17 | }) |
| 18 | h.mustHello() |
| 19 | for _, enabled := range []bool{false, true} { |
| 20 | var empty map[string]any |
| 21 | if err := h.call("desktop/browserControl", map[string]bool{"enabled": enabled}, &empty); err != nil || len(empty) != 0 { |
| 22 | t.Fatalf("browserControl enabled=%v = %v, %v", enabled, empty, err) |
| 23 | } |
| 24 | } |
| 25 | if len(seen) != 2 || seen[0] || !seen[1] { |
| 26 | t.Fatalf("hook saw %v, want [false true]", seen) |
| 27 | } |
| 28 | } |
| 29 | |
| 30 | func TestBrowserControlRequiresEnabledFlag(t *testing.T) { |
| 31 | h := newHarness(t, &fixtureTarget{}, Hooks{BrowserControl: func(context.Context, bool) error { |
| 32 | t.Error("hook must not run without the flag") |
| 33 | return nil |
| 34 | }}) |
| 35 | h.mustHello() |
| 36 | assertCode(t, h.call("desktop/browserControl", map[string]any{}, nil), rpcwire.ErrInvalidParams, "") |
| 37 | } |
| 38 |