Skip to content

Bug | Fix handling of app:// URLs containing a #fragment #281

@AnnaSasDev

Description

@AnnaSasDev

Impact

Low

Problem / Motivation

Custom scheme + URI policy exist, but there is no dedicated regression test for app://...#fragment preservation in navigation and message-origin flows.

Current behavior

Relevant primitives exist in the files listed above, but this backlog item does not have a complete, explicit InfiniFrame contract with dedicated coverage.

Expected behavior

Add integration tests for scheme URLs with fragments, fetch/XHR, and CORS headers; adjust scheme response metadata and origin policy handling as needed.

Proposed solution

Implement this incrementally:

  1. Define/adjust the managed public API in InfiniFrame.Shared.
  2. Wire implementation in InfiniFrame and InfiniFrame.Native where required.
  3. Add focused tests (tests/InfiniFrameTests*) and docs updates (docs/docs/guides/*, docs/docs/migration/*).

Alternatives considered

  • Keep as unsupported and document migration limitation.
  • Provide a workaround-only approach without first-class API.

Use case

Applications migrating from Photino expect this behavior and currently need custom handling for "Fix handling of app:// URLs containing a #fragment".

Example implementation (current API)

using System.Text;

var builder = InfiniFrameWindowBuilder.Create()
    .SetAllowedNavigationSchemes("https", "http", "file", "app")
    .RegisterCustomSchemeHandler("app", (_, _, url, out string? contentType) => {
        contentType = "text/html";
        var html = """
<!doctype html>
<html>
<body>
  <a href='app://host/index.html#settings'>Go to #settings</a>
  <div id='settings'>Settings section</div>
</body>
</html>
""";
        return new MemoryStream(Encoding.UTF8.GetBytes(html));
    });

var window = builder.Build();
window.Load("app://host/index.html#settings");
window.WaitForClose();

Technical proposal

Scope implementation to: Blazor window host and UI bridge (src/InfiniFrame.Blazor*, src/InfiniFrame.BlazorWebView*). Keep behavior deterministic across Windows/Linux/macOS and document platform-specific limitations explicitly.

Additional context

Photino reference: tryphotino/photino.Blazor#166

Checklist

  • I searched existing issues
  • This is not a support question

Metadata

Metadata

Assignees

No one assigned

    Labels

    Photino BacklogItems that are hold overs from Photino that they either never resolved or implementedbugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions