diff options
author | glasseyes <dglassey@gmail.com> | 2018-11-27 22:16:35 +0700 |
---|---|---|
committer | glasseyes <dglassey@gmail.com> | 2018-11-27 22:16:35 +0700 |
commit | fdedb829a25f37ab1936c98841ccb7f106249310 (patch) | |
tree | f93040ad1bdaadc32d939b0c2a6f2ee4ddd15309 | |
parent | 5f978b9422b4516f7bbe89341746443624891e9e (diff) |
patch to move to WebKit2
-rw-r--r-- | debian/changelog | 7 | ||||
-rw-r--r-- | debian/control | 2 | ||||
-rw-r--r-- | debian/patches/0001-migrate-from-webkit-to-webkit2.patch | 230 | ||||
-rw-r--r-- | debian/patches/series | 1 |
4 files changed, 236 insertions, 4 deletions
diff --git a/debian/changelog b/debian/changelog index 61c0804..87a812c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,7 +1,8 @@ -keyman-config (10.99.33-1) UNRELEASED; urgency=low +keyman-config (10.99.33-1) unstable; urgency=low * source package automatically created by stdeb 0.8.5 * and updated - * Initial upload to Debian, Closes: # + * Initial upload to Debian, Closes: #914781 + * d/patches patch from upstream git to move to WebKit2 - -- Daniel Glassey <wdg@debian.org> Thu, 30 Aug 2018 14:27:49 +0700 + -- Daniel Glassey <wdg@debian.org> Tue, 27 Nov 2018 15:56:13 +0700 diff --git a/debian/control b/debian/control index 8da90a3..b82ee24 100644 --- a/debian/control +++ b/debian/control @@ -8,7 +8,7 @@ Homepage: http://www.keyman.com/ Package: python3-keyman-config Architecture: all -Depends: ${misc:Depends}, ${python3:Depends}, python3-gi, gir1.2-webkit-3.0, +Depends: ${misc:Depends}, ${python3:Depends}, python3-gi, gir1.2-webkit2-4.0, kmflcomp (>=10.99.1), dconf-cli, ibus-kmfl (>=10.99.1), python3-bs4 Description: Keyman for Linux configuration Python module to install, uninstall and view information about Keyman keyboard diff --git a/debian/patches/0001-migrate-from-webkit-to-webkit2.patch b/debian/patches/0001-migrate-from-webkit-to-webkit2.patch new file mode 100644 index 0000000..10cb34c --- /dev/null +++ b/debian/patches/0001-migrate-from-webkit-to-webkit2.patch @@ -0,0 +1,230 @@ +From 2e936c2a5a04c0203d59dae1ec94b0037cf82b8e Mon Sep 17 00:00:00 2001 +From: Daniel Glassey <dglassey@gmail.com> +Date: Tue, 27 Nov 2018 13:09:37 +0700 +Subject: [PATCH] migrate from webkit to webkit2 + +--- + keyman_config/downloadkeyboard.py | 49 +++++++++++-------- + keyman_config/install_window.py | 38 ++++++++------ + keyman_config/keyboard_details.py | 3 +- + keyman_config/welcome.py | 28 ++++++----- + 5 files changed, 71 insertions(+), 49 deletions(-) + +diff --git a/linux/keyman-config/keyman_config/downloadkeyboard.py b/linux/keyman-config/keyman_config/downloadkeyboard.py +index 47de49ac7..c858ad710 100755 +--- a/keyman_config/downloadkeyboard.py ++++ b/keyman_config/downloadkeyboard.py +@@ -8,11 +8,10 @@ import subprocess + import webbrowser + import gi + gi.require_version('Gtk', '3.0') +-gi.require_version('WebKit', '3.0') +-from gi.repository import Gtk, WebKit ++gi.require_version('WebKit2', '4.0') ++from gi.repository import Gtk, WebKit2 + from keyman_config.get_kmp import get_download_folder, download_kmp_file + from keyman_config.install_window import InstallKmpWindow +-from keyman_config.check_mime_type import check_mime_type + from keyman_config.accelerators import bind_accelerator, init_accel + + class DownloadKmpWindow(Gtk.Window): +@@ -29,12 +28,12 @@ class DownloadKmpWindow(Gtk.Window): + s = Gtk.ScrolledWindow() + # TODO update (or remove) user_agent once website supports Linux kmp packages + user_agent = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36" +- webview = WebKit.WebView() +- settings = WebKit.WebSettings() +- settings.set_property('user-agent', user_agent) ++ #user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36" ++ webview = WebKit2.WebView() ++ settings = WebKit2.Settings() ++ settings.set_user_agent(user_agent) + webview.set_settings(settings) +- webview.connect("navigation-policy-decision-requested", self.check) +- webview.connect("mime-type-policy-decision-requested", check_mime_type) ++ webview.connect("decide-policy", self.keyman_policy) + # TODO update website URI once website supports Linux kmp packages + webview.load_uri("https://keyman.com/keyboards?embed=macos&version=10") + s.add(webview) +@@ -61,20 +60,28 @@ class DownloadKmpWindow(Gtk.Window): + return True + return False + +- def check(self, view, frame, req, nav, policy): +- uri = req.get_uri() +- parsed = urllib.parse.urlparse(uri) +- if parsed.scheme == "keyman": +- if parsed.path == "download": +- qs = urllib.parse.parse_qs(parsed.query) +- downloadfile = os.path.join(get_download_folder(), qs['filename'][0]) +- if self.process_kmp(qs['url'][0], downloadfile): +- policy.ignore() ++ def keyman_policy(self, web_view, decision, decision_type): ++ logging.info("Checking policy") ++ logging.debug("received policy decision request of type: {0}".format(decision_type.value_name)) ++ if decision_type == WebKit2.PolicyDecisionType.NAVIGATION_ACTION: ++ nav_action = decision.get_navigation_action() ++ request = nav_action.get_request() ++ uri = request.get_uri() ++ logging.debug("nav request is for uri %s", uri) ++ parsed = urllib.parse.urlparse(uri) ++ if parsed.scheme == "keyman": ++ logging.debug("using keyman scheme") ++ if parsed.path == "download": ++ qs = urllib.parse.parse_qs(parsed.query) ++ downloadfile = os.path.join(get_download_folder(), qs['filename'][0]) ++ if self.process_kmp(qs['url'][0], downloadfile): ++ decision.ignore() ++ return True ++ elif parsed.path == "link": ++ qs = urllib.parse.parse_qs(parsed.query) ++ webbrowser.open(qs['url'][0]) ++ decision.ignore() + return True +- elif parsed.path == "link": +- qs = urllib.parse.parse_qs(parsed.query) +- webbrowser.open(qs['url'][0]) +- return True + return False + + def on_close_clicked(self, button): +diff --git a/linux/keyman-config/keyman_config/install_window.py b/linux/keyman-config/keyman_config/install_window.py +index c8958e810..b06504486 100755 +--- a/keyman_config/install_window.py ++++ b/keyman_config/install_window.py +@@ -11,8 +11,8 @@ import webbrowser + import tempfile + import gi + gi.require_version('Gtk', '3.0') +-gi.require_version('WebKit', '3.0') +-from gi.repository import Gtk, WebKit ++gi.require_version('WebKit2', '4.0') ++from gi.repository import Gtk, WebKit2 + from distutils.version import StrictVersion + from keyman_config.install_kmp import install_kmp, extract_kmp, get_metadata, InstallError, InstallStatus + from keyman_config.list_installed_kmp import get_kmp_version +@@ -209,19 +209,22 @@ class InstallKmpWindow(Gtk.Window): + grid.attach_next_to(label, label6, Gtk.PositionType.RIGHT, 1, 1) + + self.page2 = Gtk.Box() +- s = Gtk.ScrolledWindow() +- webview = WebKit.WebView() +- webview.connect("navigation-policy-decision-requested", self.check) +- webview.connect("mime-type-policy-decision-requested", check_mime_type) ++ webview = WebKit2.WebView() ++ webview.connect("decide-policy", self.doc_policy) + + if options and "readmeFile" in options: + self.readme = options['readmeFile'] + else: + self.readme = "noreadme" + readme_file = os.path.join(tmpdirname, self.readme) ++ + if os.path.isfile(readme_file): +- readme_uri = pathlib.Path(readme_file).as_uri() +- webview.load_uri(readme_uri) ++ with open(readme_file, "r") as read_file: ++ readme_data = read_file.read() ++ readme_uri = pathlib.Path(readme_file).as_uri() ++ logging.debug(readme_data) ++ webview.load_html(readme_data, readme_uri) ++ s = Gtk.ScrolledWindow() + s.add(webview) + self.page2.pack_start(s, True, True, 0) + +@@ -253,12 +256,19 @@ class InstallKmpWindow(Gtk.Window): + self.add(vbox) + self.resize(635, 270) + +- def check(self, view, frame, req, nav, policy): +- uri = req.get_uri() +- if not self.readme in uri: +- webbrowser.open(uri) +- policy.ignore() +- return True ++ def doc_policy(self, web_view, decision, decision_type): ++ logging.info("Checking policy") ++ logging.debug("received policy decision request of type: {0}".format(decision_type.value_name)) ++ if decision_type == WebKit2.PolicyDecisionType.NAVIGATION_ACTION: ++ nav_action = decision.get_navigation_action() ++ request = nav_action.get_request() ++ uri = request.get_uri() ++ logging.debug("nav request is for uri %s", uri) ++ if not self.readme in uri: ++ logging.debug("opening uri %s in webbrowser") ++ webbrowser.open(uri) ++ decision.ignore() ++ return True + return False + + def on_install_clicked(self, button): +diff --git a/linux/keyman-config/keyman_config/keyboard_details.py b/linux/keyman-config/keyman_config/keyboard_details.py +index 876f372c5..ff4669fc6 100644 +--- a/keyman_config/keyboard_details.py ++++ b/keyman_config/keyboard_details.py +@@ -5,8 +5,7 @@ + import gi + import os.path + gi.require_version('Gtk', '3.0') +-gi.require_version('WebKit', '3.0') +-from gi.repository import Gtk, WebKit ++from gi.repository import Gtk + + # basics: keyboard name, package version, description + # other things: filename (of kmx), , +diff --git a/linux/keyman-config/keyman_config/welcome.py b/linux/keyman-config/keyman_config/welcome.py +index 18e41584e..2243a5e60 100644 +--- a/keyman_config/welcome.py ++++ b/keyman_config/welcome.py +@@ -8,8 +8,8 @@ import urllib.parse + + import webbrowser + gi.require_version('Gtk', '3.0') +-gi.require_version('WebKit', '3.0') +-from gi.repository import Gtk, WebKit ++gi.require_version('WebKit2', '4.0') ++from gi.repository import Gtk, WebKit2 + from keyman_config.check_mime_type import check_mime_type + from keyman_config.accelerators import bind_accelerator, init_accel + +@@ -25,9 +25,8 @@ class WelcomeView(Gtk.Window): + vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=6) + + s = Gtk.ScrolledWindow() +- self.webview = WebKit.WebView() +- self.webview.connect("navigation-policy-decision-requested", self.check) +- self.webview.connect("mime-type-policy-decision-requested", check_mime_type) ++ self.webview = WebKit2.WebView() ++ self.webview.connect("decide-policy", self.doc_policy) + self.webview.load_uri(welcomeurl) + s.add(self.webview) + vbox.pack_start(s, True, True, 0) +@@ -47,12 +46,19 @@ class WelcomeView(Gtk.Window): + + self.add(vbox) + +- def check(self, view, frame, req, nav, policy): +- uri = req.get_uri() +- if not "welcome.htm" in uri: +- webbrowser.open(uri) +- policy.ignore() +- return True ++ def doc_policy(self, web_view, decision, decision_type): ++ logging.info("Checking policy") ++ logging.debug("received policy decision request of type: {0}".format(decision_type.value_name)) ++ if decision_type == WebKit2.PolicyDecisionType.NAVIGATION_ACTION or decision_type == WebKit2.PolicyDecisionType.NEW_WINDOW_ACTION: ++ nav_action = decision.get_navigation_action() ++ request = nav_action.get_request() ++ uri = request.get_uri() ++ logging.debug("nav request is for uri %s", uri) ++ if not "welcome.htm" in uri: ++ logging.debug("opening uri %s in webbrowser") ++ webbrowser.open(uri) ++ decision.ignore() ++ return True + return False + + def on_openweb_clicked(self, button): +-- +2.17.1 + diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..391df6c --- /dev/null +++ b/debian/patches/series @@ -0,0 +1 @@ +0001-migrate-from-webkit-to-webkit2.patch |