Skip to content

Instantly share code, notes, and snippets.

@dotproto
Last active March 10, 2025 01:32
Show Gist options
  • Save dotproto/f199f3f0ed96b50761e4b537c72f26b8 to your computer and use it in GitHub Desktop.
Save dotproto/f199f3f0ed96b50761e4b537c72f26b8 to your computer and use it in GitHub Desktop.
Host permission patterns with ports

This gist contains a WebExtension that tests how the browser that runs it handles ports host permission patterns.

Running tests

  1. (optional) Create a new browser profile to ensure that this test runs in a clean environment.
  2. Load this extension in your browser.
  3. Start a debug session for the extension's background context.
  4. (optional) Diable "debug" or "verbose" log messages
  5. Check if your browser auto-upgrades HTTP requests to HTTPS by calling testHttpUpgrades() in the console. If you see a console message that says "Your browser auto-upgraded one or more HTTP requests to HTTPS!", consult the HTTPs Upgrades section below.
  6. In the extension menu, click the extension named "host perms with ports"
  7. Wait for the browser to finish opening and closing tabs.

HTTPs upgrades

Some browsers will automatically upgrade HTTP requests to HTTPS. While that's generally good, it creates a problem for us because it prevents HTTP match patterns from matching any web navigations. In order to make checking HTTP upgrade behavior easier, you can use the testHttpUpgrades() function in the console to check if you need to do anything special.

> testHttpsUpgrades()
http://example.com
http://www.example.com
http://example.net
http://www.example.net
http://example.org
http://www.example.org
http://example.edu
http://www.example.edu
Your browser auto-upgraded one or more HTTP requests to HTTPS!

If this command logs "Your browser auto-upgraded one or more HTTP requests to HTTPS!", check the appropriate browser-specific section for instructions on how to work around this behavior.

Chrome

Chrome will automatically upgrade HTTP requests to HTTPS unless the user manually changes the URL in the navigation bar from HTTPS to HTTP. Even after manually navigating to HTTP, though, Chrome will return to automatically upgrading to HTTPS after the first navigation to HTTPS for a given protocol + host (e.g. http://www.example.com). The port is ignored.

To work around this, you will need to manually navigate from the HTTPS page to the HTTP version. The testHttpUpgrades() function creates a tab for each URL for which you'll need to do this. Once you've manually navigated and verified that the address bar shows "Not Secure", you can close the tab.

Screenshot 2024-12-03 at 3 32 35 PM Screenshot 2024-12-03 at 3 32 57 PM Screenshot 2024-12-03 at 3 33 00 PM Screenshot 2024-12-03 at 3 33 05 PM

Firefox 132.0 results

manifest patterns (64): ["http://example.com","http://example.com:80","http://example.com:443","http://example.com:8080","http://www.example.com/","http://www.example.com:80/","http://www.example.com:443/","http://www.example.com:8080/","http://example.net/*","http://example.net:80/*","http://example.net:443/*","http://example.net:8080/*","http://www.example.net/test","http://www.example.net:80/test","http://www.example.net:443/test","http://www.example.net:8080/test","http://example.org//*","http://example.org:80//*","http://example.org:443//*","http://example.org:8080//*","http://www.example.org//test","http://www.example.org:80//test","http://www.example.org:443//test","http://www.example.org:8080//test","http://example.edu/*#fragment","http://example.edu:80/*#fragment","http://example.edu:443/*#fragment","http://example.edu:8080/*#fragment","http://www.example.edu/test/*#fragment","http://www.example.edu:80/test/*#fragment","http://www.example.edu:443/test/*#fragment","http://www.example.edu:8080/test/*#fragment","https://example.com","https://example.com:80","https://example.com:443","https://example.com:8080","https://www.example.com/","https://www.example.com:80/","https://www.example.com:443/","https://www.example.com:8080/","https://example.net/*","https://example.net:80/*","https://example.net:443/*","https://example.net:8080/*","https://www.example.net/test","https://www.example.net:80/test","https://www.example.net:443/test","https://www.example.net:8080/test","https://example.org//*","https://example.org:80//*","https://example.org:443//*","https://example.org:8080//*","https://www.example.org//test","https://www.example.org:80//test","https://www.example.org:443//test","https://www.example.org:8080//test","https://example.edu/*#fragment","https://example.edu:80/*#fragment","https://example.edu:443/*#fragment","https://example.edu:8080/*#fragment","https://www.example.edu/test/*#fragment","https://www.example.edu:80/test/*#fragment","https://www.example.edu:443/test/*#fragment","https://www.example.edu:8080/test/*#fragment"]
granted  patterns (56): ["http://www.example.com/*","http://www.example.com:80/*","http://www.example.com:443/*","http://www.example.com:8080/*","http://example.net/*","http://example.net:80/*","http://example.net:443/*","http://example.net:8080/*","http://www.example.net/*","http://www.example.net:80/*","http://www.example.net:443/*","http://www.example.net:8080/*","http://example.org/*","http://example.org:80/*","http://example.org:443/*","http://example.org:8080/*","http://www.example.org/*","http://www.example.org:80/*","http://www.example.org:443/*","http://www.example.org:8080/*","http://example.edu/*","http://example.edu:80/*","http://example.edu:443/*","http://example.edu:8080/*","http://www.example.edu/*","http://www.example.edu:80/*","http://www.example.edu:443/*","http://www.example.edu:8080/*","https://www.example.com/*","https://www.example.com:80/*","https://www.example.com:443/*","https://www.example.com:8080/*","https://example.net/*","https://example.net:80/*","https://example.net:443/*","https://example.net:8080/*","https://www.example.net/*","https://www.example.net:80/*","https://www.example.net:443/*","https://www.example.net:8080/*","https://example.org/*","https://example.org:80/*","https://example.org:443/*","https://example.org:8080/*","https://www.example.org/*","https://www.example.org:80/*","https://www.example.org:443/*","https://www.example.org:8080/*","https://example.edu/*","https://example.edu:80/*","https://example.edu:443/*","https://example.edu:8080/*","https://www.example.edu/*","https://www.example.edu:80/*","https://www.example.edu:443/*","https://www.example.edu:8080/*"]
pattern origins (64): ["http://example.com","http://example.com:80","http://example.com:443","http://example.com:8080","http://www.example.com","http://www.example.com:80","http://www.example.com:443","http://www.example.com:8080","http://example.net","http://example.net:80","http://example.net:443","http://example.net:8080","http://www.example.net","http://www.example.net:80","http://www.example.net:443","http://www.example.net:8080","http://example.org","http://example.org:80","http://example.org:443","http://example.org:8080","http://www.example.org","http://www.example.org:80","http://www.example.org:443","http://www.example.org:8080","http://example.edu","http://example.edu:80","http://example.edu:443","http://example.edu:8080","http://www.example.edu","http://www.example.edu:80","http://www.example.edu:443","http://www.example.edu:8080","https://example.com","https://example.com:80","https://example.com:443","https://example.com:8080","https://www.example.com","https://www.example.com:80","https://www.example.com:443","https://www.example.com:8080","https://example.net","https://example.net:80","https://example.net:443","https://example.net:8080","https://www.example.net","https://www.example.net:80","https://www.example.net:443","https://www.example.net:8080","https://example.org","https://example.org:80","https://example.org:443","https://example.org:8080","https://www.example.org","https://www.example.org:80","https://www.example.org:443","https://www.example.org:8080","https://example.edu","https://example.edu:80","https://example.edu:443","https://example.edu:8080","https://www.example.edu","https://www.example.edu:80","https://www.example.edu:443","https://www.example.edu:8080"]
  Request URL                                        Observed URL (indicates pattern match)
Testing pattern "http://example.com"
  http://example.com                                 tab.url = undefined
  http://example.com#fragment                        tab.url = undefined
  http://example.com/                                tab.url = undefined
  http://example.com/#fragment                       tab.url = undefined
  http://example.com/subpath                         tab.url = undefined
  http://example.com/subpath#fragment                tab.url = undefined
  http://example.com/sub/path/                       tab.url = undefined
  http://example.com/sub/path/#fragment              tab.url = undefined
Testing pattern "http://example.com:80"
  http://example.com:80                              tab.url = undefined
  http://example.com:80#fragment                     tab.url = undefined
  http://example.com:80/                             tab.url = undefined
  http://example.com:80/#fragment                    tab.url = undefined
  http://example.com:80/subpath                      tab.url = undefined
  http://example.com:80/subpath#fragment             tab.url = undefined
  http://example.com:80/sub/path/                    tab.url = undefined
  http://example.com:80/sub/path/#fragment           tab.url = undefined
Testing pattern "http://example.com:443"
  http://example.com:443                             tab.url = undefined
  http://example.com:443#fragment                    tab.url = undefined
  http://example.com:443/                            tab.url = undefined
  http://example.com:443/#fragment                   tab.url = undefined
  http://example.com:443/subpath                     tab.url = undefined
  http://example.com:443/subpath#fragment            tab.url = undefined
  http://example.com:443/sub/path/                   tab.url = undefined
  http://example.com:443/sub/path/#fragment          tab.url = undefined
Testing pattern "http://example.com:8080"
  http://example.com:8080                            tab.url = TIMEOUT
  http://example.com:8080#fragment                   tab.url = TIMEOUT
  http://example.com:8080/                           tab.url = TIMEOUT
  http://example.com:8080/#fragment                  tab.url = TIMEOUT
  http://example.com:8080/subpath                    tab.url = TIMEOUT
  http://example.com:8080/subpath#fragment           tab.url = TIMEOUT
  http://example.com:8080/sub/path/                  tab.url = TIMEOUT
  http://example.com:8080/sub/path/#fragment         tab.url = TIMEOUT
Testing pattern "http://www.example.com/"
  http://www.example.com                             tab.url = http://www.example.com/
  http://www.example.com#fragment                    tab.url = http://www.example.com/#fragment
  http://www.example.com/                            tab.url = http://www.example.com/
  http://www.example.com/#fragment                   tab.url = http://www.example.com/#fragment
  http://www.example.com/subpath                     tab.url = http://www.example.com/subpath
  http://www.example.com/subpath#fragment            tab.url = http://www.example.com/subpath#fragment
  http://www.example.com/sub/path/                   tab.url = http://www.example.com/sub/path/
  http://www.example.com/sub/path/#fragment          tab.url = http://www.example.com/sub/path/#fragment
Testing pattern "http://www.example.com:80/"
  http://www.example.com:80                          tab.url = http://www.example.com/
  http://www.example.com:80#fragment                 tab.url = http://www.example.com/#fragment
  http://www.example.com:80/                         tab.url = http://www.example.com/
  http://www.example.com:80/#fragment                tab.url = http://www.example.com/#fragment
  http://www.example.com:80/subpath                  tab.url = http://www.example.com/subpath
  http://www.example.com:80/subpath#fragment         tab.url = http://www.example.com/subpath#fragment
  http://www.example.com:80/sub/path/                tab.url = http://www.example.com/sub/path/
  http://www.example.com:80/sub/path/#fragment       tab.url = http://www.example.com/sub/path/#fragment
Testing pattern "http://www.example.com:443/"
  http://www.example.com:443                         tab.url = undefined
  http://www.example.com:443#fragment                tab.url = undefined
  http://www.example.com:443/                        tab.url = undefined
  http://www.example.com:443/#fragment               tab.url = undefined
  http://www.example.com:443/subpath                 tab.url = undefined
  http://www.example.com:443/subpath#fragment        tab.url = undefined
  http://www.example.com:443/sub/path/               tab.url = undefined
  http://www.example.com:443/sub/path/#fragment      tab.url = undefined
Testing pattern "http://www.example.com:8080/"
  http://www.example.com:8080                        tab.url = TIMEOUT
  http://www.example.com:8080#fragment               tab.url = TIMEOUT
  http://www.example.com:8080/                       tab.url = TIMEOUT
  http://www.example.com:8080/#fragment              tab.url = TIMEOUT
  http://www.example.com:8080/subpath                tab.url = TIMEOUT
  http://www.example.com:8080/subpath#fragment       tab.url = TIMEOUT
  http://www.example.com:8080/sub/path/              tab.url = TIMEOUT
  http://www.example.com:8080/sub/path/#fragment     tab.url = TIMEOUT
Testing pattern "http://example.net/*"
  http://example.net                                 tab.url = http://example.net/
  http://example.net#fragment                        tab.url = http://example.net/#fragment
  http://example.net/                                tab.url = http://example.net/
  http://example.net/#fragment                       tab.url = http://example.net/#fragment
  http://example.net/subpath                         tab.url = http://example.net/subpath
  http://example.net/subpath#fragment                tab.url = http://example.net/subpath#fragment
  http://example.net/sub/path/                       tab.url = http://example.net/sub/path/
  http://example.net/sub/path/#fragment              tab.url = http://example.net/sub/path/#fragment
Testing pattern "http://example.net:80/*"
  http://example.net:80                              tab.url = http://example.net/
  http://example.net:80#fragment                     tab.url = http://example.net/#fragment
  http://example.net:80/                             tab.url = http://example.net/
  http://example.net:80/#fragment                    tab.url = http://example.net/#fragment
  http://example.net:80/subpath                      tab.url = http://example.net/subpath
  http://example.net:80/subpath#fragment             tab.url = http://example.net/subpath#fragment
  http://example.net:80/sub/path/                    tab.url = http://example.net/sub/path/
  http://example.net:80/sub/path/#fragment           tab.url = http://example.net/sub/path/#fragment
Testing pattern "http://example.net:443/*"
  http://example.net:443                             tab.url = undefined
  http://example.net:443#fragment                    tab.url = undefined
  http://example.net:443/                            tab.url = undefined
  http://example.net:443/#fragment                   tab.url = undefined
  http://example.net:443/subpath                     tab.url = undefined
  http://example.net:443/subpath#fragment            tab.url = undefined
  http://example.net:443/sub/path/                   tab.url = undefined
  http://example.net:443/sub/path/#fragment          tab.url = undefined
Testing pattern "http://example.net:8080/*"
  http://example.net:8080                            tab.url = TIMEOUT
  http://example.net:8080#fragment                   tab.url = TIMEOUT
  http://example.net:8080/                           tab.url = TIMEOUT
  http://example.net:8080/#fragment                  tab.url = TIMEOUT
  http://example.net:8080/subpath                    tab.url = TIMEOUT
  http://example.net:8080/subpath#fragment           tab.url = TIMEOUT
  http://example.net:8080/sub/path/                  tab.url = TIMEOUT
  http://example.net:8080/sub/path/#fragment         tab.url = TIMEOUT
Testing pattern "http://www.example.net/test"
  http://www.example.net                             tab.url = http://www.example.net/
  http://www.example.net#fragment                    tab.url = http://www.example.net/#fragment
  http://www.example.net/                            tab.url = http://www.example.net/
  http://www.example.net/#fragment                   tab.url = http://www.example.net/#fragment
  http://www.example.net/subpath                     tab.url = http://www.example.net/subpath
  http://www.example.net/subpath#fragment            tab.url = http://www.example.net/subpath#fragment
  http://www.example.net/sub/path/                   tab.url = http://www.example.net/sub/path/
  http://www.example.net/sub/path/#fragment          tab.url = http://www.example.net/sub/path/#fragment
Testing pattern "http://www.example.net:80/test"
  http://www.example.net:80                          tab.url = http://www.example.net/
  http://www.example.net:80#fragment                 tab.url = http://www.example.net/#fragment
  http://www.example.net:80/                         tab.url = http://www.example.net/
  http://www.example.net:80/#fragment                tab.url = http://www.example.net/#fragment
  http://www.example.net:80/subpath                  tab.url = http://www.example.net/subpath
  http://www.example.net:80/subpath#fragment         tab.url = http://www.example.net/subpath#fragment
  http://www.example.net:80/sub/path/                tab.url = http://www.example.net/sub/path/
  http://www.example.net:80/sub/path/#fragment       tab.url = http://www.example.net/sub/path/#fragment
Testing pattern "http://www.example.net:443/test"
  http://www.example.net:443                         tab.url = undefined
  http://www.example.net:443#fragment                tab.url = undefined
  http://www.example.net:443/                        tab.url = undefined
  http://www.example.net:443/#fragment               tab.url = undefined
  http://www.example.net:443/subpath                 tab.url = undefined
  http://www.example.net:443/subpath#fragment        tab.url = undefined
  http://www.example.net:443/sub/path/               tab.url = undefined
  http://www.example.net:443/sub/path/#fragment      tab.url = undefined
Testing pattern "http://www.example.net:8080/test"
  http://www.example.net:8080                        tab.url = TIMEOUT
  http://www.example.net:8080#fragment               tab.url = TIMEOUT
  http://www.example.net:8080/                       tab.url = TIMEOUT
  http://www.example.net:8080/#fragment              tab.url = TIMEOUT
  http://www.example.net:8080/subpath                tab.url = TIMEOUT
  http://www.example.net:8080/subpath#fragment       tab.url = TIMEOUT
  http://www.example.net:8080/sub/path/              tab.url = TIMEOUT
  http://www.example.net:8080/sub/path/#fragment     tab.url = TIMEOUT
Testing pattern "http://example.org//*"
  http://example.org                                 tab.url = http://example.org/
  http://example.org#fragment                        tab.url = http://example.org/#fragment
  http://example.org/                                tab.url = http://example.org/
  http://example.org/#fragment                       tab.url = http://example.org/#fragment
  http://example.org/subpath                         tab.url = http://example.org/subpath
  http://example.org/subpath#fragment                tab.url = http://example.org/subpath#fragment
  http://example.org/sub/path/                       tab.url = http://example.org/sub/path/
  http://example.org/sub/path/#fragment              tab.url = http://example.org/sub/path/#fragment
Testing pattern "http://example.org:80//*"
  http://example.org:80                              tab.url = http://example.org/
  http://example.org:80#fragment                     tab.url = http://example.org/#fragment
  http://example.org:80/                             tab.url = http://example.org/
  http://example.org:80/#fragment                    tab.url = http://example.org/#fragment
  http://example.org:80/subpath                      tab.url = http://example.org/subpath
  http://example.org:80/subpath#fragment             tab.url = http://example.org/subpath#fragment
  http://example.org:80/sub/path/                    tab.url = http://example.org/sub/path/
  http://example.org:80/sub/path/#fragment           tab.url = http://example.org/sub/path/#fragment
Testing pattern "http://example.org:443//*"
  http://example.org:443                             tab.url = undefined
  http://example.org:443#fragment                    tab.url = undefined
  http://example.org:443/                            tab.url = undefined
  http://example.org:443/#fragment                   tab.url = undefined
  http://example.org:443/subpath                     tab.url = undefined
  http://example.org:443/subpath#fragment            tab.url = undefined
  http://example.org:443/sub/path/                   tab.url = undefined
  http://example.org:443/sub/path/#fragment          tab.url = undefined
Testing pattern "http://example.org:8080//*"
  http://example.org:8080                            tab.url = TIMEOUT
  http://example.org:8080#fragment                   tab.url = TIMEOUT
  http://example.org:8080/                           tab.url = TIMEOUT
  http://example.org:8080/#fragment                  tab.url = TIMEOUT
  http://example.org:8080/subpath                    tab.url = TIMEOUT
  http://example.org:8080/subpath#fragment           tab.url = TIMEOUT
  http://example.org:8080/sub/path/                  tab.url = TIMEOUT
  http://example.org:8080/sub/path/#fragment         tab.url = TIMEOUT
Testing pattern "http://www.example.org//test"
  http://www.example.org                             tab.url = http://www.example.org/
  http://www.example.org#fragment                    tab.url = http://www.example.org/#fragment
  http://www.example.org/                            tab.url = http://www.example.org/
  http://www.example.org/#fragment                   tab.url = http://www.example.org/#fragment
  http://www.example.org/subpath                     tab.url = http://www.example.org/subpath
  http://www.example.org/subpath#fragment            tab.url = http://www.example.org/subpath#fragment
  http://www.example.org/sub/path/                   tab.url = http://www.example.org/sub/path/
  http://www.example.org/sub/path/#fragment          tab.url = http://www.example.org/sub/path/#fragment
Testing pattern "http://www.example.org:80//test"
  http://www.example.org:80                          tab.url = http://www.example.org/
  http://www.example.org:80#fragment                 tab.url = http://www.example.org/#fragment
  http://www.example.org:80/                         tab.url = http://www.example.org/
  http://www.example.org:80/#fragment                tab.url = http://www.example.org/#fragment
  http://www.example.org:80/subpath                  tab.url = http://www.example.org/subpath
  http://www.example.org:80/subpath#fragment         tab.url = http://www.example.org/subpath#fragment
  http://www.example.org:80/sub/path/                tab.url = http://www.example.org/sub/path/
  http://www.example.org:80/sub/path/#fragment       tab.url = http://www.example.org/sub/path/#fragment
Testing pattern "http://www.example.org:443//test"
  http://www.example.org:443                         tab.url = undefined
  http://www.example.org:443#fragment                tab.url = undefined
  http://www.example.org:443/                        tab.url = undefined
  http://www.example.org:443/#fragment               tab.url = undefined
  http://www.example.org:443/subpath                 tab.url = undefined
  http://www.example.org:443/subpath#fragment        tab.url = undefined
  http://www.example.org:443/sub/path/               tab.url = undefined
  http://www.example.org:443/sub/path/#fragment      tab.url = undefined
Testing pattern "http://www.example.org:8080//test"
  http://www.example.org:8080                        tab.url = TIMEOUT
  http://www.example.org:8080#fragment               tab.url = TIMEOUT
  http://www.example.org:8080/                       tab.url = TIMEOUT
  http://www.example.org:8080/#fragment              tab.url = TIMEOUT
  http://www.example.org:8080/subpath                tab.url = TIMEOUT
  http://www.example.org:8080/subpath#fragment       tab.url = TIMEOUT
  http://www.example.org:8080/sub/path/              tab.url = TIMEOUT
  http://www.example.org:8080/sub/path/#fragment     tab.url = TIMEOUT
Testing pattern "http://example.edu/*#fragment"
  http://example.edu                                 tab.url = http://example.edu/
  http://example.edu#fragment                        tab.url = http://example.edu/#fragment
  http://example.edu/                                tab.url = http://example.edu/
  http://example.edu/#fragment                       tab.url = http://example.edu/#fragment
  http://example.edu/subpath                         tab.url = http://example.edu/subpath
  http://example.edu/subpath#fragment                tab.url = http://example.edu/subpath#fragment
  http://example.edu/sub/path/                       tab.url = http://example.edu/sub/path/
  http://example.edu/sub/path/#fragment              tab.url = http://example.edu/sub/path/#fragment
Testing pattern "http://example.edu:80/*#fragment"
  http://example.edu:80                              tab.url = http://example.edu/
  http://example.edu:80#fragment                     tab.url = http://example.edu/#fragment
  http://example.edu:80/                             tab.url = http://example.edu/
  http://example.edu:80/#fragment                    tab.url = http://example.edu/#fragment
  http://example.edu:80/subpath                      tab.url = http://example.edu/subpath
  http://example.edu:80/subpath#fragment             tab.url = http://example.edu/subpath#fragment
  http://example.edu:80/sub/path/                    tab.url = http://example.edu/sub/path/
  http://example.edu:80/sub/path/#fragment           tab.url = http://example.edu/sub/path/#fragment
Testing pattern "http://example.edu:443/*#fragment"
  http://example.edu:443                             tab.url = undefined
  http://example.edu:443#fragment                    tab.url = undefined
  http://example.edu:443/                            tab.url = undefined
  http://example.edu:443/#fragment                   tab.url = undefined
  http://example.edu:443/subpath                     tab.url = undefined
  http://example.edu:443/subpath#fragment            tab.url = undefined
  http://example.edu:443/sub/path/                   tab.url = undefined
  http://example.edu:443/sub/path/#fragment          tab.url = undefined
Testing pattern "http://example.edu:8080/*#fragment"
  http://example.edu:8080                            tab.url = TIMEOUT
  http://example.edu:8080#fragment                   tab.url = TIMEOUT
  http://example.edu:8080/                           tab.url = TIMEOUT
  http://example.edu:8080/#fragment                  tab.url = TIMEOUT
  http://example.edu:8080/subpath                    tab.url = TIMEOUT
  http://example.edu:8080/subpath#fragment           tab.url = TIMEOUT
  http://example.edu:8080/sub/path/                  tab.url = TIMEOUT
  http://example.edu:8080/sub/path/#fragment         tab.url = TIMEOUT
Testing pattern "http://www.example.edu/test/*#fragment"
  http://www.example.edu                             tab.url = http://www.example.edu/
  http://www.example.edu#fragment                    tab.url = http://www.example.edu/#fragment
  http://www.example.edu/                            tab.url = http://www.example.edu/
  http://www.example.edu/#fragment                   tab.url = http://www.example.edu/#fragment
  http://www.example.edu/subpath                     tab.url = http://www.example.edu/subpath
  http://www.example.edu/subpath#fragment            tab.url = http://www.example.edu/subpath#fragment
  http://www.example.edu/sub/path/                   tab.url = http://www.example.edu/sub/path/
  http://www.example.edu/sub/path/#fragment          tab.url = http://www.example.edu/sub/path/#fragment
Testing pattern "http://www.example.edu:80/test/*#fragment"
  http://www.example.edu:80                          tab.url = http://www.example.edu/
  http://www.example.edu:80#fragment                 tab.url = http://www.example.edu/#fragment
  http://www.example.edu:80/                         tab.url = http://www.example.edu/
  http://www.example.edu:80/#fragment                tab.url = http://www.example.edu/#fragment
  http://www.example.edu:80/subpath                  tab.url = http://www.example.edu/subpath
  http://www.example.edu:80/subpath#fragment         tab.url = http://www.example.edu/subpath#fragment
  http://www.example.edu:80/sub/path/                tab.url = http://www.example.edu/sub/path/
  http://www.example.edu:80/sub/path/#fragment       tab.url = http://www.example.edu/sub/path/#fragment
Testing pattern "http://www.example.edu:443/test/*#fragment"
  http://www.example.edu:443                         tab.url = undefined
  http://www.example.edu:443#fragment                tab.url = undefined
  http://www.example.edu:443/                        tab.url = undefined
  http://www.example.edu:443/#fragment               tab.url = undefined
  http://www.example.edu:443/subpath                 tab.url = undefined
  http://www.example.edu:443/subpath#fragment        tab.url = undefined
  http://www.example.edu:443/sub/path/               tab.url = undefined
  http://www.example.edu:443/sub/path/#fragment      tab.url = undefined
Testing pattern "http://www.example.edu:8080/test/*#fragment"
  http://www.example.edu:8080                        tab.url = TIMEOUT
  http://www.example.edu:8080#fragment               tab.url = TIMEOUT
  http://www.example.edu:8080/                       tab.url = TIMEOUT
  http://www.example.edu:8080/#fragment              tab.url = TIMEOUT
  http://www.example.edu:8080/subpath                tab.url = TIMEOUT
  http://www.example.edu:8080/subpath#fragment       tab.url = TIMEOUT
  http://www.example.edu:8080/sub/path/              tab.url = TIMEOUT
  http://www.example.edu:8080/sub/path/#fragment     tab.url = TIMEOUT
Testing pattern "https://example.com"
  https://example.com                                tab.url = undefined
  https://example.com#fragment                       tab.url = undefined
  https://example.com/                               tab.url = undefined
  https://example.com/#fragment                      tab.url = undefined
  https://example.com/subpath                        tab.url = undefined
  https://example.com/subpath#fragment               tab.url = undefined
  https://example.com/sub/path/                      tab.url = undefined
  https://example.com/sub/path/#fragment             tab.url = undefined
Testing pattern "https://example.com:80"
  https://example.com:80                             tab.url = undefined
  https://example.com:80#fragment                    tab.url = undefined
  https://example.com:80/                            tab.url = undefined
  https://example.com:80/#fragment                   tab.url = undefined
  https://example.com:80/subpath                     tab.url = undefined
  https://example.com:80/subpath#fragment            tab.url = undefined
  https://example.com:80/sub/path/                   tab.url = undefined
  https://example.com:80/sub/path/#fragment          tab.url = undefined
Testing pattern "https://example.com:443"
  https://example.com:443                            tab.url = undefined
  https://example.com:443#fragment                   tab.url = undefined
  https://example.com:443/                           tab.url = undefined
  https://example.com:443/#fragment                  tab.url = undefined
  https://example.com:443/subpath                    tab.url = undefined
  https://example.com:443/subpath#fragment           tab.url = undefined
  https://example.com:443/sub/path/                  tab.url = undefined
  https://example.com:443/sub/path/#fragment         tab.url = undefined
Testing pattern "https://example.com:8080"
  https://example.com:8080                           tab.url = TIMEOUT
  https://example.com:8080#fragment                  tab.url = TIMEOUT
  https://example.com:8080/                          tab.url = TIMEOUT
  https://example.com:8080/#fragment                 tab.url = TIMEOUT
  https://example.com:8080/subpath                   tab.url = TIMEOUT
  https://example.com:8080/subpath#fragment          tab.url = TIMEOUT
  https://example.com:8080/sub/path/                 tab.url = TIMEOUT
  https://example.com:8080/sub/path/#fragment        tab.url = TIMEOUT
Testing pattern "https://www.example.com/"
  https://www.example.com                            tab.url = https://www.example.com/
  https://www.example.com#fragment                   tab.url = https://www.example.com/#fragment
  https://www.example.com/                           tab.url = https://www.example.com/
  https://www.example.com/#fragment                  tab.url = https://www.example.com/#fragment
  https://www.example.com/subpath                    tab.url = https://www.example.com/subpath
  https://www.example.com/subpath#fragment           tab.url = https://www.example.com/subpath#fragment
  https://www.example.com/sub/path/                  tab.url = https://www.example.com/sub/path/
  https://www.example.com/sub/path/#fragment         tab.url = https://www.example.com/sub/path/#fragment
Testing pattern "https://www.example.com:80/"
  https://www.example.com:80                         tab.url = undefined
  https://www.example.com:80#fragment                tab.url = undefined
  https://www.example.com:80/                        tab.url = undefined
  https://www.example.com:80/#fragment               tab.url = undefined
  https://www.example.com:80/subpath                 tab.url = undefined
  https://www.example.com:80/subpath#fragment        tab.url = undefined
  https://www.example.com:80/sub/path/               tab.url = undefined
  https://www.example.com:80/sub/path/#fragment      tab.url = undefined
Testing pattern "https://www.example.com:443/"
  https://www.example.com:443                        tab.url = https://www.example.com/
  https://www.example.com:443#fragment               tab.url = https://www.example.com/#fragment
  https://www.example.com:443/                       tab.url = https://www.example.com/
  https://www.example.com:443/#fragment              tab.url = https://www.example.com/#fragment
  https://www.example.com:443/subpath                tab.url = https://www.example.com/subpath
  https://www.example.com:443/subpath#fragment       tab.url = https://www.example.com/subpath#fragment
  https://www.example.com:443/sub/path/              tab.url = https://www.example.com/sub/path/
  https://www.example.com:443/sub/path/#fragment     tab.url = https://www.example.com/sub/path/#fragment
Testing pattern "https://www.example.com:8080/"
  https://www.example.com:8080                       tab.url = TIMEOUT
  https://www.example.com:8080#fragment              tab.url = TIMEOUT
  https://www.example.com:8080/                      tab.url = TIMEOUT
  https://www.example.com:8080/#fragment             tab.url = TIMEOUT
  https://www.example.com:8080/subpath               tab.url = TIMEOUT
  https://www.example.com:8080/subpath#fragment      tab.url = TIMEOUT
  https://www.example.com:8080/sub/path/             tab.url = TIMEOUT
  https://www.example.com:8080/sub/path/#fragment    tab.url = TIMEOUT
Testing pattern "https://example.net/*"
  https://example.net                                tab.url = https://example.net/
  https://example.net#fragment                       tab.url = https://example.net/#fragment
  https://example.net/                               tab.url = https://example.net/
  https://example.net/#fragment                      tab.url = https://example.net/#fragment
  https://example.net/subpath                        tab.url = https://example.net/subpath
  https://example.net/subpath#fragment               tab.url = https://example.net/subpath#fragment
  https://example.net/sub/path/                      tab.url = https://example.net/sub/path/
  https://example.net/sub/path/#fragment             tab.url = https://example.net/sub/path/#fragment
Testing pattern "https://example.net:80/*"
  https://example.net:80                             tab.url = undefined
  https://example.net:80#fragment                    tab.url = undefined
  https://example.net:80/                            tab.url = undefined
  https://example.net:80/#fragment                   tab.url = undefined
  https://example.net:80/subpath                     tab.url = undefined
  https://example.net:80/subpath#fragment            tab.url = undefined
  https://example.net:80/sub/path/                   tab.url = undefined
  https://example.net:80/sub/path/#fragment          tab.url = undefined
Testing pattern "https://example.net:443/*"
  https://example.net:443                            tab.url = https://example.net/
  https://example.net:443#fragment                   tab.url = https://example.net/#fragment
  https://example.net:443/                           tab.url = https://example.net/
  https://example.net:443/#fragment                  tab.url = https://example.net/#fragment
  https://example.net:443/subpath                    tab.url = https://example.net/subpath
  https://example.net:443/subpath#fragment           tab.url = https://example.net/subpath#fragment
  https://example.net:443/sub/path/                  tab.url = https://example.net/sub/path/
  https://example.net:443/sub/path/#fragment         tab.url = https://example.net/sub/path/#fragment
Testing pattern "https://example.net:8080/*"
  https://example.net:8080                           tab.url = TIMEOUT
  https://example.net:8080#fragment                  tab.url = TIMEOUT
  https://example.net:8080/                          tab.url = TIMEOUT
  https://example.net:8080/#fragment                 tab.url = TIMEOUT
  https://example.net:8080/subpath                   tab.url = TIMEOUT
  https://example.net:8080/subpath#fragment          tab.url = TIMEOUT
  https://example.net:8080/sub/path/                 tab.url = TIMEOUT
  https://example.net:8080/sub/path/#fragment        tab.url = TIMEOUT
Testing pattern "https://www.example.net/test"
  https://www.example.net                            tab.url = https://www.example.net/
  https://www.example.net#fragment                   tab.url = https://www.example.net/#fragment
  https://www.example.net/                           tab.url = https://www.example.net/
  https://www.example.net/#fragment                  tab.url = https://www.example.net/#fragment
  https://www.example.net/subpath                    tab.url = https://www.example.net/subpath
  https://www.example.net/subpath#fragment           tab.url = https://www.example.net/subpath#fragment
  https://www.example.net/sub/path/                  tab.url = https://www.example.net/sub/path/
  https://www.example.net/sub/path/#fragment         tab.url = https://www.example.net/sub/path/#fragment
Testing pattern "https://www.example.net:80/test"
  https://www.example.net:80                         tab.url = undefined
  https://www.example.net:80#fragment                tab.url = undefined
  https://www.example.net:80/                        tab.url = undefined
  https://www.example.net:80/#fragment               tab.url = undefined
  https://www.example.net:80/subpath                 tab.url = undefined
  https://www.example.net:80/subpath#fragment        tab.url = undefined
  https://www.example.net:80/sub/path/               tab.url = undefined
  https://www.example.net:80/sub/path/#fragment      tab.url = undefined
Testing pattern "https://www.example.net:443/test"
  https://www.example.net:443                        tab.url = https://www.example.net/
  https://www.example.net:443#fragment               tab.url = https://www.example.net/#fragment
  https://www.example.net:443/                       tab.url = https://www.example.net/
  https://www.example.net:443/#fragment              tab.url = https://www.example.net/#fragment
  https://www.example.net:443/subpath                tab.url = https://www.example.net/subpath
  https://www.example.net:443/subpath#fragment       tab.url = https://www.example.net/subpath#fragment
  https://www.example.net:443/sub/path/              tab.url = https://www.example.net/sub/path/
  https://www.example.net:443/sub/path/#fragment     tab.url = https://www.example.net/sub/path/#fragment
Testing pattern "https://www.example.net:8080/test"
  https://www.example.net:8080                       tab.url = TIMEOUT
  https://www.example.net:8080#fragment              tab.url = TIMEOUT
  https://www.example.net:8080/                      tab.url = TIMEOUT
  https://www.example.net:8080/#fragment             tab.url = TIMEOUT
  https://www.example.net:8080/subpath               tab.url = TIMEOUT
  https://www.example.net:8080/subpath#fragment      tab.url = TIMEOUT
  https://www.example.net:8080/sub/path/             tab.url = TIMEOUT
  https://www.example.net:8080/sub/path/#fragment    tab.url = TIMEOUT
Testing pattern "https://example.org//*"
  https://example.org                                tab.url = https://example.org/
  https://example.org#fragment                       tab.url = https://example.org/#fragment
  https://example.org/                               tab.url = https://example.org/
  https://example.org/#fragment                      tab.url = https://example.org/#fragment
  https://example.org/subpath                        tab.url = https://example.org/subpath
  https://example.org/subpath#fragment               tab.url = https://example.org/subpath#fragment
  https://example.org/sub/path/                      tab.url = https://example.org/sub/path/
  https://example.org/sub/path/#fragment             tab.url = https://example.org/sub/path/#fragment
Testing pattern "https://example.org:80//*"
  https://example.org:80                             tab.url = undefined
  https://example.org:80#fragment                    tab.url = undefined
  https://example.org:80/                            tab.url = undefined
  https://example.org:80/#fragment                   tab.url = undefined
  https://example.org:80/subpath                     tab.url = undefined
  https://example.org:80/subpath#fragment            tab.url = undefined
  https://example.org:80/sub/path/                   tab.url = undefined
  https://example.org:80/sub/path/#fragment          tab.url = undefined
Testing pattern "https://example.org:443//*"
  https://example.org:443                            tab.url = https://example.org/
  https://example.org:443#fragment                   tab.url = https://example.org/#fragment
  https://example.org:443/                           tab.url = https://example.org/
  https://example.org:443/#fragment                  tab.url = https://example.org/#fragment
  https://example.org:443/subpath                    tab.url = https://example.org/subpath
  https://example.org:443/subpath#fragment           tab.url = https://example.org/subpath#fragment
  https://example.org:443/sub/path/                  tab.url = https://example.org/sub/path/
  https://example.org:443/sub/path/#fragment         tab.url = https://example.org/sub/path/#fragment
Testing pattern "https://example.org:8080//*"
  https://example.org:8080                           tab.url = TIMEOUT
  https://example.org:8080#fragment                  tab.url = TIMEOUT
  https://example.org:8080/                          tab.url = TIMEOUT
  https://example.org:8080/#fragment                 tab.url = TIMEOUT
  https://example.org:8080/subpath                   tab.url = TIMEOUT
  https://example.org:8080/subpath#fragment          tab.url = TIMEOUT
  https://example.org:8080/sub/path/                 tab.url = TIMEOUT
  https://example.org:8080/sub/path/#fragment        tab.url = TIMEOUT
Testing pattern "https://www.example.org//test"
  https://www.example.org                            tab.url = https://www.example.org/
  https://www.example.org#fragment                   tab.url = https://www.example.org/#fragment
  https://www.example.org/                           tab.url = https://www.example.org/
  https://www.example.org/#fragment                  tab.url = https://www.example.org/#fragment
  https://www.example.org/subpath                    tab.url = https://www.example.org/subpath
  https://www.example.org/subpath#fragment           tab.url = https://www.example.org/subpath#fragment
  https://www.example.org/sub/path/                  tab.url = https://www.example.org/sub/path/
  https://www.example.org/sub/path/#fragment         tab.url = https://www.example.org/sub/path/#fragment
Testing pattern "https://www.example.org:80//test"
  https://www.example.org:80                         tab.url = undefined
  https://www.example.org:80#fragment                tab.url = undefined
  https://www.example.org:80/                        tab.url = undefined
  https://www.example.org:80/#fragment               tab.url = undefined
  https://www.example.org:80/subpath                 tab.url = undefined
  https://www.example.org:80/subpath#fragment        tab.url = undefined
  https://www.example.org:80/sub/path/               tab.url = undefined
  https://www.example.org:80/sub/path/#fragment      tab.url = undefined
Testing pattern "https://www.example.org:443//test"
  https://www.example.org:443                        tab.url = https://www.example.org/
  https://www.example.org:443#fragment               tab.url = https://www.example.org/#fragment
  https://www.example.org:443/                       tab.url = https://www.example.org/
  https://www.example.org:443/#fragment              tab.url = https://www.example.org/#fragment
  https://www.example.org:443/subpath                tab.url = https://www.example.org/subpath
  https://www.example.org:443/subpath#fragment       tab.url = https://www.example.org/subpath#fragment
  https://www.example.org:443/sub/path/              tab.url = https://www.example.org/sub/path/
  https://www.example.org:443/sub/path/#fragment     tab.url = https://www.example.org/sub/path/#fragment
Testing pattern "https://www.example.org:8080//test"
  https://www.example.org:8080                       tab.url = TIMEOUT
  https://www.example.org:8080#fragment              tab.url = TIMEOUT
  https://www.example.org:8080/                      tab.url = TIMEOUT
  https://www.example.org:8080/#fragment             tab.url = TIMEOUT
  https://www.example.org:8080/subpath               tab.url = TIMEOUT
  https://www.example.org:8080/subpath#fragment      tab.url = TIMEOUT
  https://www.example.org:8080/sub/path/             tab.url = TIMEOUT
  https://www.example.org:8080/sub/path/#fragment    tab.url = TIMEOUT
Testing pattern "https://example.edu/*#fragment"
  https://example.edu                                tab.url = https://example.edu/
  https://example.edu#fragment                       tab.url = https://example.edu/#fragment
  https://example.edu/                               tab.url = https://example.edu/
  https://example.edu/#fragment                      tab.url = https://example.edu/#fragment
  https://example.edu/subpath                        tab.url = https://example.edu/subpath
  https://example.edu/subpath#fragment               tab.url = https://example.edu/subpath#fragment
  https://example.edu/sub/path/                      tab.url = https://example.edu/sub/path/
  https://example.edu/sub/path/#fragment             tab.url = https://example.edu/sub/path/#fragment
Testing pattern "https://example.edu:80/*#fragment"
  https://example.edu:80                             tab.url = undefined
  https://example.edu:80#fragment                    tab.url = undefined
  https://example.edu:80/                            tab.url = undefined
  https://example.edu:80/#fragment                   tab.url = undefined
  https://example.edu:80/subpath                     tab.url = undefined
  https://example.edu:80/subpath#fragment            tab.url = undefined
  https://example.edu:80/sub/path/                   tab.url = undefined
  https://example.edu:80/sub/path/#fragment          tab.url = undefined
Testing pattern "https://example.edu:443/*#fragment"
  https://example.edu:443                            tab.url = https://example.edu/
  https://example.edu:443#fragment                   tab.url = https://example.edu/#fragment
  https://example.edu:443/                           tab.url = https://example.edu/
  https://example.edu:443/#fragment                  tab.url = https://example.edu/#fragment
  https://example.edu:443/subpath                    tab.url = https://example.edu/subpath
  https://example.edu:443/subpath#fragment           tab.url = https://example.edu/subpath#fragment
  https://example.edu:443/sub/path/                  tab.url = https://example.edu/sub/path/
  https://example.edu:443/sub/path/#fragment         tab.url = https://example.edu/sub/path/#fragment
Testing pattern "https://example.edu:8080/*#fragment"
  https://example.edu:8080                           tab.url = TIMEOUT
  https://example.edu:8080#fragment                  tab.url = TIMEOUT
  https://example.edu:8080/                          tab.url = TIMEOUT
  https://example.edu:8080/#fragment                 tab.url = TIMEOUT
  https://example.edu:8080/subpath                   tab.url = TIMEOUT
  https://example.edu:8080/subpath#fragment          tab.url = TIMEOUT
  https://example.edu:8080/sub/path/                 tab.url = TIMEOUT
  https://example.edu:8080/sub/path/#fragment        tab.url = TIMEOUT
Testing pattern "https://www.example.edu/test/*#fragment"
  https://www.example.edu                            tab.url = https://www.example.edu/
  https://www.example.edu#fragment                   tab.url = https://www.example.edu/#fragment
  https://www.example.edu/                           tab.url = https://www.example.edu/
  https://www.example.edu/#fragment                  tab.url = https://www.example.edu/#fragment
  https://www.example.edu/subpath                    tab.url = https://www.example.edu/subpath
  https://www.example.edu/subpath#fragment           tab.url = https://www.example.edu/subpath#fragment
  https://www.example.edu/sub/path/                  tab.url = https://www.example.edu/sub/path/
  https://www.example.edu/sub/path/#fragment         tab.url = https://www.example.edu/sub/path/#fragment
Testing pattern "https://www.example.edu:80/test/*#fragment"
  https://www.example.edu:80                         tab.url = undefined
  https://www.example.edu:80#fragment                tab.url = undefined
  https://www.example.edu:80/                        tab.url = undefined
  https://www.example.edu:80/#fragment               tab.url = undefined
  https://www.example.edu:80/subpath                 tab.url = undefined
  https://www.example.edu:80/subpath#fragment        tab.url = undefined
  https://www.example.edu:80/sub/path/               tab.url = undefined
  https://www.example.edu:80/sub/path/#fragment      tab.url = undefined
Testing pattern "https://www.example.edu:443/test/*#fragment"
  https://www.example.edu:443                        tab.url = https://www.example.edu/
  https://www.example.edu:443#fragment               tab.url = https://www.example.edu/#fragment
  https://www.example.edu:443/                       tab.url = https://www.example.edu/
  https://www.example.edu:443/#fragment              tab.url = https://www.example.edu/#fragment
  https://www.example.edu:443/subpath                tab.url = https://www.example.edu/subpath
  https://www.example.edu:443/subpath#fragment       tab.url = https://www.example.edu/subpath#fragment
  https://www.example.edu:443/sub/path/              tab.url = https://www.example.edu/sub/path/
  https://www.example.edu:443/sub/path/#fragment     tab.url = https://www.example.edu/sub/path/#fragment
Testing pattern "https://www.example.edu:8080/test/*#fragment"
  https://www.example.edu:8080                       tab.url = TIMEOUT
  https://www.example.edu:8080#fragment              tab.url = TIMEOUT
  https://www.example.edu:8080/                      tab.url = TIMEOUT
  https://www.example.edu:8080/#fragment             tab.url = TIMEOUT
  https://www.example.edu:8080/subpath               tab.url = TIMEOUT
  https://www.example.edu:8080/subpath#fragment      tab.url = TIMEOUT
  https://www.example.edu:8080/sub/path/             tab.url = TIMEOUT
  https://www.example.edu:8080/sub/path/#fragment    tab.url = TIMEOUT

Chrome 131.0.6778.86 results

manifest patterns (64): ["http://example.com","http://example.com:80","http://example.com:443","http://example.com:8080","http://www.example.com/","http://www.example.com:80/","http://www.example.com:443/","http://www.example.com:8080/","http://example.net/*","http://example.net:80/*","http://example.net:443/*","http://example.net:8080/*","http://www.example.net/test","http://www.example.net:80/test","http://www.example.net:443/test","http://www.example.net:8080/test","http://example.org//*","http://example.org:80//*","http://example.org:443//*","http://example.org:8080//*","http://www.example.org//test","http://www.example.org:80//test","http://www.example.org:443//test","http://www.example.org:8080//test","http://example.edu/*#fragment","http://example.edu:80/*#fragment","http://example.edu:443/*#fragment","http://example.edu:8080/*#fragment","http://www.example.edu/test/*#fragment","http://www.example.edu:80/test/*#fragment","http://www.example.edu:443/test/*#fragment","http://www.example.edu:8080/test/*#fragment","https://example.com","https://example.com:80","https://example.com:443","https://example.com:8080","https://www.example.com/","https://www.example.com:80/","https://www.example.com:443/","https://www.example.com:8080/","https://example.net/*","https://example.net:80/*","https://example.net:443/*","https://example.net:8080/*","https://www.example.net/test","https://www.example.net:80/test","https://www.example.net:443/test","https://www.example.net:8080/test","https://example.org//*","https://example.org:80//*","https://example.org:443//*","https://example.org:8080//*","https://www.example.org//test","https://www.example.org:80//test","https://www.example.org:443//test","https://www.example.org:8080//test","https://example.edu/*#fragment","https://example.edu:80/*#fragment","https://example.edu:443/*#fragment","https://example.edu:8080/*#fragment","https://www.example.edu/test/*#fragment","https://www.example.edu:80/test/*#fragment","https://www.example.edu:443/test/*#fragment","https://www.example.edu:8080/test/*#fragment"]
granted  patterns (56): ["http://example.edu/*","http://example.edu:443/*","http://example.edu:80/*","http://example.edu:8080/*","http://example.net/*","http://example.net:443/*","http://example.net:80/*","http://example.net:8080/*","http://example.org/*","http://example.org:443/*","http://example.org:80/*","http://example.org:8080/*","http://www.example.com/*","http://www.example.com:443/*","http://www.example.com:80/*","http://www.example.com:8080/*","http://www.example.edu/*","http://www.example.edu:443/*","http://www.example.edu:80/*","http://www.example.edu:8080/*","http://www.example.net/*","http://www.example.net:443/*","http://www.example.net:80/*","http://www.example.net:8080/*","http://www.example.org/*","http://www.example.org:443/*","http://www.example.org:80/*","http://www.example.org:8080/*","https://example.edu/*","https://example.edu:443/*","https://example.edu:80/*","https://example.edu:8080/*","https://example.net/*","https://example.net:443/*","https://example.net:80/*","https://example.net:8080/*","https://example.org/*","https://example.org:443/*","https://example.org:80/*","https://example.org:8080/*","https://www.example.com/*","https://www.example.com:443/*","https://www.example.com:80/*","https://www.example.com:8080/*","https://www.example.edu/*","https://www.example.edu:443/*","https://www.example.edu:80/*","https://www.example.edu:8080/*","https://www.example.net/*","https://www.example.net:443/*","https://www.example.net:80/*","https://www.example.net:8080/*","https://www.example.org/*","https://www.example.org:443/*","https://www.example.org:80/*","https://www.example.org:8080/*"]
pattern origins (64): ["http://example.com","http://example.com:80","http://example.com:443","http://example.com:8080","http://www.example.com","http://www.example.com:80","http://www.example.com:443","http://www.example.com:8080","http://example.net","http://example.net:80","http://example.net:443","http://example.net:8080","http://www.example.net","http://www.example.net:80","http://www.example.net:443","http://www.example.net:8080","http://example.org","http://example.org:80","http://example.org:443","http://example.org:8080","http://www.example.org","http://www.example.org:80","http://www.example.org:443","http://www.example.org:8080","http://example.edu","http://example.edu:80","http://example.edu:443","http://example.edu:8080","http://www.example.edu","http://www.example.edu:80","http://www.example.edu:443","http://www.example.edu:8080","https://example.com","https://example.com:80","https://example.com:443","https://example.com:8080","https://www.example.com","https://www.example.com:80","https://www.example.com:443","https://www.example.com:8080","https://example.net","https://example.net:80","https://example.net:443","https://example.net:8080","https://www.example.net","https://www.example.net:80","https://www.example.net:443","https://www.example.net:8080","https://example.org","https://example.org:80","https://example.org:443","https://example.org:8080","https://www.example.org","https://www.example.org:80","https://www.example.org:443","https://www.example.org:8080","https://example.edu","https://example.edu:80","https://example.edu:443","https://example.edu:8080","https://www.example.edu","https://www.example.edu:80","https://www.example.edu:443","https://www.example.edu:8080"]
  Request URL                                        Observed URL (indicates pattern match)
Testing pattern "http://example.com"
  http://example.com                                 tab.url = undefined
  http://example.com#fragment                        tab.url = undefined
  http://example.com/                                tab.url = undefined
  http://example.com/#fragment                       tab.url = undefined
  http://example.com/subpath                         tab.url = undefined
  http://example.com/subpath#fragment                tab.url = undefined
  http://example.com/sub/path/                       tab.url = undefined
  http://example.com/sub/path/#fragment              tab.url = undefined
Testing pattern "http://example.com:80"
  http://example.com:80                              tab.url = undefined
  http://example.com:80#fragment                     tab.url = undefined
  http://example.com:80/                             tab.url = undefined
  http://example.com:80/#fragment                    tab.url = undefined
  http://example.com:80/subpath                      tab.url = undefined
  http://example.com:80/subpath#fragment             tab.url = undefined
  http://example.com:80/sub/path/                    tab.url = undefined
  http://example.com:80/sub/path/#fragment           tab.url = undefined
Testing pattern "http://example.com:443"
  http://example.com:443                             tab.url = undefined
  http://example.com:443#fragment                    tab.url = undefined
  http://example.com:443/                            tab.url = undefined
  http://example.com:443/#fragment                   tab.url = undefined
  http://example.com:443/subpath                     tab.url = undefined
  http://example.com:443/subpath#fragment            tab.url = undefined
  http://example.com:443/sub/path/                   tab.url = undefined
  http://example.com:443/sub/path/#fragment          tab.url = undefined
Testing pattern "http://example.com:8080"
  http://example.com:8080                            tab.url = TIMEOUT
  http://example.com:8080#fragment                   tab.url = TIMEOUT
  http://example.com:8080/                           tab.url = TIMEOUT
  http://example.com:8080/#fragment                  tab.url = TIMEOUT
  http://example.com:8080/subpath                    tab.url = TIMEOUT
  http://example.com:8080/subpath#fragment           tab.url = TIMEOUT
  http://example.com:8080/sub/path/                  tab.url = TIMEOUT
  http://example.com:8080/sub/path/#fragment         tab.url = TIMEOUT
Testing pattern "http://www.example.com/"
  http://www.example.com                             tab.url = http://www.example.com/
  http://www.example.com#fragment                    tab.url = http://www.example.com/#fragment
  http://www.example.com/                            tab.url = http://www.example.com/
  http://www.example.com/#fragment                   tab.url = http://www.example.com/#fragment
  http://www.example.com/subpath                     tab.url = http://www.example.com/subpath
  http://www.example.com/subpath#fragment            tab.url = http://www.example.com/subpath#fragment
  http://www.example.com/sub/path/                   tab.url = http://www.example.com/sub/path/
  http://www.example.com/sub/path/#fragment          tab.url = http://www.example.com/sub/path/#fragment
Testing pattern "http://www.example.com:80/"
  http://www.example.com:80                          tab.url = http://www.example.com/
  http://www.example.com:80#fragment                 tab.url = http://www.example.com/#fragment
  http://www.example.com:80/                         tab.url = http://www.example.com/
  http://www.example.com:80/#fragment                tab.url = http://www.example.com/#fragment
  http://www.example.com:80/subpath                  tab.url = http://www.example.com/subpath
  http://www.example.com:80/subpath#fragment         tab.url = http://www.example.com/subpath#fragment
  http://www.example.com:80/sub/path/                tab.url = http://www.example.com/sub/path/
  http://www.example.com:80/sub/path/#fragment       tab.url = http://www.example.com/sub/path/#fragment
Testing pattern "http://www.example.com:443/"
  http://www.example.com:443                         tab.url = http://www.example.com:443/
  http://www.example.com:443#fragment                tab.url = http://www.example.com:443/#fragment
  http://www.example.com:443/                        tab.url = http://www.example.com:443/
  http://www.example.com:443/#fragment               tab.url = http://www.example.com:443/#fragment
  http://www.example.com:443/subpath                 tab.url = http://www.example.com:443/subpath
  http://www.example.com:443/subpath#fragment        tab.url = http://www.example.com:443/subpath#fragment
  http://www.example.com:443/sub/path/               tab.url = http://www.example.com:443/sub/path/
  http://www.example.com:443/sub/path/#fragment      tab.url = http://www.example.com:443/sub/path/#fragment
Testing pattern "http://www.example.com:8080/"
  http://www.example.com:8080                        tab.url = TIMEOUT
  http://www.example.com:8080#fragment               tab.url = TIMEOUT
  http://www.example.com:8080/                       tab.url = TIMEOUT
  http://www.example.com:8080/#fragment              tab.url = TIMEOUT
  http://www.example.com:8080/subpath                tab.url = TIMEOUT
  http://www.example.com:8080/subpath#fragment       tab.url = TIMEOUT
  http://www.example.com:8080/sub/path/              tab.url = TIMEOUT
  http://www.example.com:8080/sub/path/#fragment     tab.url = TIMEOUT
Testing pattern "http://example.net/*"
  http://example.net                                 tab.url = http://example.net/
  http://example.net#fragment                        tab.url = http://example.net/#fragment
  http://example.net/                                tab.url = http://example.net/
  http://example.net/#fragment                       tab.url = http://example.net/#fragment
  http://example.net/subpath                         tab.url = http://example.net/subpath
  http://example.net/subpath#fragment                tab.url = http://example.net/subpath#fragment
  http://example.net/sub/path/                       tab.url = http://example.net/sub/path/
  http://example.net/sub/path/#fragment              tab.url = http://example.net/sub/path/#fragment
Testing pattern "http://example.net:80/*"
  http://example.net:80                              tab.url = http://example.net/
  http://example.net:80#fragment                     tab.url = http://example.net/#fragment
  http://example.net:80/                             tab.url = http://example.net/
  http://example.net:80/#fragment                    tab.url = http://example.net/#fragment
  http://example.net:80/subpath                      tab.url = http://example.net/subpath
  http://example.net:80/subpath#fragment             tab.url = http://example.net/subpath#fragment
  http://example.net:80/sub/path/                    tab.url = http://example.net/sub/path/
  http://example.net:80/sub/path/#fragment           tab.url = http://example.net/sub/path/#fragment
Testing pattern "http://example.net:443/*"
  http://example.net:443                             tab.url = http://example.net:443/
  http://example.net:443#fragment                    tab.url = http://example.net:443/#fragment
  http://example.net:443/                            tab.url = http://example.net:443/
  http://example.net:443/#fragment                   tab.url = http://example.net:443/#fragment
  http://example.net:443/subpath                     tab.url = http://example.net:443/subpath
  http://example.net:443/subpath#fragment            tab.url = http://example.net:443/subpath#fragment
  http://example.net:443/sub/path/                   tab.url = http://example.net:443/sub/path/
  http://example.net:443/sub/path/#fragment          tab.url = http://example.net:443/sub/path/#fragment
Testing pattern "http://example.net:8080/*"
  http://example.net:8080                            tab.url = TIMEOUT
  http://example.net:8080#fragment                   tab.url = TIMEOUT
  http://example.net:8080/                           tab.url = TIMEOUT
  http://example.net:8080/#fragment                  tab.url = TIMEOUT
  http://example.net:8080/subpath                    tab.url = TIMEOUT
  http://example.net:8080/subpath#fragment           tab.url = TIMEOUT
  http://example.net:8080/sub/path/                  tab.url = TIMEOUT
  http://example.net:8080/sub/path/#fragment         tab.url = TIMEOUT
Testing pattern "http://www.example.net/test"
  http://www.example.net                             tab.url = http://www.example.net/
  http://www.example.net#fragment                    tab.url = http://www.example.net/#fragment
  http://www.example.net/                            tab.url = http://www.example.net/
  http://www.example.net/#fragment                   tab.url = http://www.example.net/#fragment
  http://www.example.net/subpath                     tab.url = http://www.example.net/subpath
  http://www.example.net/subpath#fragment            tab.url = http://www.example.net/subpath#fragment
  http://www.example.net/sub/path/                   tab.url = http://www.example.net/sub/path/
  http://www.example.net/sub/path/#fragment          tab.url = http://www.example.net/sub/path/#fragment
Testing pattern "http://www.example.net:80/test"
  http://www.example.net:80                          tab.url = http://www.example.net/
  http://www.example.net:80#fragment                 tab.url = http://www.example.net/#fragment
  http://www.example.net:80/                         tab.url = http://www.example.net/
  http://www.example.net:80/#fragment                tab.url = http://www.example.net/#fragment
  http://www.example.net:80/subpath                  tab.url = http://www.example.net/subpath
  http://www.example.net:80/subpath#fragment         tab.url = http://www.example.net/subpath#fragment
  http://www.example.net:80/sub/path/                tab.url = http://www.example.net/sub/path/
  http://www.example.net:80/sub/path/#fragment       tab.url = http://www.example.net/sub/path/#fragment
Testing pattern "http://www.example.net:443/test"
  http://www.example.net:443                         tab.url = http://www.example.net:443/
  http://www.example.net:443#fragment                tab.url = http://www.example.net:443/#fragment
  http://www.example.net:443/                        tab.url = http://www.example.net:443/
  http://www.example.net:443/#fragment               tab.url = http://www.example.net:443/#fragment
  http://www.example.net:443/subpath                 tab.url = http://www.example.net:443/subpath
  http://www.example.net:443/subpath#fragment        tab.url = http://www.example.net:443/subpath#fragment
  http://www.example.net:443/sub/path/               tab.url = http://www.example.net:443/sub/path/
  http://www.example.net:443/sub/path/#fragment      tab.url = http://www.example.net:443/sub/path/#fragment
Testing pattern "http://www.example.net:8080/test"
  http://www.example.net:8080                        tab.url = TIMEOUT
  http://www.example.net:8080#fragment               tab.url = TIMEOUT
  http://www.example.net:8080/                       tab.url = TIMEOUT
  http://www.example.net:8080/#fragment              tab.url = TIMEOUT
  http://www.example.net:8080/subpath                tab.url = TIMEOUT
  http://www.example.net:8080/subpath#fragment       tab.url = TIMEOUT
  http://www.example.net:8080/sub/path/              tab.url = TIMEOUT
  http://www.example.net:8080/sub/path/#fragment     tab.url = TIMEOUT
Testing pattern "http://example.org//*"
  http://example.org                                 tab.url = http://example.org/
  http://example.org#fragment                        tab.url = http://example.org/#fragment
  http://example.org/                                tab.url = http://example.org/
  http://example.org/#fragment                       tab.url = http://example.org/#fragment
  http://example.org/subpath                         tab.url = http://example.org/subpath
  http://example.org/subpath#fragment                tab.url = http://example.org/subpath#fragment
  http://example.org/sub/path/                       tab.url = http://example.org/sub/path/
  http://example.org/sub/path/#fragment              tab.url = http://example.org/sub/path/#fragment
Testing pattern "http://example.org:80//*"
  http://example.org:80                              tab.url = http://example.org/
  http://example.org:80#fragment                     tab.url = http://example.org/#fragment
  http://example.org:80/                             tab.url = http://example.org/
  http://example.org:80/#fragment                    tab.url = http://example.org/#fragment
  http://example.org:80/subpath                      tab.url = http://example.org/subpath
  http://example.org:80/subpath#fragment             tab.url = http://example.org/subpath#fragment
  http://example.org:80/sub/path/                    tab.url = http://example.org/sub/path/
  http://example.org:80/sub/path/#fragment           tab.url = http://example.org/sub/path/#fragment
Testing pattern "http://example.org:443//*"
  http://example.org:443                             tab.url = http://example.org:443/
  http://example.org:443#fragment                    tab.url = http://example.org:443/#fragment
  http://example.org:443/                            tab.url = http://example.org:443/
  http://example.org:443/#fragment                   tab.url = http://example.org:443/#fragment
  http://example.org:443/subpath                     tab.url = http://example.org:443/subpath
  http://example.org:443/subpath#fragment            tab.url = http://example.org:443/subpath#fragment
  http://example.org:443/sub/path/                   tab.url = http://example.org:443/sub/path/
  http://example.org:443/sub/path/#fragment          tab.url = http://example.org:443/sub/path/#fragment
Testing pattern "http://example.org:8080//*"
  http://example.org:8080                            tab.url = TIMEOUT
  http://example.org:8080#fragment                   tab.url = TIMEOUT
  http://example.org:8080/                           tab.url = TIMEOUT
  http://example.org:8080/#fragment                  tab.url = TIMEOUT
  http://example.org:8080/subpath                    tab.url = TIMEOUT
  http://example.org:8080/subpath#fragment           tab.url = TIMEOUT
  http://example.org:8080/sub/path/                  tab.url = TIMEOUT
  http://example.org:8080/sub/path/#fragment         tab.url = TIMEOUT
Testing pattern "http://www.example.org//test"
  http://www.example.org                             tab.url = http://www.example.org/
  http://www.example.org#fragment                    tab.url = http://www.example.org/#fragment
  http://www.example.org/                            tab.url = http://www.example.org/
  http://www.example.org/#fragment                   tab.url = http://www.example.org/#fragment
  http://www.example.org/subpath                     tab.url = http://www.example.org/subpath
  http://www.example.org/subpath#fragment            tab.url = http://www.example.org/subpath#fragment
  http://www.example.org/sub/path/                   tab.url = http://www.example.org/sub/path/
  http://www.example.org/sub/path/#fragment          tab.url = http://www.example.org/sub/path/#fragment
Testing pattern "http://www.example.org:80//test"
  http://www.example.org:80                          tab.url = http://www.example.org/
  http://www.example.org:80#fragment                 tab.url = http://www.example.org/#fragment
  http://www.example.org:80/                         tab.url = http://www.example.org/
  http://www.example.org:80/#fragment                tab.url = http://www.example.org/#fragment
  http://www.example.org:80/subpath                  tab.url = http://www.example.org/subpath
  http://www.example.org:80/subpath#fragment         tab.url = http://www.example.org/subpath#fragment
  http://www.example.org:80/sub/path/                tab.url = http://www.example.org/sub/path/
  http://www.example.org:80/sub/path/#fragment       tab.url = http://www.example.org/sub/path/#fragment
Testing pattern "http://www.example.org:443//test"
  http://www.example.org:443                         tab.url = http://www.example.org:443/
  http://www.example.org:443#fragment                tab.url = http://www.example.org:443/#fragment
  http://www.example.org:443/                        tab.url = http://www.example.org:443/
  http://www.example.org:443/#fragment               tab.url = http://www.example.org:443/#fragment
  http://www.example.org:443/subpath                 tab.url = http://www.example.org:443/subpath
  http://www.example.org:443/subpath#fragment        tab.url = http://www.example.org:443/subpath#fragment
  http://www.example.org:443/sub/path/               tab.url = http://www.example.org:443/sub/path/
  http://www.example.org:443/sub/path/#fragment      tab.url = http://www.example.org:443/sub/path/#fragment
Testing pattern "http://www.example.org:8080//test"
  http://www.example.org:8080                        tab.url = TIMEOUT
  http://www.example.org:8080#fragment               tab.url = TIMEOUT
  http://www.example.org:8080/                       tab.url = TIMEOUT
  http://www.example.org:8080/#fragment              tab.url = TIMEOUT
  http://www.example.org:8080/subpath                tab.url = TIMEOUT
  http://www.example.org:8080/subpath#fragment       tab.url = TIMEOUT
  http://www.example.org:8080/sub/path/              tab.url = TIMEOUT
  http://www.example.org:8080/sub/path/#fragment     tab.url = TIMEOUT
Testing pattern "http://example.edu/*#fragment"
  http://example.edu                                 tab.url = http://example.edu/
  http://example.edu#fragment                        tab.url = http://example.edu/#fragment
  http://example.edu/                                tab.url = http://example.edu/
  http://example.edu/#fragment                       tab.url = http://example.edu/#fragment
  http://example.edu/subpath                         tab.url = http://example.edu/subpath
  http://example.edu/subpath#fragment                tab.url = http://example.edu/subpath#fragment
  http://example.edu/sub/path/                       tab.url = http://example.edu/sub/path/
  http://example.edu/sub/path/#fragment              tab.url = http://example.edu/sub/path/#fragment
Testing pattern "http://example.edu:80/*#fragment"
  http://example.edu:80                              tab.url = http://example.edu/
  http://example.edu:80#fragment                     tab.url = http://example.edu/#fragment
  http://example.edu:80/                             tab.url = http://example.edu/
  http://example.edu:80/#fragment                    tab.url = http://example.edu/#fragment
  http://example.edu:80/subpath                      tab.url = http://example.edu/subpath
  http://example.edu:80/subpath#fragment             tab.url = http://example.edu/subpath#fragment
  http://example.edu:80/sub/path/                    tab.url = http://example.edu/sub/path/
  http://example.edu:80/sub/path/#fragment           tab.url = http://example.edu/sub/path/#fragment
Testing pattern "http://example.edu:443/*#fragment"
  http://example.edu:443                             tab.url = http://example.edu:443/
  http://example.edu:443#fragment                    tab.url = http://example.edu:443/#fragment
  http://example.edu:443/                            tab.url = http://example.edu:443/
  http://example.edu:443/#fragment                   tab.url = http://example.edu:443/#fragment
  http://example.edu:443/subpath                     tab.url = http://example.edu:443/subpath
  http://example.edu:443/subpath#fragment            tab.url = http://example.edu:443/subpath#fragment
  http://example.edu:443/sub/path/                   tab.url = http://example.edu:443/sub/path/
  http://example.edu:443/sub/path/#fragment          tab.url = http://example.edu:443/sub/path/#fragment
Testing pattern "http://example.edu:8080/*#fragment"
  http://example.edu:8080                            tab.url = TIMEOUT
  http://example.edu:8080#fragment                   tab.url = TIMEOUT
  http://example.edu:8080/                           tab.url = TIMEOUT
  http://example.edu:8080/#fragment                  tab.url = TIMEOUT
  http://example.edu:8080/subpath                    tab.url = TIMEOUT
  http://example.edu:8080/subpath#fragment           tab.url = TIMEOUT
  http://example.edu:8080/sub/path/                  tab.url = TIMEOUT
  http://example.edu:8080/sub/path/#fragment         tab.url = TIMEOUT
Testing pattern "http://www.example.edu/test/*#fragment"
  http://www.example.edu                             tab.url = http://www.example.edu/
  http://www.example.edu#fragment                    tab.url = http://www.example.edu/#fragment
  http://www.example.edu/                            tab.url = http://www.example.edu/
  http://www.example.edu/#fragment                   tab.url = http://www.example.edu/#fragment
  http://www.example.edu/subpath                     tab.url = http://www.example.edu/subpath
  http://www.example.edu/subpath#fragment            tab.url = http://www.example.edu/subpath#fragment
  http://www.example.edu/sub/path/                   tab.url = http://www.example.edu/sub/path/
  http://www.example.edu/sub/path/#fragment          tab.url = http://www.example.edu/sub/path/#fragment
Testing pattern "http://www.example.edu:80/test/*#fragment"
  http://www.example.edu:80                          tab.url = http://www.example.edu/
  http://www.example.edu:80#fragment                 tab.url = http://www.example.edu/#fragment
  http://www.example.edu:80/                         tab.url = http://www.example.edu/
  http://www.example.edu:80/#fragment                tab.url = http://www.example.edu/#fragment
  http://www.example.edu:80/subpath                  tab.url = http://www.example.edu/subpath
  http://www.example.edu:80/subpath#fragment         tab.url = http://www.example.edu/subpath#fragment
  http://www.example.edu:80/sub/path/                tab.url = http://www.example.edu/sub/path/
  http://www.example.edu:80/sub/path/#fragment       tab.url = http://www.example.edu/sub/path/#fragment
Testing pattern "http://www.example.edu:443/test/*#fragment"
  http://www.example.edu:443                         tab.url = http://www.example.edu:443/
  http://www.example.edu:443#fragment                tab.url = http://www.example.edu:443/#fragment
  http://www.example.edu:443/                        tab.url = http://www.example.edu:443/
  http://www.example.edu:443/#fragment               tab.url = http://www.example.edu:443/#fragment
  http://www.example.edu:443/subpath                 tab.url = http://www.example.edu:443/subpath
  http://www.example.edu:443/subpath#fragment        tab.url = http://www.example.edu:443/subpath#fragment
  http://www.example.edu:443/sub/path/               tab.url = http://www.example.edu:443/sub/path/
  http://www.example.edu:443/sub/path/#fragment      tab.url = http://www.example.edu:443/sub/path/#fragment
Testing pattern "http://www.example.edu:8080/test/*#fragment"
  http://www.example.edu:8080                        tab.url = TIMEOUT
  http://www.example.edu:8080#fragment               tab.url = TIMEOUT
  http://www.example.edu:8080/                       tab.url = TIMEOUT
  http://www.example.edu:8080/#fragment              tab.url = TIMEOUT
  http://www.example.edu:8080/subpath                tab.url = TIMEOUT
  http://www.example.edu:8080/subpath#fragment       tab.url = TIMEOUT
  http://www.example.edu:8080/sub/path/              tab.url = TIMEOUT
  http://www.example.edu:8080/sub/path/#fragment     tab.url = TIMEOUT
Testing pattern "https://example.com"
  https://example.com                                tab.url = undefined
  https://example.com#fragment                       tab.url = undefined
  https://example.com/                               tab.url = undefined
  https://example.com/#fragment                      tab.url = undefined
  https://example.com/subpath                        tab.url = undefined
  https://example.com/subpath#fragment               tab.url = undefined
  https://example.com/sub/path/                      tab.url = undefined
  https://example.com/sub/path/#fragment             tab.url = undefined
Testing pattern "https://example.com:80"
  https://example.com:80                             tab.url = undefined
  https://example.com:80#fragment                    tab.url = undefined
  https://example.com:80/                            tab.url = undefined
  https://example.com:80/#fragment                   tab.url = undefined
  https://example.com:80/subpath                     tab.url = undefined
  https://example.com:80/subpath#fragment            tab.url = undefined
  https://example.com:80/sub/path/                   tab.url = undefined
  https://example.com:80/sub/path/#fragment          tab.url = undefined
Testing pattern "https://example.com:443"
  https://example.com:443                            tab.url = undefined
  https://example.com:443#fragment                   tab.url = undefined
  https://example.com:443/                           tab.url = undefined
  https://example.com:443/#fragment                  tab.url = undefined
  https://example.com:443/subpath                    tab.url = undefined
  https://example.com:443/subpath#fragment           tab.url = undefined
  https://example.com:443/sub/path/                  tab.url = undefined
  https://example.com:443/sub/path/#fragment         tab.url = undefined
Testing pattern "https://example.com:8080"
  https://example.com:8080                           tab.url = TIMEOUT
  https://example.com:8080#fragment                  tab.url = TIMEOUT
  https://example.com:8080/                          tab.url = TIMEOUT
  https://example.com:8080/#fragment                 tab.url = TIMEOUT
  https://example.com:8080/subpath                   tab.url = TIMEOUT
  https://example.com:8080/subpath#fragment          tab.url = TIMEOUT
  https://example.com:8080/sub/path/                 tab.url = TIMEOUT
  https://example.com:8080/sub/path/#fragment        tab.url = TIMEOUT
Testing pattern "https://www.example.com/"
  https://www.example.com                            tab.url = https://www.example.com/
  https://www.example.com#fragment                   tab.url = https://www.example.com/#fragment
  https://www.example.com/                           tab.url = https://www.example.com/
  https://www.example.com/#fragment                  tab.url = https://www.example.com/#fragment
  https://www.example.com/subpath                    tab.url = https://www.example.com/subpath
  https://www.example.com/subpath#fragment           tab.url = https://www.example.com/subpath#fragment
  https://www.example.com/sub/path/                  tab.url = https://www.example.com/sub/path/
  https://www.example.com/sub/path/#fragment         tab.url = https://www.example.com/sub/path/#fragment
Testing pattern "https://www.example.com:80/"
  https://www.example.com:80                         tab.url = https://www.example.com:80/
  https://www.example.com:80#fragment                tab.url = https://www.example.com:80/#fragment
  https://www.example.com:80/                        tab.url = https://www.example.com:80/
  https://www.example.com:80/#fragment               tab.url = https://www.example.com:80/#fragment
  https://www.example.com:80/subpath                 tab.url = https://www.example.com:80/subpath
  https://www.example.com:80/subpath#fragment        tab.url = https://www.example.com:80/subpath#fragment
  https://www.example.com:80/sub/path/               tab.url = https://www.example.com:80/sub/path/
  https://www.example.com:80/sub/path/#fragment      tab.url = https://www.example.com:80/sub/path/#fragment
Testing pattern "https://www.example.com:443/"
  https://www.example.com:443                        tab.url = https://www.example.com/
  https://www.example.com:443#fragment               tab.url = https://www.example.com/#fragment
  https://www.example.com:443/                       tab.url = https://www.example.com/
  https://www.example.com:443/#fragment              tab.url = https://www.example.com/#fragment
  https://www.example.com:443/subpath                tab.url = https://www.example.com/subpath
  https://www.example.com:443/subpath#fragment       tab.url = https://www.example.com/subpath#fragment
  https://www.example.com:443/sub/path/              tab.url = https://www.example.com/sub/path/
  https://www.example.com:443/sub/path/#fragment     tab.url = https://www.example.com/sub/path/#fragment
Testing pattern "https://www.example.com:8080/"
  https://www.example.com:8080                       tab.url = TIMEOUT
  https://www.example.com:8080#fragment              tab.url = TIMEOUT
  https://www.example.com:8080/                      tab.url = TIMEOUT
  https://www.example.com:8080/#fragment             tab.url = TIMEOUT
  https://www.example.com:8080/subpath               tab.url = TIMEOUT
  https://www.example.com:8080/subpath#fragment      tab.url = TIMEOUT
  https://www.example.com:8080/sub/path/             tab.url = TIMEOUT
  https://www.example.com:8080/sub/path/#fragment    tab.url = TIMEOUT
Testing pattern "https://example.net/*"
  https://example.net                                tab.url = https://example.net/
  https://example.net#fragment                       tab.url = https://example.net/#fragment
  https://example.net/                               tab.url = https://example.net/
  https://example.net/#fragment                      tab.url = https://example.net/#fragment
  https://example.net/subpath                        tab.url = https://example.net/subpath
  https://example.net/subpath#fragment               tab.url = https://example.net/subpath#fragment
  https://example.net/sub/path/                      tab.url = https://example.net/sub/path/
  https://example.net/sub/path/#fragment             tab.url = https://example.net/sub/path/#fragment
Testing pattern "https://example.net:80/*"
  https://example.net:80                             tab.url = https://example.net:80/
  https://example.net:80#fragment                    tab.url = https://example.net:80/#fragment
  https://example.net:80/                            tab.url = https://example.net:80/
  https://example.net:80/#fragment                   tab.url = https://example.net:80/#fragment
  https://example.net:80/subpath                     tab.url = https://example.net:80/subpath
  https://example.net:80/subpath#fragment            tab.url = https://example.net:80/subpath#fragment
  https://example.net:80/sub/path/                   tab.url = https://example.net:80/sub/path/
  https://example.net:80/sub/path/#fragment          tab.url = https://example.net:80/sub/path/#fragment
Testing pattern "https://example.net:443/*"
  https://example.net:443                            tab.url = https://example.net/
  https://example.net:443#fragment                   tab.url = https://example.net/#fragment
  https://example.net:443/                           tab.url = https://example.net/
  https://example.net:443/#fragment                  tab.url = https://example.net/#fragment
  https://example.net:443/subpath                    tab.url = https://example.net/subpath
  https://example.net:443/subpath#fragment           tab.url = https://example.net/subpath#fragment
  https://example.net:443/sub/path/                  tab.url = https://example.net/sub/path/
  https://example.net:443/sub/path/#fragment         tab.url = https://example.net/sub/path/#fragment
Testing pattern "https://example.net:8080/*"
  https://example.net:8080                           tab.url = TIMEOUT
  https://example.net:8080#fragment                  tab.url = TIMEOUT
  https://example.net:8080/                          tab.url = TIMEOUT
  https://example.net:8080/#fragment                 tab.url = TIMEOUT
  https://example.net:8080/subpath                   tab.url = TIMEOUT
  https://example.net:8080/subpath#fragment          tab.url = TIMEOUT
  https://example.net:8080/sub/path/                 tab.url = TIMEOUT
  https://example.net:8080/sub/path/#fragment        tab.url = TIMEOUT
Testing pattern "https://www.example.net/test"
  https://www.example.net                            tab.url = https://www.example.net/
  https://www.example.net#fragment                   tab.url = https://www.example.net/#fragment
  https://www.example.net/                           tab.url = https://www.example.net/
  https://www.example.net/#fragment                  tab.url = https://www.example.net/#fragment
  https://www.example.net/subpath                    tab.url = https://www.example.net/subpath
  https://www.example.net/subpath#fragment           tab.url = https://www.example.net/subpath#fragment
  https://www.example.net/sub/path/                  tab.url = https://www.example.net/sub/path/
  https://www.example.net/sub/path/#fragment         tab.url = https://www.example.net/sub/path/#fragment
Testing pattern "https://www.example.net:80/test"
  https://www.example.net:80                         tab.url = https://www.example.net:80/
  https://www.example.net:80#fragment                tab.url = https://www.example.net:80/#fragment
  https://www.example.net:80/                        tab.url = https://www.example.net:80/
  https://www.example.net:80/#fragment               tab.url = https://www.example.net:80/#fragment
  https://www.example.net:80/subpath                 tab.url = https://www.example.net:80/subpath
  https://www.example.net:80/subpath#fragment        tab.url = https://www.example.net:80/subpath#fragment
  https://www.example.net:80/sub/path/               tab.url = https://www.example.net:80/sub/path/
  https://www.example.net:80/sub/path/#fragment      tab.url = https://www.example.net:80/sub/path/#fragment
Testing pattern "https://www.example.net:443/test"
  https://www.example.net:443                        tab.url = https://www.example.net/
  https://www.example.net:443#fragment               tab.url = https://www.example.net/#fragment
  https://www.example.net:443/                       tab.url = https://www.example.net/
  https://www.example.net:443/#fragment              tab.url = https://www.example.net/#fragment
  https://www.example.net:443/subpath                tab.url = https://www.example.net/subpath
  https://www.example.net:443/subpath#fragment       tab.url = https://www.example.net/subpath#fragment
  https://www.example.net:443/sub/path/              tab.url = https://www.example.net/sub/path/
  https://www.example.net:443/sub/path/#fragment     tab.url = https://www.example.net/sub/path/#fragment
Testing pattern "https://www.example.net:8080/test"
  https://www.example.net:8080                       tab.url = TIMEOUT
  https://www.example.net:8080#fragment              tab.url = TIMEOUT
  https://www.example.net:8080/                      tab.url = TIMEOUT
  https://www.example.net:8080/#fragment             tab.url = TIMEOUT
  https://www.example.net:8080/subpath               tab.url = TIMEOUT
  https://www.example.net:8080/subpath#fragment      tab.url = TIMEOUT
  https://www.example.net:8080/sub/path/             tab.url = TIMEOUT
  https://www.example.net:8080/sub/path/#fragment    tab.url = TIMEOUT
Testing pattern "https://example.org//*"
  https://example.org                                tab.url = https://example.org/
  https://example.org#fragment                       tab.url = https://example.org/#fragment
  https://example.org/                               tab.url = https://example.org/
  https://example.org/#fragment                      tab.url = https://example.org/#fragment
  https://example.org/subpath                        tab.url = https://example.org/subpath
  https://example.org/subpath#fragment               tab.url = https://example.org/subpath#fragment
  https://example.org/sub/path/                      tab.url = https://example.org/sub/path/
  https://example.org/sub/path/#fragment             tab.url = https://example.org/sub/path/#fragment
Testing pattern "https://example.org:80//*"
  https://example.org:80                             tab.url = https://example.org:80/
  https://example.org:80#fragment                    tab.url = https://example.org:80/#fragment
  https://example.org:80/                            tab.url = https://example.org:80/
  https://example.org:80/#fragment                   tab.url = https://example.org:80/#fragment
  https://example.org:80/subpath                     tab.url = https://example.org:80/subpath
  https://example.org:80/subpath#fragment            tab.url = https://example.org:80/subpath#fragment
  https://example.org:80/sub/path/                   tab.url = https://example.org:80/sub/path/
  https://example.org:80/sub/path/#fragment          tab.url = https://example.org:80/sub/path/#fragment
Testing pattern "https://example.org:443//*"
  https://example.org:443                            tab.url = https://example.org/
  https://example.org:443#fragment                   tab.url = https://example.org/#fragment
  https://example.org:443/                           tab.url = https://example.org/
  https://example.org:443/#fragment                  tab.url = https://example.org/#fragment
  https://example.org:443/subpath                    tab.url = https://example.org/subpath
  https://example.org:443/subpath#fragment           tab.url = https://example.org/subpath#fragment
  https://example.org:443/sub/path/                  tab.url = https://example.org/sub/path/
  https://example.org:443/sub/path/#fragment         tab.url = https://example.org/sub/path/#fragment
Testing pattern "https://example.org:8080//*"
  https://example.org:8080                           tab.url = TIMEOUT
  https://example.org:8080#fragment                  tab.url = TIMEOUT
  https://example.org:8080/                          tab.url = TIMEOUT
  https://example.org:8080/#fragment                 tab.url = TIMEOUT
  https://example.org:8080/subpath                   tab.url = TIMEOUT
  https://example.org:8080/subpath#fragment          tab.url = TIMEOUT
  https://example.org:8080/sub/path/                 tab.url = TIMEOUT
  https://example.org:8080/sub/path/#fragment        tab.url = TIMEOUT
Testing pattern "https://www.example.org//test"
  https://www.example.org                            tab.url = https://www.example.org/
  https://www.example.org#fragment                   tab.url = https://www.example.org/#fragment
  https://www.example.org/                           tab.url = https://www.example.org/
  https://www.example.org/#fragment                  tab.url = https://www.example.org/#fragment
  https://www.example.org/subpath                    tab.url = https://www.example.org/subpath
  https://www.example.org/subpath#fragment           tab.url = https://www.example.org/subpath#fragment
  https://www.example.org/sub/path/                  tab.url = https://www.example.org/sub/path/
  https://www.example.org/sub/path/#fragment         tab.url = https://www.example.org/sub/path/#fragment
Testing pattern "https://www.example.org:80//test"
  https://www.example.org:80                         tab.url = https://www.example.org:80/
  https://www.example.org:80#fragment                tab.url = https://www.example.org:80/#fragment
  https://www.example.org:80/                        tab.url = https://www.example.org:80/
  https://www.example.org:80/#fragment               tab.url = https://www.example.org:80/#fragment
  https://www.example.org:80/subpath                 tab.url = https://www.example.org:80/subpath
  https://www.example.org:80/subpath#fragment        tab.url = https://www.example.org:80/subpath#fragment
  https://www.example.org:80/sub/path/               tab.url = https://www.example.org:80/sub/path/
  https://www.example.org:80/sub/path/#fragment      tab.url = https://www.example.org:80/sub/path/#fragment
Testing pattern "https://www.example.org:443//test"
  https://www.example.org:443                        tab.url = https://www.example.org/
  https://www.example.org:443#fragment               tab.url = https://www.example.org/#fragment
  https://www.example.org:443/                       tab.url = https://www.example.org/
  https://www.example.org:443/#fragment              tab.url = https://www.example.org/#fragment
  https://www.example.org:443/subpath                tab.url = https://www.example.org/subpath
  https://www.example.org:443/subpath#fragment       tab.url = https://www.example.org/subpath#fragment
  https://www.example.org:443/sub/path/              tab.url = https://www.example.org/sub/path/
  https://www.example.org:443/sub/path/#fragment     tab.url = https://www.example.org/sub/path/#fragment
Testing pattern "https://www.example.org:8080//test"
  https://www.example.org:8080                       tab.url = TIMEOUT
  https://www.example.org:8080#fragment              tab.url = TIMEOUT
  https://www.example.org:8080/                      tab.url = TIMEOUT
  https://www.example.org:8080/#fragment             tab.url = TIMEOUT
  https://www.example.org:8080/subpath               tab.url = TIMEOUT
  https://www.example.org:8080/subpath#fragment      tab.url = TIMEOUT
  https://www.example.org:8080/sub/path/             tab.url = TIMEOUT
  https://www.example.org:8080/sub/path/#fragment    tab.url = TIMEOUT
Testing pattern "https://example.edu/*#fragment"
  https://example.edu                                tab.url = https://example.edu/
  https://example.edu#fragment                       tab.url = https://example.edu/#fragment
  https://example.edu/                               tab.url = https://example.edu/
  https://example.edu/#fragment                      tab.url = https://example.edu/#fragment
  https://example.edu/subpath                        tab.url = https://example.edu/subpath
  https://example.edu/subpath#fragment               tab.url = https://example.edu/subpath#fragment
  https://example.edu/sub/path/                      tab.url = https://example.edu/sub/path/
  https://example.edu/sub/path/#fragment             tab.url = https://example.edu/sub/path/#fragment
Testing pattern "https://example.edu:80/*#fragment"
  https://example.edu:80                             tab.url = https://example.edu:80/
  https://example.edu:80#fragment                    tab.url = https://example.edu:80/#fragment
  https://example.edu:80/                            tab.url = https://example.edu:80/
  https://example.edu:80/#fragment                   tab.url = https://example.edu:80/#fragment
  https://example.edu:80/subpath                     tab.url = https://example.edu:80/subpath
  https://example.edu:80/subpath#fragment            tab.url = https://example.edu:80/subpath#fragment
  https://example.edu:80/sub/path/                   tab.url = https://example.edu:80/sub/path/
  https://example.edu:80/sub/path/#fragment          tab.url = https://example.edu:80/sub/path/#fragment
Testing pattern "https://example.edu:443/*#fragment"
  https://example.edu:443                            tab.url = https://example.edu/
  https://example.edu:443#fragment                   tab.url = https://example.edu/#fragment
  https://example.edu:443/                           tab.url = https://example.edu/
  https://example.edu:443/#fragment                  tab.url = https://example.edu/#fragment
  https://example.edu:443/subpath                    tab.url = https://example.edu/subpath
  https://example.edu:443/subpath#fragment           tab.url = https://example.edu/subpath#fragment
  https://example.edu:443/sub/path/                  tab.url = https://example.edu/sub/path/
  https://example.edu:443/sub/path/#fragment         tab.url = https://example.edu/sub/path/#fragment
Testing pattern "https://example.edu:8080/*#fragment"
  https://example.edu:8080                           tab.url = TIMEOUT
  https://example.edu:8080#fragment                  tab.url = TIMEOUT
  https://example.edu:8080/                          tab.url = TIMEOUT
  https://example.edu:8080/#fragment                 tab.url = TIMEOUT
  https://example.edu:8080/subpath                   tab.url = TIMEOUT
  https://example.edu:8080/subpath#fragment          tab.url = TIMEOUT
  https://example.edu:8080/sub/path/                 tab.url = TIMEOUT
  https://example.edu:8080/sub/path/#fragment        tab.url = TIMEOUT
Testing pattern "https://www.example.edu/test/*#fragment"
  https://www.example.edu                            tab.url = https://www.example.edu/
  https://www.example.edu#fragment                   tab.url = https://www.example.edu/#fragment
  https://www.example.edu/                           tab.url = https://www.example.edu/
  https://www.example.edu/#fragment                  tab.url = https://www.example.edu/#fragment
  https://www.example.edu/subpath                    tab.url = https://www.example.edu/subpath
  https://www.example.edu/subpath#fragment           tab.url = https://www.example.edu/subpath#fragment
  https://www.example.edu/sub/path/                  tab.url = https://www.example.edu/sub/path/
  https://www.example.edu/sub/path/#fragment         tab.url = https://www.example.edu/sub/path/#fragment
Testing pattern "https://www.example.edu:80/test/*#fragment"
  https://www.example.edu:80                         tab.url = https://www.example.edu:80/
  https://www.example.edu:80#fragment                tab.url = https://www.example.edu:80/#fragment
  https://www.example.edu:80/                        tab.url = https://www.example.edu:80/
  https://www.example.edu:80/#fragment               tab.url = https://www.example.edu:80/#fragment
  https://www.example.edu:80/subpath                 tab.url = https://www.example.edu:80/subpath
  https://www.example.edu:80/subpath#fragment        tab.url = https://www.example.edu:80/subpath#fragment
  https://www.example.edu:80/sub/path/               tab.url = https://www.example.edu:80/sub/path/
  https://www.example.edu:80/sub/path/#fragment      tab.url = https://www.example.edu:80/sub/path/#fragment
Testing pattern "https://www.example.edu:443/test/*#fragment"
  https://www.example.edu:443                        tab.url = https://www.example.edu/
  https://www.example.edu:443#fragment               tab.url = https://www.example.edu/#fragment
  https://www.example.edu:443/                       tab.url = https://www.example.edu/
  https://www.example.edu:443/#fragment              tab.url = https://www.example.edu/#fragment
  https://www.example.edu:443/subpath                tab.url = https://www.example.edu/subpath
  https://www.example.edu:443/subpath#fragment       tab.url = https://www.example.edu/subpath#fragment
  https://www.example.edu:443/sub/path/              tab.url = https://www.example.edu/sub/path/
  https://www.example.edu:443/sub/path/#fragment     tab.url = https://www.example.edu/sub/path/#fragment
Testing pattern "https://www.example.edu:8080/test/*#fragment"
  https://www.example.edu:8080                       tab.url = TIMEOUT
  https://www.example.edu:8080#fragment              tab.url = TIMEOUT
  https://www.example.edu:8080/                      tab.url = TIMEOUT
  https://www.example.edu:8080/#fragment             tab.url = TIMEOUT
  https://www.example.edu:8080/subpath               tab.url = TIMEOUT
  https://www.example.edu:8080/subpath#fragment      tab.url = TIMEOUT
  https://www.example.edu:8080/sub/path/             tab.url = TIMEOUT
  https://www.example.edu:8080/sub/path/#fragment    tab.url = TIMEOUT

Safari 18.1 (20619.2.8.11.10) results

Before runnung this test I used testHostUpgrades() and manually approved access to each host in the Extensions section of Safari's Settings menu.

manifest patterns (64): ["http://example.com","http://example.com:80","http://example.com:443","http://example.com:8080","http://www.example.com/","http://www.example.com:80/","http://www.example.com:443/","http://www.example.com:8080/","http://example.net/*","http://example.net:80/*","http://example.net:443/*","http://example.net:8080/*","http://www.example.net/test","http://www.example.net:80/test","http://www.example.net:443/test","http://www.example.net:8080/test","http://example.org//*","http://example.org:80//*","http://example.org:443//*","http://example.org:8080//*","http://www.example.org//test","http://www.example.org:80//test","http://www.example.org:443//test","http://www.example.org:8080//test","http://example.edu/*#fragment","http://example.edu:80/*#fragment","http://example.edu:443/*#fragment","http://example.edu:8080/*#fragment","http://www.example.edu/test/*#fragment","http://www.example.edu:80/test/*#fragment","http://www.example.edu:443/test/*#fragment","http://www.example.edu:8080/test/*#fragment","https://example.com","https://example.com:80","https://example.com:443","https://example.com:8080","https://www.example.com/","https://www.example.com:80/","https://www.example.com:443/","https://www.example.com:8080/","https://example.net/*","https://example.net:80/*","https://example.net:443/*","https://example.net:8080/*","https://www.example.net/test","https://www.example.net:80/test","https://www.example.net:443/test","https://www.example.net:8080/test","https://example.org//*","https://example.org:80//*","https://example.org:443//*","https://example.org:8080//*","https://www.example.org//test","https://www.example.org:80//test","https://www.example.org:443//test","https://www.example.org:8080//test","https://example.edu/*#fragment","https://example.edu:80/*#fragment","https://example.edu:443/*#fragment","https://example.edu:8080/*#fragment","https://www.example.edu/test/*#fragment","https://www.example.edu:80/test/*#fragment","https://www.example.edu:443/test/*#fragment","https://www.example.edu:8080/test/*#fragment"]
granted  patterns (4): ["*://*.example.edu/*","*://*.example.com/*","*://*.example.org/*","*://*.example.net/*"]
pattern origins (64): ["http://example.com","http://example.com:80","http://example.com:443","http://example.com:8080","http://www.example.com","http://www.example.com:80","http://www.example.com:443","http://www.example.com:8080","http://example.net","http://example.net:80","http://example.net:443","http://example.net:8080","http://www.example.net","http://www.example.net:80","http://www.example.net:443","http://www.example.net:8080","http://example.org","http://example.org:80","http://example.org:443","http://example.org:8080","http://www.example.org","http://www.example.org:80","http://www.example.org:443","http://www.example.org:8080","http://example.edu","http://example.edu:80","http://example.edu:443","http://example.edu:8080","http://www.example.edu","http://www.example.edu:80","http://www.example.edu:443","http://www.example.edu:8080","https://example.com","https://example.com:80","https://example.com:443","https://example.com:8080","https://www.example.com","https://www.example.com:80","https://www.example.com:443","https://www.example.com:8080","https://example.net","https://example.net:80","https://example.net:443","https://example.net:8080","https://www.example.net","https://www.example.net:80","https://www.example.net:443","https://www.example.net:8080","https://example.org","https://example.org:80","https://example.org:443","https://example.org:8080","https://www.example.org","https://www.example.org:80","https://www.example.org:443","https://www.example.org:8080","https://example.edu","https://example.edu:80","https://example.edu:443","https://example.edu:8080","https://www.example.edu","https://www.example.edu:80","https://www.example.edu:443","https://www.example.edu:8080"]
  Request URL                                        Observed URL (indicates pattern match)
Testing pattern "http://example.com"
  http://example.com                                 tab.url = http://example.com/
  http://example.com#fragment                        tab.url = http://example.com/#fragment
  http://example.com/                                tab.url = http://example.com/
  http://example.com/#fragment                       tab.url = http://example.com/#fragment
  http://example.com/subpath                         tab.url = http://example.com/subpath
  http://example.com/subpath#fragment                tab.url = http://example.com/subpath#fragment
  http://example.com/sub/path/                       tab.url = http://example.com/sub/path/
  http://example.com/sub/path/#fragment              tab.url = http://example.com/sub/path/#fragment
Testing pattern "http://example.com:80"
  http://example.com:80                              tab.url = http://example.com/
  http://example.com:80#fragment                     tab.url = http://example.com/#fragment
  http://example.com:80/                             tab.url = http://example.com/
  http://example.com:80/#fragment                    tab.url = http://example.com/#fragment
  http://example.com:80/subpath                      tab.url = http://example.com/subpath
  http://example.com:80/subpath#fragment             tab.url = http://example.com/subpath#fragment
  http://example.com:80/sub/path/                    tab.url = http://example.com/sub/path/
  http://example.com:80/sub/path/#fragment           tab.url = http://example.com/sub/path/#fragment
Testing pattern "http://example.com:443"
  http://example.com:443                             tab.url = http://example.com:443/
  http://example.com:443#fragment                    tab.url = http://example.com:443/#fragment
  http://example.com:443/                            tab.url = http://example.com:443/
  http://example.com:443/#fragment                   tab.url = http://example.com:443/#fragment
  http://example.com:443/subpath                     tab.url = http://example.com:443/subpath
  http://example.com:443/subpath#fragment            tab.url = http://example.com:443/subpath#fragment
  http://example.com:443/sub/path/                   tab.url = http://example.com:443/sub/path/
  http://example.com:443/sub/path/#fragment          tab.url = http://example.com:443/sub/path/#fragment
Testing pattern "http://example.com:8080"
  http://example.com:8080                            tab.url = TIMEOUT
  http://example.com:8080#fragment                   tab.url = TIMEOUT
  http://example.com:8080/                           tab.url = TIMEOUT
  http://example.com:8080/#fragment                  tab.url = TIMEOUT
  http://example.com:8080/subpath                    tab.url = TIMEOUT
  http://example.com:8080/subpath#fragment           tab.url = TIMEOUT
  http://example.com:8080/sub/path/                  tab.url = TIMEOUT
  http://example.com:8080/sub/path/#fragment         tab.url = TIMEOUT
Testing pattern "http://www.example.com/"
  http://www.example.com                             tab.url = http://www.example.com/
  http://www.example.com#fragment                    tab.url = http://www.example.com/#fragment
  http://www.example.com/                            tab.url = http://www.example.com/
  http://www.example.com/#fragment                   tab.url = http://www.example.com/#fragment
  http://www.example.com/subpath                     tab.url = http://www.example.com/subpath
  http://www.example.com/subpath#fragment            tab.url = http://www.example.com/subpath#fragment
  http://www.example.com/sub/path/                   tab.url = http://www.example.com/sub/path/
  http://www.example.com/sub/path/#fragment          tab.url = http://www.example.com/sub/path/#fragment
Testing pattern "http://www.example.com:80/"
  http://www.example.com:80                          tab.url = http://www.example.com/
  http://www.example.com:80#fragment                 tab.url = http://www.example.com/#fragment
  http://www.example.com:80/                         tab.url = http://www.example.com/
  http://www.example.com:80/#fragment                tab.url = http://www.example.com/#fragment
  http://www.example.com:80/subpath                  tab.url = http://www.example.com/subpath
  http://www.example.com:80/subpath#fragment         tab.url = http://www.example.com/subpath#fragment
  http://www.example.com:80/sub/path/                tab.url = http://www.example.com/sub/path/
  http://www.example.com:80/sub/path/#fragment       tab.url = http://www.example.com/sub/path/#fragment
Testing pattern "http://www.example.com:443/"
  http://www.example.com:443                         tab.url = http://www.example.com:443/
  http://www.example.com:443#fragment                tab.url = http://www.example.com:443/#fragment
  http://www.example.com:443/                        tab.url = http://www.example.com:443/
  http://www.example.com:443/#fragment               tab.url = http://www.example.com:443/#fragment
  http://www.example.com:443/subpath                 tab.url = http://www.example.com:443/subpath
  http://www.example.com:443/subpath#fragment        tab.url = http://www.example.com:443/subpath#fragment
  http://www.example.com:443/sub/path/               tab.url = http://www.example.com:443/sub/path/
  http://www.example.com:443/sub/path/#fragment      tab.url = http://www.example.com:443/sub/path/#fragment
Testing pattern "http://www.example.com:8080/"
  http://www.example.com:8080                        tab.url = TIMEOUT
  http://www.example.com:8080#fragment               tab.url = TIMEOUT
  http://www.example.com:8080/                       tab.url = TIMEOUT
  http://www.example.com:8080/#fragment              tab.url = TIMEOUT
  http://www.example.com:8080/subpath                tab.url = TIMEOUT
  http://www.example.com:8080/subpath#fragment       tab.url = TIMEOUT
  http://www.example.com:8080/sub/path/              tab.url = TIMEOUT
  http://www.example.com:8080/sub/path/#fragment     tab.url = TIMEOUT
Testing pattern "http://example.net/*"
  http://example.net                                 tab.url = http://example.net/
  http://example.net#fragment                        tab.url = http://example.net/#fragment
  http://example.net/                                tab.url = http://example.net/
  http://example.net/#fragment                       tab.url = http://example.net/#fragment
  http://example.net/subpath                         tab.url = http://example.net/subpath
  http://example.net/subpath#fragment                tab.url = http://example.net/subpath#fragment
  http://example.net/sub/path/                       tab.url = http://example.net/sub/path/
  http://example.net/sub/path/#fragment              tab.url = http://example.net/sub/path/#fragment
Testing pattern "http://example.net:80/*"
  http://example.net:80                              tab.url = http://example.net/
  http://example.net:80#fragment                     tab.url = http://example.net/#fragment
  http://example.net:80/                             tab.url = http://example.net/
  http://example.net:80/#fragment                    tab.url = http://example.net/#fragment
  http://example.net:80/subpath                      tab.url = http://example.net/subpath
  http://example.net:80/subpath#fragment             tab.url = http://example.net/subpath#fragment
  http://example.net:80/sub/path/                    tab.url = http://example.net/sub/path/
  http://example.net:80/sub/path/#fragment           tab.url = http://example.net/sub/path/#fragment
Testing pattern "http://example.net:443/*"
  http://example.net:443                             tab.url = http://example.net:443/
  http://example.net:443#fragment                    tab.url = http://example.net:443/#fragment
  http://example.net:443/                            tab.url = http://example.net:443/
  http://example.net:443/#fragment                   tab.url = http://example.net:443/#fragment
  http://example.net:443/subpath                     tab.url = http://example.net:443/subpath
  http://example.net:443/subpath#fragment            tab.url = http://example.net:443/subpath#fragment
  http://example.net:443/sub/path/                   tab.url = http://example.net:443/sub/path/
  http://example.net:443/sub/path/#fragment          tab.url = http://example.net:443/sub/path/#fragment
Testing pattern "http://example.net:8080/*"
  http://example.net:8080                            tab.url = TIMEOUT
  http://example.net:8080#fragment                   tab.url = TIMEOUT
  http://example.net:8080/                           tab.url = TIMEOUT
  http://example.net:8080/#fragment                  tab.url = TIMEOUT
  http://example.net:8080/subpath                    tab.url = TIMEOUT
  http://example.net:8080/subpath#fragment           tab.url = TIMEOUT
  http://example.net:8080/sub/path/                  tab.url = TIMEOUT
  http://example.net:8080/sub/path/#fragment         tab.url = TIMEOUT
Testing pattern "http://www.example.net/test"
  http://www.example.net                             tab.url = http://www.example.net/
  http://www.example.net#fragment                    tab.url = http://www.example.net/#fragment
  http://www.example.net/                            tab.url = http://www.example.net/
  http://www.example.net/#fragment                   tab.url = http://www.example.net/#fragment
  http://www.example.net/subpath                     tab.url = http://www.example.net/subpath
  http://www.example.net/subpath#fragment            tab.url = http://www.example.net/subpath#fragment
  http://www.example.net/sub/path/                   tab.url = http://www.example.net/sub/path/
  http://www.example.net/sub/path/#fragment          tab.url = http://www.example.net/sub/path/#fragment
Testing pattern "http://www.example.net:80/test"
  http://www.example.net:80                          tab.url = http://www.example.net/
  http://www.example.net:80#fragment                 tab.url = http://www.example.net/#fragment
  http://www.example.net:80/                         tab.url = http://www.example.net/
  http://www.example.net:80/#fragment                tab.url = http://www.example.net/#fragment
  http://www.example.net:80/subpath                  tab.url = http://www.example.net/subpath
  http://www.example.net:80/subpath#fragment         tab.url = http://www.example.net/subpath#fragment
  http://www.example.net:80/sub/path/                tab.url = http://www.example.net/sub/path/
  http://www.example.net:80/sub/path/#fragment       tab.url = http://www.example.net/sub/path/#fragment
Testing pattern "http://www.example.net:443/test"
  http://www.example.net:443                         tab.url = http://www.example.net:443/
  http://www.example.net:443#fragment                tab.url = http://www.example.net:443/#fragment
  http://www.example.net:443/                        tab.url = http://www.example.net:443/
  http://www.example.net:443/#fragment               tab.url = http://www.example.net:443/#fragment
  http://www.example.net:443/subpath                 tab.url = http://www.example.net:443/subpath
  http://www.example.net:443/subpath#fragment        tab.url = http://www.example.net:443/subpath#fragment
  http://www.example.net:443/sub/path/               tab.url = http://www.example.net:443/sub/path/
  http://www.example.net:443/sub/path/#fragment      tab.url = http://www.example.net:443/sub/path/#fragment
Testing pattern "http://www.example.net:8080/test"
  http://www.example.net:8080                        tab.url = TIMEOUT
  http://www.example.net:8080#fragment               tab.url = TIMEOUT
  http://www.example.net:8080/                       tab.url = TIMEOUT
  http://www.example.net:8080/#fragment              tab.url = TIMEOUT
  http://www.example.net:8080/subpath                tab.url = TIMEOUT
  http://www.example.net:8080/subpath#fragment       tab.url = TIMEOUT
  http://www.example.net:8080/sub/path/              tab.url = TIMEOUT
  http://www.example.net:8080/sub/path/#fragment     tab.url = TIMEOUT
Testing pattern "http://example.org//*"
  http://example.org                                 tab.url = http://example.org/
  http://example.org#fragment                        tab.url = http://example.org/#fragment
  http://example.org/                                tab.url = http://example.org/
  http://example.org/#fragment                       tab.url = http://example.org/#fragment
  http://example.org/subpath                         tab.url = http://example.org/subpath
  http://example.org/subpath#fragment                tab.url = http://example.org/subpath#fragment
  http://example.org/sub/path/                       tab.url = http://example.org/sub/path/
  http://example.org/sub/path/#fragment              tab.url = http://example.org/sub/path/#fragment
Testing pattern "http://example.org:80//*"
  http://example.org:80                              tab.url = http://example.org/
  http://example.org:80#fragment                     tab.url = http://example.org/#fragment
  http://example.org:80/                             tab.url = http://example.org/
  http://example.org:80/#fragment                    tab.url = http://example.org/#fragment
  http://example.org:80/subpath                      tab.url = http://example.org/subpath
  http://example.org:80/subpath#fragment             tab.url = http://example.org/subpath#fragment
  http://example.org:80/sub/path/                    tab.url = http://example.org/sub/path/
  http://example.org:80/sub/path/#fragment           tab.url = http://example.org/sub/path/#fragment
Testing pattern "http://example.org:443//*"
  http://example.org:443                             tab.url = http://example.org:443/
  http://example.org:443#fragment                    tab.url = http://example.org:443/#fragment
  http://example.org:443/                            tab.url = http://example.org:443/
  http://example.org:443/#fragment                   tab.url = http://example.org:443/#fragment
  http://example.org:443/subpath                     tab.url = http://example.org:443/subpath
  http://example.org:443/subpath#fragment            tab.url = http://example.org:443/subpath#fragment
  http://example.org:443/sub/path/                   tab.url = http://example.org:443/sub/path/
  http://example.org:443/sub/path/#fragment          tab.url = http://example.org:443/sub/path/#fragment
Testing pattern "http://example.org:8080//*"
  http://example.org:8080                            tab.url = TIMEOUT
  http://example.org:8080#fragment                   tab.url = TIMEOUT
  http://example.org:8080/                           tab.url = TIMEOUT
  http://example.org:8080/#fragment                  tab.url = TIMEOUT
  http://example.org:8080/subpath                    tab.url = TIMEOUT
  http://example.org:8080/subpath#fragment           tab.url = TIMEOUT
  http://example.org:8080/sub/path/                  tab.url = TIMEOUT
  http://example.org:8080/sub/path/#fragment         tab.url = TIMEOUT
Testing pattern "http://www.example.org//test"
  http://www.example.org                             tab.url = http://www.example.org/
  http://www.example.org#fragment                    tab.url = http://www.example.org/#fragment
  http://www.example.org/                            tab.url = http://www.example.org/
  http://www.example.org/#fragment                   tab.url = http://www.example.org/#fragment
  http://www.example.org/subpath                     tab.url = http://www.example.org/subpath
  http://www.example.org/subpath#fragment            tab.url = http://www.example.org/subpath#fragment
  http://www.example.org/sub/path/                   tab.url = http://www.example.org/sub/path/
  http://www.example.org/sub/path/#fragment          tab.url = http://www.example.org/sub/path/#fragment
Testing pattern "http://www.example.org:80//test"
  http://www.example.org:80                          tab.url = http://www.example.org/
  http://www.example.org:80#fragment                 tab.url = http://www.example.org/#fragment
  http://www.example.org:80/                         tab.url = http://www.example.org/
  http://www.example.org:80/#fragment                tab.url = http://www.example.org/#fragment
  http://www.example.org:80/subpath                  tab.url = http://www.example.org/subpath
  http://www.example.org:80/subpath#fragment         tab.url = http://www.example.org/subpath#fragment
  http://www.example.org:80/sub/path/                tab.url = http://www.example.org/sub/path/
  http://www.example.org:80/sub/path/#fragment       tab.url = http://www.example.org/sub/path/#fragment
Testing pattern "http://www.example.org:443//test"
  http://www.example.org:443                         tab.url = http://www.example.org:443/
  http://www.example.org:443#fragment                tab.url = http://www.example.org:443/#fragment
  http://www.example.org:443/                        tab.url = http://www.example.org:443/
  http://www.example.org:443/#fragment               tab.url = http://www.example.org:443/#fragment
  http://www.example.org:443/subpath                 tab.url = http://www.example.org:443/subpath
  http://www.example.org:443/subpath#fragment        tab.url = http://www.example.org:443/subpath#fragment
  http://www.example.org:443/sub/path/               tab.url = http://www.example.org:443/sub/path/
  http://www.example.org:443/sub/path/#fragment      tab.url = http://www.example.org:443/sub/path/#fragment
Testing pattern "http://www.example.org:8080//test"
  http://www.example.org:8080                        tab.url = TIMEOUT
  http://www.example.org:8080#fragment               tab.url = TIMEOUT
  http://www.example.org:8080/                       tab.url = TIMEOUT
  http://www.example.org:8080/#fragment              tab.url = TIMEOUT
  http://www.example.org:8080/subpath                tab.url = TIMEOUT
  http://www.example.org:8080/subpath#fragment       tab.url = TIMEOUT
  http://www.example.org:8080/sub/path/              tab.url = TIMEOUT
  http://www.example.org:8080/sub/path/#fragment     tab.url = TIMEOUT
Testing pattern "http://example.edu/*#fragment"
  http://example.edu                                 tab.url = http://example.edu/
  http://example.edu#fragment                        tab.url = http://example.edu/#fragment
  http://example.edu/                                tab.url = http://example.edu/
  http://example.edu/#fragment                       tab.url = http://example.edu/#fragment
  http://example.edu/subpath                         tab.url = http://example.edu/subpath
  http://example.edu/subpath#fragment                tab.url = http://example.edu/subpath#fragment
  http://example.edu/sub/path/                       tab.url = http://example.edu/sub/path/
  http://example.edu/sub/path/#fragment              tab.url = http://example.edu/sub/path/#fragment
Testing pattern "http://example.edu:80/*#fragment"
  http://example.edu:80                              tab.url = http://example.edu/
  http://example.edu:80#fragment                     tab.url = http://example.edu/#fragment
  http://example.edu:80/                             tab.url = http://example.edu/
  http://example.edu:80/#fragment                    tab.url = http://example.edu/#fragment
  http://example.edu:80/subpath                      tab.url = http://example.edu/subpath
  http://example.edu:80/subpath#fragment             tab.url = http://example.edu/subpath#fragment
  http://example.edu:80/sub/path/                    tab.url = http://example.edu/sub/path/
  http://example.edu:80/sub/path/#fragment           tab.url = http://example.edu/sub/path/#fragment
Testing pattern "http://example.edu:443/*#fragment"
  http://example.edu:443                             tab.url = http://example.edu:443/
  http://example.edu:443#fragment                    tab.url = http://example.edu:443/#fragment
  http://example.edu:443/                            tab.url = http://example.edu:443/
  http://example.edu:443/#fragment                   tab.url = http://example.edu:443/#fragment
  http://example.edu:443/subpath                     tab.url = http://example.edu:443/subpath
  http://example.edu:443/subpath#fragment            tab.url = http://example.edu:443/subpath#fragment
  http://example.edu:443/sub/path/                   tab.url = http://example.edu:443/sub/path/
  http://example.edu:443/sub/path/#fragment          tab.url = http://example.edu:443/sub/path/#fragment
Testing pattern "http://example.edu:8080/*#fragment"
  http://example.edu:8080                            tab.url = TIMEOUT
  http://example.edu:8080#fragment                   tab.url = TIMEOUT
  http://example.edu:8080/                           tab.url = TIMEOUT
  http://example.edu:8080/#fragment                  tab.url = TIMEOUT
  http://example.edu:8080/subpath                    tab.url = TIMEOUT
  http://example.edu:8080/subpath#fragment           tab.url = TIMEOUT
  http://example.edu:8080/sub/path/                  tab.url = TIMEOUT
  http://example.edu:8080/sub/path/#fragment         tab.url = TIMEOUT
Testing pattern "http://www.example.edu/test/*#fragment"
  http://www.example.edu                             tab.url = http://www.example.edu/
  http://www.example.edu#fragment                    tab.url = http://www.example.edu/#fragment
  http://www.example.edu/                            tab.url = http://www.example.edu/
  http://www.example.edu/#fragment                   tab.url = http://www.example.edu/#fragment
  http://www.example.edu/subpath                     tab.url = http://www.example.edu/subpath
  http://www.example.edu/subpath#fragment            tab.url = http://www.example.edu/subpath#fragment
  http://www.example.edu/sub/path/                   tab.url = http://www.example.edu/sub/path/
  http://www.example.edu/sub/path/#fragment          tab.url = http://www.example.edu/sub/path/#fragment
Testing pattern "http://www.example.edu:80/test/*#fragment"
  http://www.example.edu:80                          tab.url = http://www.example.edu/
  http://www.example.edu:80#fragment                 tab.url = http://www.example.edu/#fragment
  http://www.example.edu:80/                         tab.url = http://www.example.edu/
  http://www.example.edu:80/#fragment                tab.url = http://www.example.edu/#fragment
  http://www.example.edu:80/subpath                  tab.url = http://www.example.edu/subpath
  http://www.example.edu:80/subpath#fragment         tab.url = http://www.example.edu/subpath#fragment
  http://www.example.edu:80/sub/path/                tab.url = http://www.example.edu/sub/path/
  http://www.example.edu:80/sub/path/#fragment       tab.url = http://www.example.edu/sub/path/#fragment
Testing pattern "http://www.example.edu:443/test/*#fragment"
  http://www.example.edu:443                         tab.url = http://www.example.edu:443/
  http://www.example.edu:443#fragment                tab.url = http://www.example.edu:443/#fragment
  http://www.example.edu:443/                        tab.url = http://www.example.edu:443/
  http://www.example.edu:443/#fragment               tab.url = http://www.example.edu:443/#fragment
  http://www.example.edu:443/subpath                 tab.url = http://www.example.edu:443/subpath
  http://www.example.edu:443/subpath#fragment        tab.url = http://www.example.edu:443/subpath#fragment
  http://www.example.edu:443/sub/path/               tab.url = http://www.example.edu:443/sub/path/
  http://www.example.edu:443/sub/path/#fragment      tab.url = http://www.example.edu:443/sub/path/#fragment
Testing pattern "http://www.example.edu:8080/test/*#fragment"
  http://www.example.edu:8080                        tab.url = TIMEOUT
  http://www.example.edu:8080#fragment               tab.url = TIMEOUT
  http://www.example.edu:8080/                       tab.url = TIMEOUT
  http://www.example.edu:8080/#fragment              tab.url = TIMEOUT
  http://www.example.edu:8080/subpath                tab.url = TIMEOUT
  http://www.example.edu:8080/subpath#fragment       tab.url = TIMEOUT
  http://www.example.edu:8080/sub/path/              tab.url = TIMEOUT
  http://www.example.edu:8080/sub/path/#fragment     tab.url = TIMEOUT
Testing pattern "https://example.com"
  https://example.com                                tab.url = https://example.com/
  https://example.com#fragment                       tab.url = https://example.com/#fragment
  https://example.com/                               tab.url = https://example.com/
  https://example.com/#fragment                      tab.url = https://example.com/#fragment
  https://example.com/subpath                        tab.url = https://example.com/subpath
  https://example.com/subpath#fragment               tab.url = https://example.com/subpath#fragment
  https://example.com/sub/path/                      tab.url = https://example.com/sub/path/
  https://example.com/sub/path/#fragment             tab.url = https://example.com/sub/path/#fragment
Testing pattern "https://example.com:80"
  https://example.com:80                             tab.url = https://example.com:80/
  https://example.com:80#fragment                    tab.url = https://example.com:80/#fragment
  https://example.com:80/                            tab.url = https://example.com:80/
  https://example.com:80/#fragment                   tab.url = https://example.com:80/#fragment
  https://example.com:80/subpath                     tab.url = https://example.com:80/subpath
  https://example.com:80/subpath#fragment            tab.url = https://example.com:80/subpath#fragment
  https://example.com:80/sub/path/                   tab.url = https://example.com:80/sub/path/
  https://example.com:80/sub/path/#fragment          tab.url = https://example.com:80/sub/path/#fragment
Testing pattern "https://example.com:443"
  https://example.com:443                            tab.url = https://example.com/
  https://example.com:443#fragment                   tab.url = https://example.com/#fragment
  https://example.com:443/                           tab.url = https://example.com/
  https://example.com:443/#fragment                  tab.url = https://example.com/#fragment
  https://example.com:443/subpath                    tab.url = https://example.com/subpath
  https://example.com:443/subpath#fragment           tab.url = https://example.com/subpath#fragment
  https://example.com:443/sub/path/                  tab.url = https://example.com/sub/path/
  https://example.com:443/sub/path/#fragment         tab.url = https://example.com/sub/path/#fragment
Testing pattern "https://example.com:8080"
  https://example.com:8080                           tab.url = TIMEOUT
  https://example.com:8080#fragment                  tab.url = TIMEOUT
  https://example.com:8080/                          tab.url = TIMEOUT
  https://example.com:8080/#fragment                 tab.url = TIMEOUT
  https://example.com:8080/subpath                   tab.url = TIMEOUT
  https://example.com:8080/subpath#fragment          tab.url = TIMEOUT
  https://example.com:8080/sub/path/                 tab.url = TIMEOUT
  https://example.com:8080/sub/path/#fragment        tab.url = TIMEOUT
Testing pattern "https://www.example.com/"
  https://www.example.com                            tab.url = https://www.example.com/
  https://www.example.com#fragment                   tab.url = https://www.example.com/#fragment
  https://www.example.com/                           tab.url = https://www.example.com/
  https://www.example.com/#fragment                  tab.url = https://www.example.com/#fragment
  https://www.example.com/subpath                    tab.url = https://www.example.com/subpath
  https://www.example.com/subpath#fragment           tab.url = https://www.example.com/subpath#fragment
  https://www.example.com/sub/path/                  tab.url = https://www.example.com/sub/path/
  https://www.example.com/sub/path/#fragment         tab.url = https://www.example.com/sub/path/#fragment
Testing pattern "https://www.example.com:80/"
  https://www.example.com:80                         tab.url = https://www.example.com:80/
  https://www.example.com:80#fragment                tab.url = https://www.example.com:80/#fragment
  https://www.example.com:80/                        tab.url = https://www.example.com:80/
  https://www.example.com:80/#fragment               tab.url = https://www.example.com:80/#fragment
  https://www.example.com:80/subpath                 tab.url = https://www.example.com:80/subpath
  https://www.example.com:80/subpath#fragment        tab.url = https://www.example.com:80/subpath#fragment
  https://www.example.com:80/sub/path/               tab.url = https://www.example.com:80/sub/path/
  https://www.example.com:80/sub/path/#fragment      tab.url = https://www.example.com:80/sub/path/#fragment
Testing pattern "https://www.example.com:443/"
  https://www.example.com:443                        tab.url = https://www.example.com/
  https://www.example.com:443#fragment               tab.url = https://www.example.com/#fragment
  https://www.example.com:443/                       tab.url = https://www.example.com/
  https://www.example.com:443/#fragment              tab.url = https://www.example.com/#fragment
  https://www.example.com:443/subpath                tab.url = https://www.example.com/subpath
  https://www.example.com:443/subpath#fragment       tab.url = https://www.example.com/subpath#fragment
  https://www.example.com:443/sub/path/              tab.url = https://www.example.com/sub/path/
  https://www.example.com:443/sub/path/#fragment     tab.url = https://www.example.com/sub/path/#fragment
Testing pattern "https://www.example.com:8080/"
  https://www.example.com:8080                       tab.url = TIMEOUT
  https://www.example.com:8080#fragment              tab.url = TIMEOUT
  https://www.example.com:8080/                      tab.url = TIMEOUT
  https://www.example.com:8080/#fragment             tab.url = TIMEOUT
  https://www.example.com:8080/subpath               tab.url = TIMEOUT
  https://www.example.com:8080/subpath#fragment      tab.url = TIMEOUT
  https://www.example.com:8080/sub/path/             tab.url = TIMEOUT
  https://www.example.com:8080/sub/path/#fragment    tab.url = TIMEOUT
Testing pattern "https://example.net/*"
  https://example.net                                tab.url = https://example.net/
  https://example.net#fragment                       tab.url = https://example.net/#fragment
  https://example.net/                               tab.url = https://example.net/
  https://example.net/#fragment                      tab.url = https://example.net/#fragment
  https://example.net/subpath                        tab.url = https://example.net/subpath
  https://example.net/subpath#fragment               tab.url = https://example.net/subpath#fragment
  https://example.net/sub/path/                      tab.url = https://example.net/sub/path/
  https://example.net/sub/path/#fragment             tab.url = https://example.net/sub/path/#fragment
Testing pattern "https://example.net:80/*"
  https://example.net:80                             tab.url = https://example.net:80/
  https://example.net:80#fragment                    tab.url = https://example.net:80/#fragment
  https://example.net:80/                            tab.url = https://example.net:80/
  https://example.net:80/#fragment                   tab.url = https://example.net:80/#fragment
  https://example.net:80/subpath                     tab.url = https://example.net:80/subpath
  https://example.net:80/subpath#fragment            tab.url = https://example.net:80/subpath#fragment
  https://example.net:80/sub/path/                   tab.url = https://example.net:80/sub/path/
  https://example.net:80/sub/path/#fragment          tab.url = https://example.net:80/sub/path/#fragment
Testing pattern "https://example.net:443/*"
  https://example.net:443                            tab.url = https://example.net/
  https://example.net:443#fragment                   tab.url = https://example.net/#fragment
  https://example.net:443/                           tab.url = https://example.net/
  https://example.net:443/#fragment                  tab.url = https://example.net/#fragment
  https://example.net:443/subpath                    tab.url = https://example.net/subpath
  https://example.net:443/subpath#fragment           tab.url = https://example.net/subpath#fragment
  https://example.net:443/sub/path/                  tab.url = https://example.net/sub/path/
  https://example.net:443/sub/path/#fragment         tab.url = https://example.net/sub/path/#fragment
Testing pattern "https://example.net:8080/*"
  https://example.net:8080                           tab.url = TIMEOUT
  https://example.net:8080#fragment                  tab.url = TIMEOUT
  https://example.net:8080/                          tab.url = TIMEOUT
  https://example.net:8080/#fragment                 tab.url = TIMEOUT
  https://example.net:8080/subpath                   tab.url = TIMEOUT
  https://example.net:8080/subpath#fragment          tab.url = TIMEOUT
  https://example.net:8080/sub/path/                 tab.url = TIMEOUT
  https://example.net:8080/sub/path/#fragment        tab.url = TIMEOUT
Testing pattern "https://www.example.net/test"
  https://www.example.net                            tab.url = https://www.example.net/
  https://www.example.net#fragment                   tab.url = https://www.example.net/#fragment
  https://www.example.net/                           tab.url = https://www.example.net/
  https://www.example.net/#fragment                  tab.url = https://www.example.net/#fragment
  https://www.example.net/subpath                    tab.url = https://www.example.net/subpath
  https://www.example.net/subpath#fragment           tab.url = https://www.example.net/subpath#fragment
  https://www.example.net/sub/path/                  tab.url = https://www.example.net/sub/path/
  https://www.example.net/sub/path/#fragment         tab.url = https://www.example.net/sub/path/#fragment
Testing pattern "https://www.example.net:80/test"
  https://www.example.net:80                         tab.url = https://www.example.net:80/
  https://www.example.net:80#fragment                tab.url = https://www.example.net:80/#fragment
  https://www.example.net:80/                        tab.url = https://www.example.net:80/
  https://www.example.net:80/#fragment               tab.url = https://www.example.net:80/#fragment
  https://www.example.net:80/subpath                 tab.url = https://www.example.net:80/subpath
  https://www.example.net:80/subpath#fragment        tab.url = https://www.example.net:80/subpath#fragment
  https://www.example.net:80/sub/path/               tab.url = https://www.example.net:80/sub/path/
  https://www.example.net:80/sub/path/#fragment      tab.url = https://www.example.net:80/sub/path/#fragment
Testing pattern "https://www.example.net:443/test"
  https://www.example.net:443                        tab.url = https://www.example.net/
  https://www.example.net:443#fragment               tab.url = https://www.example.net/#fragment
  https://www.example.net:443/                       tab.url = https://www.example.net/
  https://www.example.net:443/#fragment              tab.url = https://www.example.net/#fragment
  https://www.example.net:443/subpath                tab.url = https://www.example.net/subpath
  https://www.example.net:443/subpath#fragment       tab.url = https://www.example.net/subpath#fragment
  https://www.example.net:443/sub/path/              tab.url = https://www.example.net/sub/path/
  https://www.example.net:443/sub/path/#fragment     tab.url = https://www.example.net/sub/path/#fragment
Testing pattern "https://www.example.net:8080/test"
  https://www.example.net:8080                       tab.url = TIMEOUT
  https://www.example.net:8080#fragment              tab.url = TIMEOUT
  https://www.example.net:8080/                      tab.url = TIMEOUT
  https://www.example.net:8080/#fragment             tab.url = TIMEOUT
  https://www.example.net:8080/subpath               tab.url = TIMEOUT
  https://www.example.net:8080/subpath#fragment      tab.url = TIMEOUT
  https://www.example.net:8080/sub/path/             tab.url = TIMEOUT
  https://www.example.net:8080/sub/path/#fragment    tab.url = TIMEOUT
Testing pattern "https://example.org//*"
  https://example.org                                tab.url = https://example.org/
  https://example.org#fragment                       tab.url = https://example.org/#fragment
  https://example.org/                               tab.url = https://example.org/
  https://example.org/#fragment                      tab.url = https://example.org/#fragment
  https://example.org/subpath                        tab.url = https://example.org/subpath
  https://example.org/subpath#fragment               tab.url = https://example.org/subpath#fragment
  https://example.org/sub/path/                      tab.url = https://example.org/sub/path/
  https://example.org/sub/path/#fragment             tab.url = https://example.org/sub/path/#fragment
Testing pattern "https://example.org:80//*"
  https://example.org:80                             tab.url = https://example.org:80/
  https://example.org:80#fragment                    tab.url = https://example.org:80/#fragment
  https://example.org:80/                            tab.url = https://example.org:80/
  https://example.org:80/#fragment                   tab.url = https://example.org:80/#fragment
  https://example.org:80/subpath                     tab.url = https://example.org:80/subpath
  https://example.org:80/subpath#fragment            tab.url = https://example.org:80/subpath#fragment
  https://example.org:80/sub/path/                   tab.url = https://example.org:80/sub/path/
  https://example.org:80/sub/path/#fragment          tab.url = https://example.org:80/sub/path/#fragment
Testing pattern "https://example.org:443//*"
  https://example.org:443                            tab.url = https://example.org/
  https://example.org:443#fragment                   tab.url = https://example.org/#fragment
  https://example.org:443/                           tab.url = https://example.org/
  https://example.org:443/#fragment                  tab.url = https://example.org/#fragment
  https://example.org:443/subpath                    tab.url = https://example.org/subpath
  https://example.org:443/subpath#fragment           tab.url = https://example.org/subpath#fragment
  https://example.org:443/sub/path/                  tab.url = https://example.org/sub/path/
  https://example.org:443/sub/path/#fragment         tab.url = https://example.org/sub/path/#fragment
Testing pattern "https://example.org:8080//*"
  https://example.org:8080                           tab.url = TIMEOUT
  https://example.org:8080#fragment                  tab.url = TIMEOUT
  https://example.org:8080/                          tab.url = TIMEOUT
  https://example.org:8080/#fragment                 tab.url = TIMEOUT
  https://example.org:8080/subpath                   tab.url = TIMEOUT
  https://example.org:8080/subpath#fragment          tab.url = TIMEOUT
  https://example.org:8080/sub/path/                 tab.url = TIMEOUT
  https://example.org:8080/sub/path/#fragment        tab.url = TIMEOUT
Testing pattern "https://www.example.org//test"
  https://www.example.org                            tab.url = https://www.example.org/
  https://www.example.org#fragment                   tab.url = https://www.example.org/#fragment
  https://www.example.org/                           tab.url = https://www.example.org/
  https://www.example.org/#fragment                  tab.url = https://www.example.org/#fragment
  https://www.example.org/subpath                    tab.url = https://www.example.org/subpath
  https://www.example.org/subpath#fragment           tab.url = https://www.example.org/subpath#fragment
  https://www.example.org/sub/path/                  tab.url = https://www.example.org/sub/path/
  https://www.example.org/sub/path/#fragment         tab.url = https://www.example.org/sub/path/#fragment
Testing pattern "https://www.example.org:80//test"
  https://www.example.org:80                         tab.url = https://www.example.org:80/
  https://www.example.org:80#fragment                tab.url = https://www.example.org:80/#fragment
  https://www.example.org:80/                        tab.url = https://www.example.org:80/
  https://www.example.org:80/#fragment               tab.url = https://www.example.org:80/#fragment
  https://www.example.org:80/subpath                 tab.url = https://www.example.org:80/subpath
  https://www.example.org:80/subpath#fragment        tab.url = https://www.example.org:80/subpath#fragment
  https://www.example.org:80/sub/path/               tab.url = https://www.example.org:80/sub/path/
  https://www.example.org:80/sub/path/#fragment      tab.url = https://www.example.org:80/sub/path/#fragment
Testing pattern "https://www.example.org:443//test"
  https://www.example.org:443                        tab.url = https://www.example.org/
  https://www.example.org:443#fragment               tab.url = https://www.example.org/#fragment
  https://www.example.org:443/                       tab.url = https://www.example.org/
  https://www.example.org:443/#fragment              tab.url = https://www.example.org/#fragment
  https://www.example.org:443/subpath                tab.url = https://www.example.org/subpath
  https://www.example.org:443/subpath#fragment       tab.url = https://www.example.org/subpath#fragment
  https://www.example.org:443/sub/path/              tab.url = https://www.example.org/sub/path/
  https://www.example.org:443/sub/path/#fragment     tab.url = https://www.example.org/sub/path/#fragment
Testing pattern "https://www.example.org:8080//test"
  https://www.example.org:8080                       tab.url = TIMEOUT
  https://www.example.org:8080#fragment              tab.url = TIMEOUT
  https://www.example.org:8080/                      tab.url = TIMEOUT
  https://www.example.org:8080/#fragment             tab.url = TIMEOUT
  https://www.example.org:8080/subpath               tab.url = TIMEOUT
  https://www.example.org:8080/subpath#fragment      tab.url = TIMEOUT
  https://www.example.org:8080/sub/path/             tab.url = TIMEOUT
  https://www.example.org:8080/sub/path/#fragment    tab.url = TIMEOUT
Testing pattern "https://example.edu/*#fragment"
  https://example.edu                                tab.url = https://example.edu/
  https://example.edu#fragment                       tab.url = https://example.edu/#fragment
  https://example.edu/                               tab.url = https://example.edu/
  https://example.edu/#fragment                      tab.url = https://example.edu/#fragment
  https://example.edu/subpath                        tab.url = https://example.edu/subpath
  https://example.edu/subpath#fragment               tab.url = https://example.edu/subpath#fragment
  https://example.edu/sub/path/                      tab.url = https://example.edu/sub/path/
  https://example.edu/sub/path/#fragment             tab.url = https://example.edu/sub/path/#fragment
Testing pattern "https://example.edu:80/*#fragment"
  https://example.edu:80                             tab.url = https://example.edu:80/
  https://example.edu:80#fragment                    tab.url = https://example.edu:80/#fragment
  https://example.edu:80/                            tab.url = https://example.edu:80/
  https://example.edu:80/#fragment                   tab.url = https://example.edu:80/#fragment
  https://example.edu:80/subpath                     tab.url = https://example.edu:80/subpath
  https://example.edu:80/subpath#fragment            tab.url = https://example.edu:80/subpath#fragment
  https://example.edu:80/sub/path/                   tab.url = https://example.edu:80/sub/path/
  https://example.edu:80/sub/path/#fragment          tab.url = https://example.edu:80/sub/path/#fragment
Testing pattern "https://example.edu:443/*#fragment"
  https://example.edu:443                            tab.url = https://example.edu/
  https://example.edu:443#fragment                   tab.url = https://example.edu/#fragment
  https://example.edu:443/                           tab.url = https://example.edu/
  https://example.edu:443/#fragment                  tab.url = https://example.edu/#fragment
  https://example.edu:443/subpath                    tab.url = https://example.edu/subpath
  https://example.edu:443/subpath#fragment           tab.url = https://example.edu/subpath#fragment
  https://example.edu:443/sub/path/                  tab.url = https://example.edu/sub/path/
  https://example.edu:443/sub/path/#fragment         tab.url = https://example.edu/sub/path/#fragment
Testing pattern "https://example.edu:8080/*#fragment"
  https://example.edu:8080                           tab.url = TIMEOUT
  https://example.edu:8080#fragment                  tab.url = TIMEOUT
  https://example.edu:8080/                          tab.url = TIMEOUT
  https://example.edu:8080/#fragment                 tab.url = TIMEOUT
  https://example.edu:8080/subpath                   tab.url = TIMEOUT
  https://example.edu:8080/subpath#fragment          tab.url = TIMEOUT
  https://example.edu:8080/sub/path/                 tab.url = TIMEOUT
  https://example.edu:8080/sub/path/#fragment        tab.url = TIMEOUT
Testing pattern "https://www.example.edu/test/*#fragment"
  https://www.example.edu                            tab.url = https://www.example.edu/
  https://www.example.edu#fragment                   tab.url = https://www.example.edu/#fragment
  https://www.example.edu/                           tab.url = https://www.example.edu/
  https://www.example.edu/#fragment                  tab.url = https://www.example.edu/#fragment
  https://www.example.edu/subpath                    tab.url = https://www.example.edu/subpath
  https://www.example.edu/subpath#fragment           tab.url = https://www.example.edu/subpath#fragment
  https://www.example.edu/sub/path/                  tab.url = https://www.example.edu/sub/path/
  https://www.example.edu/sub/path/#fragment         tab.url = https://www.example.edu/sub/path/#fragment
Testing pattern "https://www.example.edu:80/test/*#fragment"
  https://www.example.edu:80                         tab.url = https://www.example.edu:80/
  https://www.example.edu:80#fragment                tab.url = https://www.example.edu:80/#fragment
  https://www.example.edu:80/                        tab.url = https://www.example.edu:80/
  https://www.example.edu:80/#fragment               tab.url = https://www.example.edu:80/#fragment
  https://www.example.edu:80/subpath                 tab.url = https://www.example.edu:80/subpath
  https://www.example.edu:80/subpath#fragment        tab.url = https://www.example.edu:80/subpath#fragment
  https://www.example.edu:80/sub/path/               tab.url = https://www.example.edu:80/sub/path/
  https://www.example.edu:80/sub/path/#fragment      tab.url = https://www.example.edu:80/sub/path/#fragment
Testing pattern "https://www.example.edu:443/test/*#fragment"
  https://www.example.edu:443                        tab.url = https://www.example.edu/
  https://www.example.edu:443#fragment               tab.url = https://www.example.edu/#fragment
  https://www.example.edu:443/                       tab.url = https://www.example.edu/
  https://www.example.edu:443/#fragment              tab.url = https://www.example.edu/#fragment
  https://www.example.edu:443/subpath                tab.url = https://www.example.edu/subpath
  https://www.example.edu:443/subpath#fragment       tab.url = https://www.example.edu/subpath#fragment
  https://www.example.edu:443/sub/path/              tab.url = https://www.example.edu/sub/path/
  https://www.example.edu:443/sub/path/#fragment     tab.url = https://www.example.edu/sub/path/#fragment
Testing pattern "https://www.example.edu:8080/test/*#fragment"
  https://www.example.edu:8080                       tab.url = TIMEOUT
  https://www.example.edu:8080#fragment              tab.url = TIMEOUT
  https://www.example.edu:8080/                      tab.url = TIMEOUT
  https://www.example.edu:8080/#fragment             tab.url = TIMEOUT
  https://www.example.edu:8080/subpath               tab.url = TIMEOUT
  https://www.example.edu:8080/subpath#fragment      tab.url = TIMEOUT
  https://www.example.edu:8080/sub/path/             tab.url = TIMEOUT
  https://www.example.edu:8080/sub/path/#fragment    tab.url = TIMEOUT

Comparison of results

For each host permissions pattern (e.g. "https://www.example.org:80//test"), tests results appear in the following order:

  1. https://www.example.org:80
  2. https://www.example.org:80#fragment
  3. https://www.example.org:80/
  4. https://www.example.org:80/#fragment
  5. https://www.example.org:80/subpath
  6. https://www.example.org:80/subpath#fragment
  7. https://www.example.org:80/sub/path/
  8. https://www.example.org:80/sub/path/#fragment

Legend

icon meaning
Host access granted
Host acces NOT granted
⏱️ Page load timeout
host permission pattern Chrome Firefox Safari
"http://example.com" ❌❌❌❌❌❌❌❌ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"http://example.com:80" ❌❌❌❌❌❌❌❌ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"http://example.com:443" ❌❌❌❌❌❌❌❌ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"http://example.com:8080" ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️
"http://www.example.com/" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"http://www.example.com:80/" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"http://www.example.com:443/" ✅✅✅✅✅✅✅✅ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"http://www.example.com:8080/" ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️
"http://example.net/*" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"http://example.net:80/*" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"http://example.net:443/*" ✅✅✅✅✅✅✅✅ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"http://example.net:8080/*" ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️
"http://www.example.net/test" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"http://www.example.net:80/test" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"http://www.example.net:443/test" ✅✅✅✅✅✅✅✅ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"http://www.example.net:8080/test" ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️
"http://example.org//*" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"http://example.org:80//*" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"http://example.org:443//*" ✅✅✅✅✅✅✅✅ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"http://example.org:8080//*" ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️
"http://www.example.org//test" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"http://www.example.org:80//test" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"http://www.example.org:443//test" ✅✅✅✅✅✅✅✅ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"http://www.example.org:8080//test" ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️
"http://example.edu/*#fragment" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"http://example.edu:80/*#fragment" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"http://example.edu:443/*#fragment" ✅✅✅✅✅✅✅✅ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"http://example.edu:8080/*#fragment" ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️
"http://www.example.edu/test/*#fragment" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"http://www.example.edu:80/test/*#fragment" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"http://www.example.edu:443/test/*#fragment" ✅✅✅✅✅✅✅✅ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"http://www.example.edu:8080/test/*#fragment" ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️
"https://example.com" ❌❌❌❌❌❌❌❌ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"https://example.com:80" ❌❌❌❌❌❌❌❌ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"https://example.com:443" ❌❌❌❌❌❌❌❌ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"https://example.com:8080" ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️
"https://www.example.com/" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"https://www.example.com:80/" ✅✅✅✅✅✅✅✅ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"https://www.example.com:443/" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"https://www.example.com:8080/" ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️
"https://example.net/*" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"https://example.net:80/*" ✅✅✅✅✅✅✅✅ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"https://example.net:443/*" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"https://example.net:8080/*" ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️
"https://www.example.net/test" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"https://www.example.net:80/test" ✅✅✅✅✅✅✅✅ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"https://www.example.net:443/test" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"https://www.example.net:8080/test" ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️
"https://example.org//*" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"https://example.org:80//*" ✅✅✅✅✅✅✅✅ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"https://example.org:443//*" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"https://example.org:8080//*" ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️
"https://www.example.org//test" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"https://www.example.org:80//test" ✅✅✅✅✅✅✅✅ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"https://www.example.org:443//test" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"https://www.example.org:8080//test" ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️
"https://example.edu/*#fragment" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"https://example.edu:80/*#fragment" ✅✅✅✅✅✅✅✅ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"https://example.edu:443/*#fragment" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"https://example.edu:8080/*#fragment" ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️
"https://www.example.edu/test/*#fragment" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"https://www.example.edu:80/test/*#fragment" ✅✅✅✅✅✅✅✅ ❌❌❌❌❌❌❌❌ ✅✅✅✅✅✅✅✅
"https://www.example.edu:443/test/*#fragment" ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅ ✅✅✅✅✅✅✅✅
"https://www.example.edu:8080/test/*#fragment" ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️ ⏱️⏱️⏱️⏱️⏱️⏱️⏱️⏱️
/** A colleciton of mostly scratch code used for various stages of data transofrmation */
/** Merge arrays of arrays by combining the values */
const zip = (...arrs) => {
const max = arrs.reduce(
(acc, arr) => arr.length > acc[0] ? [arr.length, arr] : acc,
[ 0, [] ]
);
const out = [];
for (let i = 0; i < max[0]; i++) {
console.log(i, arrs, max[0]);
const row = [];
for (let j = 0; j < arrs.length; j++) {
console.log(i, j, Reflect.has(arrs[j], i), arrs.length)
if (Reflect.has(arrs[j], i)) {
row.push(arrs[j][i]);
}
}
out.push(row);
}
return out;
}
// for the test results string from each browser...
const testsPerPattern = 8;
const testOutput = browserTestResults.substring(browserTestResults.indexOf("Testing pattern"));
function extractTestData(data) {
const out = [];
const row = [];
linesPerRow = testsPerPattern + 1;
for (let i = 0; i < data.length; i++) {
if (i % linesPerRow === 0) {
row.length = 0;
}
const line = data[i];
if (line.startsWith("Testing pattern")) {
continue;
}
const result = line.split("tab.url = ")[1];
// console.log(result);
switch (result) {
case "TIMEOUT":
row.push("⏱️");
break;
case "undefined":
row.push("❌");
break;
default:
row.push("✅");
}
if ((i + 1) % linesPerRow === 0) {
out.push(row.slice())
}
}
return out;
}
const sep = " | ";
const combined = zips(chromeResults, firefoxResults, safariResults);
const data = combined.map((row) =>
sep + row.map(results => results.join("")).join(sep) + sep
).join("\n")
globalThis.browser ??= globalThis.chrome;
const wait = (time) => new Promise(resolve => setTimeout(resolve, time));
let testCallback = () => {};
const testOutput = [];
const extractHostExp = /https?:\/\/(?:www\.)?example.(?:com|edu|org|net)(?::?\d{2,4})?/g;
browser.tabs.onUpdated.addListener((tabId, change, tab) => {
console.debug(tabId, change, tab.url);
if (change.status == "complete") {
if (typeof testCallback === "function") {
testCallback(tab);
}
}
});
async function test(url) {
const deferred = Promise.withResolvers();
testCallback = (tab) => {
const start = `${url}`.padEnd(50, " ");
logTest(` ${start} tab.url = ${tab.url}`);
testCallback = null;
deferred.resolve();
};
// console.debug(`browser.tabs.create({ url: ${url} })`);
const tab = await browser.tabs.create({ url, active: false });
await wait(500); // Give the page a moment to load
if (typeof testCallback === "function") {
testCallback({ url: "TIMEOUT" });
testCallback = null;
}
await browser.tabs.remove(tab.id);
return deferred.promise;
}
async function setup({silent = false} = {}) {
testOutput.length = 0;
const manifestUrl = browser.runtime.getURL("manifest.json");
const requestedPatterns = (await (await fetch(manifestUrl)).json()).host_permissions;
if (!silent) logTest(`manifest patterns (${requestedPatterns.length}): ${JSON.stringify(requestedPatterns)}`);
const grantedOrigins = (await browser.permissions.getAll()).origins;
if (!silent) logTest(`granted patterns (${grantedOrigins.length}): ${JSON.stringify(grantedOrigins)}`);
const patternOrigins = [];
// Each entry in `patternOrigins` has the same index offset as the original
// pattern in `requestedPatterns`. We need this to group each output block
// with it's associated pattern when running tests.
for (let i = 0; i < requestedPatterns.length; i++) {
const pattern = requestedPatterns[i];
extractHostExp.lastIndex = 0;
const result = extractHostExp.exec(pattern);
patternOrigins[i] = result[0];
}
if (!silent) logTest(`pattern origins (${patternOrigins.length}): ${JSON.stringify(patternOrigins)}`);
const pathVariants = [
"", // plain
"/", // terminal slash
"/subpath", // sub path
"/sub/path/", // sub path with terminal slash
];
const fragmentVariants = [
"", // plain
"#fragment", // contains a fragment
];
const portVariants = [
"", // plain
":80", // default HTTP port
":443", // default HTTPS port
":8080", // invalid port
];
const protocolVariants = [
"http:",
"https:"
]
return {
manifestUrl,
requestedPatterns,
protocolVariants,
patternOrigins,
portVariants,
pathVariants,
fragmentVariants,
};
}
const runTests = async () => {
const {
requestedPatterns,
patternOrigins,
pathVariants,
fragmentVariants,
} = await setup();
logTest(` Request URL Observed URL (indicates pattern match)`);
for (let i = 0; i < patternOrigins.length; i++) {
const origin = patternOrigins[i];
const pattern = requestedPatterns[i];
logTest(`Testing pattern "${pattern}"`);
for (const path of pathVariants) {
for (const fragment of fragmentVariants) {
const testUrl = `${origin}${path}${fragment}`;
await test(testUrl);
// logTest(" "+testUrl);
}
}
}
console.log("To copy this output, run the following command in the console:");
console.log(' copy(testOutput.join("\\n"))');
};
// eslint-disable-next-line no-unused-vars
async function testHttpUpgrades() {
const {
patternOrigins,
} = await setup({silent: true});
const tabIds = [];
for (const origin of patternOrigins) {
const url = new URL(origin);
// Only HTTP can upgrade, ignore origins with ports (URL instances elide some ports)
if (url.protocol === "https:" || origin.lastIndexOf(":") > 6) { continue; }
const tab = await browser.tabs.create({url: origin, active: false});
console.log(origin);
tabIds.push(tab.id);
}
// Wait a moment for page loads to finish
setTimeout(async () => {
const tabs = await browser.tabs.query({});
if (tabs.findIndex(tab => { return (tab.url || tab.pendingUrl)?.startsWith("https:"); }) !== -1) {
console.log("Your browser auto-upgraded one or more HTTP requests to HTTPS!");
} else {
for (const id of tabIds) {
browser.tabs.remove(id);
}
console.log("HTTP URLs loaded as expected. To run tests, run the following command in the console:");
console.log(" runTests()")
}
}, 500);
}
// Utility that makes it a bit easier to log to the console and collect test
// output in `testOutput`.
function logTest(line) {
console.log(line);
testOutput.push(line);
}
// eslint-disable-next-line no-unused-vars
function logClear() {
console.clear();
testOutput.length = 0;
}
browser.action.onClicked.addListener(runTests);
{
"name": "_host perms with ports_",
"version": "1.0",
"manifest_version": 3,
"host_permissions": [
"http://example.com",
"http://example.com:80",
"http://example.com:443",
"http://example.com:8080",
"http://www.example.com/",
"http://www.example.com:80/",
"http://www.example.com:443/",
"http://www.example.com:8080/",
"http://example.net/*",
"http://example.net:80/*",
"http://example.net:443/*",
"http://example.net:8080/*",
"http://www.example.net/test",
"http://www.example.net:80/test",
"http://www.example.net:443/test",
"http://www.example.net:8080/test",
"http://example.org//*",
"http://example.org:80//*",
"http://example.org:443//*",
"http://example.org:8080//*",
"http://www.example.org//test",
"http://www.example.org:80//test",
"http://www.example.org:443//test",
"http://www.example.org:8080//test",
"http://example.edu/*#fragment",
"http://example.edu:80/*#fragment",
"http://example.edu:443/*#fragment",
"http://example.edu:8080/*#fragment",
"http://www.example.edu/test/*#fragment",
"http://www.example.edu:80/test/*#fragment",
"http://www.example.edu:443/test/*#fragment",
"http://www.example.edu:8080/test/*#fragment",
"https://example.com",
"https://example.com:80",
"https://example.com:443",
"https://example.com:8080",
"https://www.example.com/",
"https://www.example.com:80/",
"https://www.example.com:443/",
"https://www.example.com:8080/",
"https://example.net/*",
"https://example.net:80/*",
"https://example.net:443/*",
"https://example.net:8080/*",
"https://www.example.net/test",
"https://www.example.net:80/test",
"https://www.example.net:443/test",
"https://www.example.net:8080/test",
"https://example.org//*",
"https://example.org:80//*",
"https://example.org:443//*",
"https://example.org:8080//*",
"https://www.example.org//test",
"https://www.example.org:80//test",
"https://www.example.org:443//test",
"https://www.example.org:8080//test",
"https://example.edu/*#fragment",
"https://example.edu:80/*#fragment",
"https://example.edu:443/*#fragment",
"https://example.edu:8080/*#fragment",
"https://www.example.edu/test/*#fragment",
"https://www.example.edu:80/test/*#fragment",
"https://www.example.edu:443/test/*#fragment",
"https://www.example.edu:8080/test/*#fragment"
],
"permissions": [],
"background": {
"service_worker": "background.js",
"scripts": ["background.js"]
},
"action": {}
}
@dotproto
Copy link
Author

Another host permission test case: *://example.???:80/* and *://example.???:443/*

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment