summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorglasseyes <dglassey@gmail.com>2018-11-27 22:16:35 +0700
committerglasseyes <dglassey@gmail.com>2018-11-27 22:16:35 +0700
commitfdedb829a25f37ab1936c98841ccb7f106249310 (patch)
treef93040ad1bdaadc32d939b0c2a6f2ee4ddd15309
parent5f978b9422b4516f7bbe89341746443624891e9e (diff)
patch to move to WebKit2
-rw-r--r--debian/changelog7
-rw-r--r--debian/control2
-rw-r--r--debian/patches/0001-migrate-from-webkit-to-webkit2.patch230
-rw-r--r--debian/patches/series1
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