Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion lib/desktop/impl/host_browser.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ defmodule Desktop.Impl.HostBrowser do

alias Desktop.OS

@spec open(String.t()) :: :ok
@spec open(String.t() | charlist()) :: :ok
def open(url) when is_list(url), do: open(List.to_string(url))

def open(url) when is_binary(url) do
spawn(fn -> run_open(url) end)
:ok
Expand Down
8 changes: 7 additions & 1 deletion lib/desktop/platform/system.ex
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,13 @@ defmodule Desktop.Platform.System do
end

def wx_available?, do: impl().wx_available?()
def open_external_url(url), do: Helpers.with_wx_env(fn -> impl().open_external_url(url) end)

# wxWebView and other OTP APIs pass URLs as charlists; backends expect binaries.
def open_external_url(url) when is_list(url), do: open_external_url(List.to_string(url))

def open_external_url(url) when is_binary(url) do
Helpers.with_wx_env(fn -> impl().open_external_url(url) end)
end

@doc """
Returns a human-readable OS / device description string.
Expand Down
6 changes: 6 additions & 0 deletions test/desktop/backend/browser_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,12 @@ defmodule Desktop.Backend.BrowserTest do
refute Browser.wx_available?()
end

test "T-BRW: open_external_url accepts binary and charlist" do
assert :ok = Browser.open_external_url("https://example.com")
assert :ok = Browser.open_external_url(~c"https://example.com")
assert :ok = Desktop.Impl.HostBrowser.open(~c"https://example.com")
end

test "T-BRW: content reload is no-op" do
assert :ok = Browser.reload(nil)
end
Expand Down
6 changes: 6 additions & 0 deletions test/desktop/regression/beam_wx_calls_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ defmodule Desktop.Regression.BeamWxCallsTest do
assert :ok = PlatformSystem.open_external_url("https://example.com")
end

test "open_external_url accepts wx-style charlist URLs" do
assert :ok = PlatformSystem.open_external_url(~c"https://example.com")
assert is_pid(Desktop.OS.launch_default_browser(~c"https://example.com"))
Process.sleep(50)
end

test "activate_event_active? on Json backend returns true without wx" do
assert Json.activate_event_active?(%{})
assert PlatformSystem.activate_event_active?(%{})
Expand Down
Loading