Skip to content

Commit

Permalink
[WPE] run-minibrowser: don't set a platform when COG_PLATFORM_NAME is…
Browse files Browse the repository at this point in the history
… on the env

https://bugs.webkit.org/show_bug.cgi?id=256043

Reviewed by Philippe Normand.

Cog now can receive the platform plugin name via the environment variable COG_PLATFORM_NAME
This updates the version we checkout of Cog so it includes the above fix

The run-minibrowser script for WPE now checks for this environment variable before
passing any --platform parameters to Cog. Some extra tests are added also.

Also use logging module to log the errors on port/wpe.py to avoid having this errors getting
printed when running the python unit tests.

* Tools/PlatformWPE.cmake:
* Tools/Scripts/webkitpy/port/wpe.py:
(WPEPort.browser_name):
(WPEPort.run_minibrowser):
* Tools/Scripts/webkitpy/port/wpe_unittest.py:
(WPEPortTest._mock_port_cog_is_built):
(WPEPortTest.test_browser_name_default_wihout_cog_built):
(WPEPortTest.test_browser_name_default_with_cog_built):
(WPEPortTest.test_browser_name_override_minibrowser_with_cog_built):
(WPEPortTest.test_browser_name_override_unknown_without_cog_built):
(WPEPortTest):
(WPEPortTest.test_browser_name_override_unknown_with_cog_built):
(WPEPortTest.test_browser_cog_parameters_platform_default):
(WPEPortTest.test_browser_cog_parameters_platform_override_via_cmdline):
(WPEPortTest.test_browser_cog_parameters_platform_override_via_environ):
(WPEPortTest.test_browser_name_default): Deleted.
(WPEPortTest.test_browser_name_with_cog_built): Deleted.
(WPEPortTest.test_browser_name_override_unknown): Deleted.

Canonical link: https://commits.webkit.org/263463@main
  • Loading branch information
clopez committed Apr 27, 2023
1 parent f02f383 commit f081085
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 18 deletions.
2 changes: 1 addition & 1 deletion Tools/PlatformWPE.cmake
Expand Up @@ -30,7 +30,7 @@ if (ENABLE_COG)
set(WPE_COG_REPO "https://github.com/Igalia/cog.git")
endif ()
if ("${WPE_COG_TAG}" STREQUAL "")
set(WPE_COG_TAG "48347f3a36e6dba75bcfd4f9443730861adec5b0")
set(WPE_COG_TAG "49c2de4c82fe95571b95df48ec2a9319561d15b0")
endif ()
# TODO Use GIT_REMOTE_UPDATE_STRATEGY with 3.18 to allow switching between
# conflicting branches without having to delete the repo
Expand Down
10 changes: 6 additions & 4 deletions Tools/Scripts/webkitpy/port/wpe.py
Expand Up @@ -27,6 +27,7 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

import logging
import os
import shlex

Expand All @@ -38,6 +39,7 @@

from webkitcorepy import decorators

_log = logging.getLogger(__name__)

class WPEPort(GLibPort):
port_name = "wpe"
Expand Down Expand Up @@ -117,7 +119,7 @@ def browser_name(self):
return browser

if browser:
print("Unknown browser {}. Defaulting to Cog and MiniBrowser selection".format(browser))
_log.warning("Unknown browser {}. Defaulting to Cog and MiniBrowser selection".format(browser))

if self._filesystem.isfile(self.cog_path_to('launcher', 'cog')):
return "cog"
Expand All @@ -138,19 +140,19 @@ def run_minibrowser(self, args):
if self.browser_name() == "cog":
miniBrowser = self.cog_path_to('launcher', 'cog')
if not self._filesystem.isfile(miniBrowser):
print("Cog not found 😢. If you wish to enable it, rebuild with `-DENABLE_COG=ON`. Falling back to good old MiniBrowser")
_log.warning("Cog not found 😢. If you wish to enable it, rebuild with `-DENABLE_COG=ON`. Falling back to good old MiniBrowser")
miniBrowser = None
else:
print("Using Cog as MiniBrowser")
has_platform_arg = any((a == "-P" or a.startswith("--platform=") for a in args))
has_platform_arg = any((a == "-P" or a.startswith("--platform=") for a in args)) or "COG_PLATFORM_NAME" in os.environ
if not has_platform_arg:
args.insert(0, "--platform=gtk4")

if not miniBrowser:
print("Using default MiniBrowser")
miniBrowser = self._build_path('bin', 'MiniBrowser')
if not self._filesystem.isfile(miniBrowser):
print("%s not found... Did you run build-webkit?" % miniBrowser)
_log.warning("%s not found... Did you run build-webkit?" % miniBrowser)
return 1
command = [miniBrowser]
if os.environ.get("WEBKIT_MINI_BROWSER_PREFIX"):
Expand Down
75 changes: 62 additions & 13 deletions Tools/Scripts/webkitpy/port/wpe_unittest.py
Expand Up @@ -38,12 +38,18 @@
from webkitpy.port import port_testcase
from webkitpy.thirdparty.mock import Mock, patch
from webkitpy.tool.mocktool import MockOptions

from webkitcorepy import OutputCapture
import logging

class WPEPortTest(port_testcase.PortTestCase):
port_name = 'wpe'
port_maker = WPEPort

def _mock_port_cog_is_built(self, port):
port._filesystem = MockFileSystem({
'/mock-build/Tools/cog-prefix/src/cog-build/launcher/cog': '',
})

def test_default_baseline_search_path(self):
port = self.make_port()
self.assertEqual(port.default_baseline_search_path(),
Expand Down Expand Up @@ -78,32 +84,75 @@ def test_default_upload_configuration(self):
self.assertEqual(configuration['platform'], 'WPE')
self.assertEqual(configuration['style'], 'release')

def test_browser_name_default(self):
def test_browser_name_default_wihout_cog_built(self):
port = self.make_port()
self.assertEqual(port.browser_name(), "minibrowser")

def test_browser_name_with_cog_built(self):
with patch('os.environ', {'WPE_BROWSER': ''}):
port = self.make_port()
port._filesystem = MockFileSystem({
"/mock-build/Tools/cog-prefix/src/cog-build/launcher/cog": "",
})
self.assertEqual(port.browser_name(), "cog")
def test_browser_name_default_with_cog_built(self):
port = self.make_port()
self._mock_port_cog_is_built(port)
self.assertEqual(port.browser_name(), "cog")

def test_browser_name_override_minibrowser_with_cog_built(self):
with patch('os.environ', {'WPE_BROWSER': 'MiniBrowser'}):
port = self.make_port()
port._filesystem = MockFileSystem({
"/mock-build/Tools/cog-prefix/src/cog-build/cog": "",
})
self._mock_port_cog_is_built(port)
self.assertEqual(port.browser_name(), "minibrowser")

def test_browser_name_override_cog_without_cog_built(self):
with patch('os.environ', {'WPE_BROWSER': 'Cog'}):
port = self.make_port()
self.assertEqual(port.browser_name(), "cog")

def test_browser_name_override_unknown(self):
def test_browser_name_override_unknown_without_cog_built(self):
with patch('os.environ', {'WPE_BROWSER': 'Mosaic'}):
port = self.make_port()
self.assertEqual(port.browser_name(), "minibrowser")

def test_browser_name_override_unknown_with_cog_built(self):
with patch('os.environ', {'WPE_BROWSER': 'Mosaic'}):
port = self.make_port()
self._mock_port_cog_is_built(port)
self.assertEqual(port.browser_name(), "cog")

def test_browser_cog_parameters_platform_default(self):
with patch('os.environ', {'WPE_BROWSER': 'cog'}):
port = self.make_port()
port._executive = MockExecutive(should_log=True)
self._mock_port_cog_is_built(port)
self.assertEqual(port.browser_name(), "cog")
with OutputCapture(level=logging.DEBUG) as captured:
url = 'https://url.com'
port.run_minibrowser([url])
mock_command = captured.root.log.getvalue()
self.assertTrue(url in mock_command)
self.assertTrue('--platform=gtk4' in mock_command)

def test_browser_cog_parameters_platform_override_via_cmdline(self):
with patch('os.environ', {'WPE_BROWSER': 'cog'}):
port = self.make_port()
port._executive = MockExecutive(should_log=True)
self._mock_port_cog_is_built(port)
self.assertEqual(port.browser_name(), "cog")
with OutputCapture(level=logging.DEBUG) as captured:
url = 'https://url.com'
port.run_minibrowser(['-P', 'drm', url])
mock_command = captured.root.log.getvalue()
self.assertTrue(url in mock_command)
self.assertFalse('--platform' in mock_command)
self.assertTrue('-P' in mock_command)
self.assertTrue('drm' in mock_command)

def test_browser_cog_parameters_platform_override_via_environ(self):
with patch('os.environ', {'WPE_BROWSER': 'cog', 'COG_PLATFORM_NAME': 'drm'}):
port = self.make_port()
port._executive = MockExecutive(should_log=True)
self._mock_port_cog_is_built(port)
self.assertEqual(port.browser_name(), "cog")
with OutputCapture(level=logging.DEBUG) as captured:
url = 'https://url.com'
port.run_minibrowser([url])
mock_command = captured.root.log.getvalue()
self.assertTrue(url in mock_command)
self.assertFalse('--platform' in mock_command)
self.assertFalse('-P' in mock_command)

0 comments on commit f081085

Please sign in to comment.