Prepare code for more shell-based "browsers"

We want to support jsc and spidermonkey shells as well for easy
jetstream profiling / running. Thus we need to refactor the code a bit
to share common helpers between the various shell-based "browsers"

- Move browser/d8 to browser/shell

Bypass-Check-License: Moving files
Change-Id: I46b2843f505a0c2d2528bd0465fe57b4374303f6
Reviewed-on: https://chromium-review.googlesource.com/c/crossbench/+/7802740
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Reviewed-by: Patrick Thier <pthier@chromium.org>
diff --git a/crossbench/browsers/all.py b/crossbench/browsers/all.py
index 3f4b1c9..5dc0042 100644
--- a/crossbench/browsers/all.py
+++ b/crossbench/browsers/all.py
@@ -16,7 +16,6 @@
     ChromiumWebDriverChromeOsSsh, ChromiumWebDriverSsh, \
     LocalChromiumWebDriverAndroid
 from crossbench.browsers.chromium_based.chromium_based import ChromiumBased
-from crossbench.browsers.d8.d8 import D8
 from crossbench.browsers.edge.edge import Edge
 from crossbench.browsers.edge.webdriver import EdgeWebDriver
 from crossbench.browsers.firefox.firefox import Firefox
@@ -25,6 +24,7 @@
 from crossbench.browsers.safari.safari import Safari
 from crossbench.browsers.safari.webdriver import SafariWebDriver, \
     SafariWebdriverIOS
+from crossbench.browsers.shell.d8.d8 import D8
 from crossbench.browsers.webkit.webdriver import WebKitWebDriver
 from crossbench.browsers.webview.browser import WebviewBrowser
 from crossbench.browsers.webview.embedder import WebviewEmbedder
diff --git a/crossbench/browsers/shell/__init__.py b/crossbench/browsers/shell/__init__.py
new file mode 100644
index 0000000..5b5036e
--- /dev/null
+++ b/crossbench/browsers/shell/__init__.py
@@ -0,0 +1,3 @@
+# Copyright 2026 The Chromium Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
diff --git a/crossbench/browsers/d8/__init__.py b/crossbench/browsers/shell/d8/__init__.py
similarity index 100%
rename from crossbench/browsers/d8/__init__.py
rename to crossbench/browsers/shell/d8/__init__.py
diff --git a/crossbench/browsers/d8/d8.py b/crossbench/browsers/shell/d8/d8.py
similarity index 96%
rename from crossbench/browsers/d8/d8.py
rename to crossbench/browsers/shell/d8/d8.py
index f131917..f7aa452 100644
--- a/crossbench/browsers/d8/d8.py
+++ b/crossbench/browsers/shell/d8/d8.py
@@ -14,9 +14,9 @@
 from crossbench import exception
 from crossbench.browsers.attributes import BrowserAttributes
 from crossbench.browsers.browser import Browser
-from crossbench.browsers.d8.shell import D8Shell
-from crossbench.browsers.d8.url_mapper import D8URLMapper, DummyURLMapper
-from crossbench.browsers.d8.version import D8Version
+from crossbench.browsers.shell.d8.shell import D8Shell
+from crossbench.browsers.shell.d8.version import D8Version
+from crossbench.browsers.shell.url_mapper import D8URLMapper, DummyURLMapper
 from crossbench.browsers.viewport import Viewport
 from crossbench.flags.chrome import ChromeFlags
 from crossbench.network.local_file_server import LocalFileNetwork
diff --git a/crossbench/browsers/d8/shell.py b/crossbench/browsers/shell/d8/shell.py
similarity index 100%
rename from crossbench/browsers/d8/shell.py
rename to crossbench/browsers/shell/d8/shell.py
diff --git a/crossbench/browsers/d8/version.py b/crossbench/browsers/shell/d8/version.py
similarity index 100%
rename from crossbench/browsers/d8/version.py
rename to crossbench/browsers/shell/d8/version.py
diff --git a/crossbench/browsers/d8/mock/jetstream.js b/crossbench/browsers/shell/mock/jetstream.js
similarity index 100%
rename from crossbench/browsers/d8/mock/jetstream.js
rename to crossbench/browsers/shell/mock/jetstream.js
diff --git a/crossbench/browsers/d8/url_mapper.py b/crossbench/browsers/shell/url_mapper.py
similarity index 97%
rename from crossbench/browsers/d8/url_mapper.py
rename to crossbench/browsers/shell/url_mapper.py
index c6d9dd2..0a57ff0 100644
--- a/crossbench/browsers/d8/url_mapper.py
+++ b/crossbench/browsers/shell/url_mapper.py
@@ -11,7 +11,7 @@
 from crossbench.network.local_file_server import LocalFileNetwork
 
 if TYPE_CHECKING:
-  from crossbench.browsers.d8.d8 import D8
+  from crossbench.browsers.shell.d8.d8 import D8
   from crossbench.network.base import Network
   from crossbench.runner.groups.session import BrowserSessionRunGroup
 
diff --git a/tests/crossbench/browsers/test_version.py b/tests/crossbench/browsers/test_version.py
index 1098d32..6794067 100644
--- a/tests/crossbench/browsers/test_version.py
+++ b/tests/crossbench/browsers/test_version.py
@@ -13,9 +13,9 @@
 from crossbench.browsers.chrome.version import ChromeVersion
 from crossbench.browsers.chromium.version import ChromeDriverVersion, \
     ChromiumVersion
-from crossbench.browsers.d8.version import D8Version
 from crossbench.browsers.firefox.version import FirefoxVersion
 from crossbench.browsers.safari.version import SafariVersion
+from crossbench.browsers.shell.d8.version import D8Version
 from crossbench.browsers.version import BrowserVersion, \
     BrowserVersionChannel, PartialBrowserVersionError, UnknownBrowserVersion
 from crossbench.helper.version import VersionParseError