Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: debian-gtk-gn...@lists.debian.org

The GNOME team would like to get epiphany-browser 3.32.0 into testing,
replacing the current 3.31.91 (3.32 release candidate 1). This will
maximize the period in which we can track upstream 3.32.x bugfix releases
for buster, which seems likely to be important for a web browser.
This also fixes RC bug #922730 (failure to run on 32-bit machines).

The diffstat looks larger than it really is - it's mostly l10n, which
I've filtered out from the debdiff.

3.32.0-1 is in unstable, but FTBFS everywhere (I pushed an untested
version intending to discuss whether it was for buster or experimental,
and Jeremy tested it on Ubuntu rather than Debian before uploading to
unstable). However, the FTBFS is fixed in git, and I confirm that a
build from current git works correctly.

As mentioned on #916347, the intention is to provide security updates
for webkit2gtk in Debian 10 on a similar basis to what's been done
in Ubuntu 16.04 LTS and 18.04 LTS. WebKitGTK upstream intend to keep
new releases buildable for the security lifetime of Debian stable
(until bullseye is released, then one more year), although it might
grow a dependency on a newer compiler after bullseye is released
(but by then we might already need that newer compiler for Firefox).
See <https://trac.webkit.org/wiki/WebKitGTK/DependenciesPolicy>.

If any of that is unacceptable, then we should probably remove
epiphany-browser from testing instead.

unblock epiphany-browser/3.32.0-2

Thanks,
    smcv
diffstat for epiphany-browser-3.31.91 epiphany-browser-3.32.0

 NEWS                                                          |   35 
 data/org.gnome.Epiphany.appdata.xml.in                        |    4 
 data/org.gnome.epiphany.gschema.xml                           |   11 
 debian/changelog                                              |   19 
 debian/patches/00_epiphany-browser.patch                      |    2 
 debian/patches/Disable-webapps-test.patch                     |    4 
 debian/patches/disable-safe-browsing-test.patch               |   32 
 debian/patches/dont-make-compulsory.patch                     |   16 
 debian/patches/revert-libdazzle-version-bump.patch            |   27 
 debian/patches/series                                         |    3 
 debian/patches/use-the-static-build-option-for-libhandy.patch |   24 
 debian/rules                                                  |    3 
 embed/ephy-embed-shell.c                                      |   30 
 embed/web-extension/ephy-web-extension.c                      |   17 
 embed/web-extension/resources/js/ephy.js                      |   12 
 lib/ephy-prefs.h                                              |    8 
 lib/widgets/ephy-location-entry.c                             |    2 
 meson.build                                                   |   21 
 meson_options.txt                                             |   10 
 po/POTFILES.skip                                              |    3 
 po/cs.po                                                      | 1417 +--
 po/da.po                                                      |  409 -
 po/de.po                                                      | 1649 ++--
 po/el.po                                                      | 1520 ++--
 po/es.po                                                      |  422 -
 po/eu.po                                                      | 3783 +++-------
 po/fi.po                                                      |   25 
 po/fr.po                                                      | 1680 ++--
 po/fur.po                                                     |   30 
 po/gl.po                                                      |   33 
 po/hu.po                                                      |  401 -
 po/id.po                                                      |  415 -
 po/it.po                                                      | 1539 ++--
 po/ko.po                                                      | 1704 ++--
 po/lt.po                                                      |  426 -
 po/lv.po                                                      | 2102 +++--
 po/nl.po                                                      | 1765 ++--
 po/pl.po                                                      |  382 -
 po/pt_BR.po                                                   |  455 -
 po/ro.po                                                      | 1640 ++--
 po/ru.po                                                      | 1633 ++--
 po/sr.po                                                      | 1641 ++--
 po/sv.po                                                      | 2034 ++---
 po/tr.po                                                      |  414 -
 src/ephy-action-bar-end.c                                     |   62 
 src/ephy-history-dialog.c                                     |   34 
 src/ephy-mouse-gesture-controller.c                           |   32 
 src/ephy-page-row.c                                           |   17 
 src/ephy-session.c                                            |    2 
 src/ephy-window.c                                             |   12 
 src/prefs-dialog.c                                            |   16 
 src/resources/gtk/encoding-dialog.ui                          |    4 
 src/resources/gtk/history-dialog.ui                           |   77 
 src/resources/gtk/notebook-context-menu.ui                    |    6 
 src/resources/gtk/page-row.ui                                 |  133 
 src/window-commands.c                                         |    8 
 subprojects/libhandy/data/packaging/rpm/libhandy.spec         |    2 
 subprojects/libhandy/debian/changelog                         |   65 
 subprojects/libhandy/debian/libhandy-0.0-0.symbols            |    2 
 subprojects/libhandy/debian/tests/build-test.c                |    2 
 subprojects/libhandy/debian/tests/control                     |    4 
 subprojects/libhandy/debian/tests/python-gi-test              |   13 
 subprojects/libhandy/doc/meson.build                          |    1 
 subprojects/libhandy/examples/meson.build                     |    3 
 subprojects/libhandy/examples/sm.puri.Handy.Demo.json         |    2 
 subprojects/libhandy/glade/libhandy.xml                       |    8 
 subprojects/libhandy/meson.build                              |    2 
 subprojects/libhandy/src/handy.gresources.xml                 |    6 
 subprojects/libhandy/src/hdy-action-row.c                     |   10 
 subprojects/libhandy/src/hdy-arrows.c                         |    3 
 subprojects/libhandy/src/hdy-column.c                         |    3 
 subprojects/libhandy/src/hdy-combo-row-list.css               |    6 
 subprojects/libhandy/src/hdy-combo-row.c                      |   12 
 subprojects/libhandy/src/hdy-dialer-button.c                  |    5 
 subprojects/libhandy/src/hdy-dialer-cycle-button.c            |    3 
 subprojects/libhandy/src/hdy-dialer.c                         |    5 
 subprojects/libhandy/src/hdy-dialog.c                         |    3 
 subprojects/libhandy/src/hdy-expander-row-arrow.css           |   17 
 subprojects/libhandy/src/hdy-expander-row.c                   |  101 
 subprojects/libhandy/src/hdy-expander-row.h                   |    4 
 subprojects/libhandy/src/hdy-fold.c                           |    1 
 subprojects/libhandy/src/hdy-header-group.c                   |    3 
 subprojects/libhandy/src/hdy-leaflet.c                        |   89 
 subprojects/libhandy/src/hdy-list-box.c                       |    3 
 subprojects/libhandy/src/hdy-main.c                           |    3 
 subprojects/libhandy/src/hdy-search-bar.c                     |    5 
 subprojects/libhandy/src/hdy-style-private.h                  |   22 
 subprojects/libhandy/src/hdy-title-bar.c                      |    3 
 subprojects/libhandy/src/hdy-value-object.c                   |    3 
 subprojects/libhandy/src/meson.build                          |    2 
 subprojects/libhandy/tests/test-expander-row.c                |   28 
 tests/meson.build                                             |   24 
 92 files changed, 14678 insertions(+), 13995 deletions(-)

diff -Nru epiphany-browser-3.31.91/data/org.gnome.Epiphany.appdata.xml.in 
epiphany-browser-3.32.0/data/org.gnome.Epiphany.appdata.xml.in
--- epiphany-browser-3.31.91/data/org.gnome.Epiphany.appdata.xml.in     
2019-02-18 23:48:01.000000000 +0000
+++ epiphany-browser-3.32.0/data/org.gnome.Epiphany.appdata.xml.in      
2019-03-11 15:45:53.000000000 +0000
@@ -33,9 +33,9 @@
   </kudos>
   <project_group>GNOME</project_group>
   <compulsory_for_desktop>GNOME</compulsory_for_desktop>
-  <project_license>GPL-2.0+</project_license>
+  <project_license>GPL-3.0+</project_license>
   <developer_name>The GNOME Project</developer_name>
-  <url 
type="bugtracker">https://bugzilla.gnome.org/enter_bug.cgi?product=epiphany</url>
+  <url type="bugtracker">https://gitlab.gnome.org/GNOME/epiphany/issues</url>
   <url type="donation">http://www.gnome.org/friends/</url>
   <url type="help">https://help.gnome.org/users/epiphany/stable/</url>
   <url type="translate">https://wiki.gnome.org/TranslationProject</url>
diff -Nru epiphany-browser-3.31.91/data/org.gnome.epiphany.gschema.xml 
epiphany-browser-3.32.0/data/org.gnome.epiphany.gschema.xml
--- epiphany-browser-3.31.91/data/org.gnome.epiphany.gschema.xml        
2019-02-18 23:48:01.000000000 +0000
+++ epiphany-browser-3.32.0/data/org.gnome.epiphany.gschema.xml 2019-03-11 
15:45:53.000000000 +0000
@@ -55,6 +55,17 @@
                         <summary>Whether to delay loading of tabs that are not 
immediately visible on session restore</summary>
                         <description>When this option is set to true, tabs 
will not start loading until the user switches to them, upon session 
restore.</description>
                 </key>
+                <key name="process-model" 
enum="org.gnome.Epiphany.EphyPrefsProcessModel">
+                        <default>'one-secondary-process-per-web-view'</default>
+                        <summary>Process model</summary>
+                        <description>This option allows to set the process 
model used. Use “shared-secondary-process” to use a single web process shared 
by all the tabs and “one-secondary-process-per-web-view” to use a different web 
process for each tab.</description>
+                </key>
+                <key type="u" name="max-processes">
+                        <default>0</default>
+                        <summary>Maximum number of web processes created at 
the same time when using “one-secondary-process-per-web-view” model</summary>
+                        <description>This option sets a limit to the number of 
web processes that will be used at the same time for the 
“one-secondary-process-per-web-view” model. The default value is “0” and means 
no limit.</description>
+
+                </key>
                 <key type="as" name="adblock-filters">
                         <default>['https://easylist.to/easylist/easylist.txt', 
'https://easylist.to/easylist/easyprivacy.txt']</default>
                         <summary>List of adblock filters</summary>
diff -Nru epiphany-browser-3.31.91/debian/changelog 
epiphany-browser-3.32.0/debian/changelog
--- epiphany-browser-3.31.91/debian/changelog   2019-02-19 01:44:09.000000000 
+0000
+++ epiphany-browser-3.32.0/debian/changelog    2019-03-19 09:48:00.000000000 
+0000
@@ -1,3 +1,22 @@
+epiphany-browser (3.32.0-2) UNRELEASED; urgency=medium
+
+  [ Jeremy Bicha ]
+  * Add revert-libdazzle-version-bump.patch:
+    - Fix build since Buster/sid doesn't have libdazzle 3.32
+
+ -- Simon McVittie <s...@debian.org>  Tue, 19 Mar 2019 09:48:00 +0000
+
+epiphany-browser (3.32.0-1) unstable; urgency=medium
+
+  [ Simon McVittie ]
+  * New upstream release
+    - Fix for running on 32-bit architectures (Closes: #922730)
+  * Refresh patches
+  * Disable tests that require network via a build option, not a patch
+  * Drop use-the-static-build-option-for-libhandy.patch: Applied
+
+ -- Jeremy Bicha <jbi...@debian.org>  Fri, 15 Mar 2019 05:25:23 -0400
+
 epiphany-browser (3.31.91-2) unstable; urgency=medium
 
   * debian/copyright: some corrections
diff -Nru epiphany-browser-3.31.91/debian/patches/00_epiphany-browser.patch 
epiphany-browser-3.32.0/debian/patches/00_epiphany-browser.patch
--- epiphany-browser-3.31.91/debian/patches/00_epiphany-browser.patch   
2019-02-19 01:44:09.000000000 +0000
+++ epiphany-browser-3.32.0/debian/patches/00_epiphany-browser.patch    
2019-03-19 09:48:00.000000000 +0000
@@ -7,7 +7,7 @@
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 diff --git a/meson.build b/meson.build
-index 7d0566c..60aab7b 100644
+index 327e9b5..eb7ba17 100644
 --- a/meson.build
 +++ b/meson.build
 @@ -21,9 +21,9 @@ libdir = join_paths(prefix, get_option('libdir'))
diff -Nru 
epiphany-browser-3.31.91/debian/patches/disable-safe-browsing-test.patch 
epiphany-browser-3.32.0/debian/patches/disable-safe-browsing-test.patch
--- epiphany-browser-3.31.91/debian/patches/disable-safe-browsing-test.patch    
2019-02-19 01:44:09.000000000 +0000
+++ epiphany-browser-3.32.0/debian/patches/disable-safe-browsing-test.patch     
1970-01-01 01:00:00.000000000 +0100
@@ -1,32 +0,0 @@
-From: Jeremy Bicha <jbi...@debian.org>
-Date: Mon, 18 Feb 2019 20:36:49 -0500
-Subject: disable safe browsing test
-
-This test requires Internet access
-
-https://gitlab.gnome.org/GNOME/epiphany/issues/684
----
- tests/meson.build | 10 +++++-----
- 1 file changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/tests/meson.build b/tests/meson.build
-index 2c71c8c..71fcd32 100644
---- a/tests/meson.build
-+++ b/tests/meson.build
-@@ -68,11 +68,11 @@ if get_option('unit_tests')
-     'ephy-gsb-service-test.c',
-     dependencies: ephymain_dep
-   )
--  test('GSB service test',
--       gsb_service_test,
--       env: envs,
--       timeout: 90 # slow!
--  )
-+  #test('GSB service test',
-+  #     gsb_service_test,
-+  #     env: envs,
-+  #     timeout: 90 # slow!
-+  #)
- 
-   history_test = executable('test-ephy-history',
-     'ephy-history-test.c',
diff -Nru epiphany-browser-3.31.91/debian/patches/Disable-webapps-test.patch 
epiphany-browser-3.32.0/debian/patches/Disable-webapps-test.patch
--- epiphany-browser-3.31.91/debian/patches/Disable-webapps-test.patch  
2019-02-19 01:44:09.000000000 +0000
+++ epiphany-browser-3.32.0/debian/patches/Disable-webapps-test.patch   
2019-03-19 09:48:00.000000000 +0000
@@ -7,10 +7,10 @@
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 diff --git a/tests/meson.build b/tests/meson.build
-index 6294f4e..2c71c8c 100644
+index b199a2c..b6f7f8e 100644
 --- a/tests/meson.build
 +++ b/tests/meson.build
-@@ -164,10 +164,10 @@ if get_option('unit_tests')
+@@ -154,10 +154,10 @@ if get_option('unit_tests').enabled()
      'ephy-web-app-utils-test.c',
      dependencies: ephymain_dep
    )
diff -Nru epiphany-browser-3.31.91/debian/patches/dont-make-compulsory.patch 
epiphany-browser-3.32.0/debian/patches/dont-make-compulsory.patch
--- epiphany-browser-3.31.91/debian/patches/dont-make-compulsory.patch  
2019-02-19 01:44:09.000000000 +0000
+++ epiphany-browser-3.32.0/debian/patches/dont-make-compulsory.patch   
2019-03-19 09:48:00.000000000 +0000
@@ -1,16 +1,20 @@
 From: Jeremy Bicha <jbi...@debian.org>
 Date: Sun, 18 Feb 2018 15:24:30 -0500
-Subject: Since Epiphany is not our default browser,
+Subject: appdata: Don't mark as compulsory for GNOME
 
-allow users to uninstall it using the GNOME Software app
+Upstream mark it as a system application that cannot be removed, because
+it's GNOME's default web browser, but our default in Debian is Firefox.
 
-https://gitlab.gnome.org/GNOME/epiphany/merge_requests/31
+Allow users to uninstall this app if they wish.
+
+Applied-upstream: no
+Forwarded: https://gitlab.gnome.org/GNOME/epiphany/merge_requests/31
 ---
  data/org.gnome.Epiphany.appdata.xml.in | 1 -
  1 file changed, 1 deletion(-)
 
 diff --git a/data/org.gnome.Epiphany.appdata.xml.in 
b/data/org.gnome.Epiphany.appdata.xml.in
-index 220d9bd..f8bf74b 100644
+index b8c373e..7372d96 100644
 --- a/data/org.gnome.Epiphany.appdata.xml.in
 +++ b/data/org.gnome.Epiphany.appdata.xml.in
 @@ -32,7 +32,6 @@
@@ -18,6 +22,6 @@
    </kudos>
    <project_group>GNOME</project_group>
 -  <compulsory_for_desktop>GNOME</compulsory_for_desktop>
-   <project_license>GPL-2.0+</project_license>
+   <project_license>GPL-3.0+</project_license>
    <developer_name>The GNOME Project</developer_name>
-   <url 
type="bugtracker">https://bugzilla.gnome.org/enter_bug.cgi?product=epiphany</url>
+   <url type="bugtracker">https://gitlab.gnome.org/GNOME/epiphany/issues</url>
diff -Nru 
epiphany-browser-3.31.91/debian/patches/revert-libdazzle-version-bump.patch 
epiphany-browser-3.32.0/debian/patches/revert-libdazzle-version-bump.patch
--- epiphany-browser-3.31.91/debian/patches/revert-libdazzle-version-bump.patch 
1970-01-01 01:00:00.000000000 +0100
+++ epiphany-browser-3.32.0/debian/patches/revert-libdazzle-version-bump.patch  
2019-03-19 09:48:00.000000000 +0000
@@ -0,0 +1,27 @@
+From: Jeremy Bicha <jbi...@debian.org>
+Date: Fri, 15 Mar 2019 07:02:07 -0400
+Subject: revert libdazzle version bump
+
+ae98f8c8445fce unnecessarily bumped the libdazzle version.
+
+Lower the libdazzle requirement 3.30 since that's what
+we have in Debian 10 "Buster".
+
+https://gitlab.gnome.org/GNOME/epiphany/issues/699
+---
+ meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/meson.build b/meson.build
+index eb7ba17..631ae57 100644
+--- a/meson.build
++++ b/meson.build
+@@ -95,7 +95,7 @@ hogweed_dep = dependency('hogweed', version: 
nettle_requirement)
+ icu_uc_dep = dependency('icu-uc', version: '>= 4.6')
+ iso_codes_dep = dependency('iso-codes', version: '>= 0.35')
+ json_glib_dep = dependency('json-glib-1.0', version: '>= 1.2.4')
+-libdazzle_dep = dependency('libdazzle-1.0', version: '>= 3.31.90')
++libdazzle_dep = dependency('libdazzle-1.0', version: '>= 3.30')
+ libhandy_dep = dependency('libhandy-0.0', version: '>= 0.0.9', required: 
false)
+ libnotify_dep = dependency('libnotify', version: '>= 0.5.1')
+ libsecret_dep = dependency('libsecret-1', version: '>= 0.14')
diff -Nru epiphany-browser-3.31.91/debian/patches/series 
epiphany-browser-3.32.0/debian/patches/series
--- epiphany-browser-3.31.91/debian/patches/series      2019-02-19 
01:44:09.000000000 +0000
+++ epiphany-browser-3.32.0/debian/patches/series       2019-03-19 
09:48:00.000000000 +0000
@@ -2,5 +2,4 @@
 07_bookmarks.patch
 dont-make-compulsory.patch
 Disable-webapps-test.patch
-use-the-static-build-option-for-libhandy.patch
-disable-safe-browsing-test.patch
+revert-libdazzle-version-bump.patch
diff -Nru 
epiphany-browser-3.31.91/debian/patches/use-the-static-build-option-for-libhandy.patch
 
epiphany-browser-3.32.0/debian/patches/use-the-static-build-option-for-libhandy.patch
--- 
epiphany-browser-3.31.91/debian/patches/use-the-static-build-option-for-libhandy.patch
      2019-02-19 01:44:09.000000000 +0000
+++ 
epiphany-browser-3.32.0/debian/patches/use-the-static-build-option-for-libhandy.patch
       1970-01-01 01:00:00.000000000 +0100
@@ -1,24 +0,0 @@
-From: Jeremy Bicha <jbi...@ubuntu.com>
-Date: Mon, 18 Feb 2019 19:49:11 -0500
-Subject: build: use static build option for libhandy subproject
-
-This keeps libhandy from trying to install its
-development files
-
-https://gitlab.gnome.org/GNOME/epiphany/merge_requests/191
----
- meson.build | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/meson.build b/meson.build
-index 60aab7b..aa4e464 100644
---- a/meson.build
-+++ b/meson.build
-@@ -125,6 +125,7 @@ if not libhandy_dep.found()
-                                                           
'glade_catalog=disabled',
-                                                           
'introspection=disabled',
-                                                           
'package_subdir=epiphany',
-+                                                          'static=true',
-                                                           'tests=false',
-                                                           
'vapi=false']).get_variable('libhandy_dep')
- endif
diff -Nru epiphany-browser-3.31.91/debian/rules 
epiphany-browser-3.32.0/debian/rules
--- epiphany-browser-3.31.91/debian/rules       2019-02-19 01:44:09.000000000 
+0000
+++ epiphany-browser-3.32.0/debian/rules        2019-03-19 09:48:00.000000000 
+0000
@@ -8,7 +8,8 @@
 
 override_dh_auto_configure:
        dh_auto_configure -- \
-               --libexecdir=/usr/lib
+               --libexecdir=/usr/lib \
+               -Dnetwork_tests=disabled
 
 override_dh_install-arch:
        dh_install -a
diff -Nru epiphany-browser-3.31.91/embed/ephy-embed-shell.c 
epiphany-browser-3.32.0/embed/ephy-embed-shell.c
--- epiphany-browser-3.31.91/embed/ephy-embed-shell.c   2019-02-18 
23:48:01.000000000 +0000
+++ epiphany-browser-3.32.0/embed/ephy-embed-shell.c    2019-03-11 
15:45:53.000000000 +0000
@@ -1068,6 +1068,33 @@
 }
 
 static void
+ephy_embed_shell_setup_process_model (EphyEmbedShell *shell)
+{
+  EphyEmbedShellPrivate *priv = ephy_embed_shell_get_instance_private (shell);
+  EphyPrefsProcessModel process_model;
+  guint max_processes;
+
+  if (ephy_embed_shell_get_mode (shell) == EPHY_EMBED_SHELL_MODE_APPLICATION)
+    process_model = EPHY_PREFS_PROCESS_MODEL_SHARED_SECONDARY_PROCESS;
+  else
+    process_model = g_settings_get_enum (EPHY_SETTINGS_MAIN, 
EPHY_PREFS_PROCESS_MODEL);
+
+  switch (process_model) {
+    case EPHY_PREFS_PROCESS_MODEL_SHARED_SECONDARY_PROCESS:
+      max_processes = 1;
+      break;
+    case EPHY_PREFS_PROCESS_MODEL_ONE_SECONDARY_PROCESS_PER_WEB_VIEW:
+      max_processes = g_settings_get_uint (EPHY_SETTINGS_MAIN, 
EPHY_PREFS_MAX_PROCESSES);
+      break;
+    default:
+      g_assert_not_reached ();
+  }
+
+  webkit_web_context_set_process_model (priv->web_context, 
WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES);
+  webkit_web_context_set_web_process_count_limit (priv->web_context, 
max_processes);
+}
+
+static void
 ephy_embed_shell_create_web_context (EphyEmbedShell *shell)
 {
   EphyEmbedShellPrivate *priv = ephy_embed_shell_get_instance_private (shell);
@@ -1209,8 +1236,7 @@
                     G_CALLBACK 
(web_extension_password_manager_request_save_received_cb),
                     shell);
 
-  webkit_web_context_set_process_model (priv->web_context, 
WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES);
-
+  ephy_embed_shell_setup_process_model (shell);
   g_signal_connect_object (priv->web_context, "initialize-web-extensions",
                            G_CALLBACK (initialize_web_extensions),
                            shell, 0);
diff -Nru epiphany-browser-3.31.91/embed/web-extension/ephy-web-extension.c 
epiphany-browser-3.32.0/embed/web-extension/ephy-web-extension.c
--- epiphany-browser-3.31.91/embed/web-extension/ephy-web-extension.c   
2019-02-18 23:48:01.000000000 +0000
+++ epiphany-browser-3.32.0/embed/web-extension/ephy-web-extension.c    
2019-03-11 15:45:53.000000000 +0000
@@ -654,15 +654,14 @@
 js_exception_handler (JSCContext   *context,
                       JSCException *exception)
 {
-  JSCValue *js_console;
-  JSCValue *js_result;
+  g_autoptr(JSCValue) js_console = NULL;
+  g_autoptr(JSCValue) js_result = NULL;
+  g_autofree char *report = NULL;
 
   js_console = jsc_context_get_value (context, "console");
   js_result = jsc_value_object_invoke_method (js_console, "error", 
JSC_TYPE_EXCEPTION, exception, G_TYPE_NONE);
-  g_object_unref (js_result);
-  g_object_unref (js_console);
-
-  g_warning ("JavaScriptException: %s", jsc_exception_get_message (exception));
+  report = jsc_exception_report (exception);
+  g_warning ("%s", report);
 
   jsc_context_throw_exception (context, exception);
 }
@@ -741,12 +740,10 @@
                                                  js_ephy);
 
   if (!extension->is_private_profile) {
-    guint64 page_id = webkit_web_page_get_id (page);
-    g_assert (page_id < G_MAXINT32);
-
     g_autoptr(JSCValue) js_password_manager_ctor = 
jsc_value_object_get_property (js_ephy, "PasswordManager");
     g_autoptr(JSCValue) js_password_manager = jsc_value_constructor_call 
(js_password_manager_ctor,
-                                                                          
G_TYPE_INT, page_id, G_TYPE_NONE);
+                                                                          
G_TYPE_UINT64, webkit_web_page_get_id (page),
+                                                                          
G_TYPE_NONE);
     jsc_value_object_set_property (js_ephy, "passwordManager", 
js_password_manager);
 
     js_function = jsc_value_new_function (js_context,
diff -Nru epiphany-browser-3.31.91/embed/web-extension/resources/js/ephy.js 
epiphany-browser-3.32.0/embed/web-extension/resources/js/ephy.js
--- epiphany-browser-3.31.91/embed/web-extension/resources/js/ephy.js   
2019-02-18 23:48:01.000000000 +0000
+++ epiphany-browser-3.32.0/embed/web-extension/resources/js/ephy.js    
2019-03-11 15:45:53.000000000 +0000
@@ -465,8 +465,8 @@
             this._formAuth.url.origin,
             this._formAuth.targetURL.origin,
             this._formAuth.usernameNode && this._formAuth.usernameNode.value ? 
this._formAuth.usernameNode.value : null,
-            this._formAuth.usernameNode ? this._formAuth.usernameNode.name : 
null,
-            this._formAuth.passwordNode.name ? 
this._formAuth.passwordNode.name : null).then(function (authInfo) {
+            this._formAuth.usernameNode ? (this._formAuth.usernameNode.name ? 
this._formAuth.usernameNode.name : this._formAuth.usernameNode.id) : null,
+            this._formAuth.passwordNode.name ? 
this._formAuth.passwordNode.name : 
this._formAuth.passwordNode.id).then(function (authInfo) {
                 if (!authInfo) {
                     Ephy.log('No result');
                     return;
@@ -500,17 +500,17 @@
             return;
         }
 
-        if (!this._formAuth.passwordNode.value || 
!this._formAuth.passwordNode.name)
+        if (!this._formAuth.passwordNode.value || 
(!this._formAuth.passwordNode.name && !this._formAuth.passwordNode.id))
             return;
 
         let password = this._formAuth.passwordNode.value;
-        let passwordField = this._formAuth.passwordNode.name;
+        let passwordField = this._formAuth.passwordNode.name ? 
this._formAuth.passwordNode.name : this._formAuth.passwordNode.id;
 
         let username = null;
         let usernameField = null;
-        if (this._formAuth.usernameNode && this._formAuth.usernameNode.value 
&& this._formAuth.usernameNode.name) {
+        if (this._formAuth.usernameNode && this._formAuth.usernameNode.value 
&& (this._formAuth.usernameNode.name || this._formAuth.usernameNode.id)) {
             username = this._formAuth.usernameNode.value;
-            usernameField = this._formAuth.usernameNode.name;
+            usernameField = this._formAuth.usernameNode.name ? 
this._formAuth.usernameNode.name : this._formAuth.usernameNode.id;
         }
 
         this._formAuth.url = new URL(String(window.location));
diff -Nru epiphany-browser-3.31.91/lib/ephy-prefs.h 
epiphany-browser-3.32.0/lib/ephy-prefs.h
--- epiphany-browser-3.31.91/lib/ephy-prefs.h   2019-02-18 23:48:01.000000000 
+0000
+++ epiphany-browser-3.32.0/lib/ephy-prefs.h    2019-03-11 15:45:53.000000000 
+0000
@@ -71,6 +71,12 @@
   EPHY_PREFS_WEB_HARDWARE_ACCELERATION_POLICY_NEVER
 } EphyPrefsWebHardwareAccelerationPolicy;
 
+typedef enum
+{
+  EPHY_PREFS_PROCESS_MODEL_SHARED_SECONDARY_PROCESS,
+  EPHY_PREFS_PROCESS_MODEL_ONE_SECONDARY_PROCESS_PER_WEB_VIEW
+} EphyPrefsProcessModel;
+
 #define EPHY_PREFS_UI_SCHEMA                     "org.gnome.Epiphany.ui"
 #define EPHY_PREFS_UI_EXPAND_TABS_BAR            "expand-tabs-bar"
 #define EPHY_PREFS_UI_TABS_BAR_POSITION          "tabs-bar-position"
@@ -165,6 +171,8 @@
 #define EPHY_PREFS_INTERNAL_VIEW_SOURCE               "internal-view-source"
 #define EPHY_PREFS_RESTORE_SESSION_POLICY             "restore-session-policy"
 #define EPHY_PREFS_RESTORE_SESSION_DELAYING_LOADS     
"restore-session-delaying-loads"
+#define EPHY_PREFS_PROCESS_MODEL                      "process-model"
+#define EPHY_PREFS_MAX_PROCESSES                      "max-processes"
 #define EPHY_PREFS_ADBLOCK_FILTERS                    "adblock-filters"
 #define EPHY_PREFS_SEARCH_ENGINES                     "search-engines"
 #define EPHY_PREFS_DEFAULT_SEARCH_ENGINE              "default-search-engine"
diff -Nru epiphany-browser-3.31.91/lib/widgets/ephy-location-entry.c 
epiphany-browser-3.32.0/lib/widgets/ephy-location-entry.c
--- epiphany-browser-3.31.91/lib/widgets/ephy-location-entry.c  2019-02-18 
23:48:01.000000000 +0000
+++ epiphany-browser-3.32.0/lib/widgets/ephy-location-entry.c   2019-03-11 
15:45:53.000000000 +0000
@@ -303,9 +303,7 @@
 
   G_OBJECT_CLASS (ephy_location_entry_parent_class)->constructed (object);
 
-#if GTK_CHECK_VERSION(3, 22, 20)
   gtk_entry_set_input_hints (GTK_ENTRY (entry->url_entry), 
GTK_INPUT_HINT_NO_EMOJI);
-#endif
 }
 
 static void
diff -Nru epiphany-browser-3.31.91/meson.build 
epiphany-browser-3.32.0/meson.build
--- epiphany-browser-3.31.91/meson.build        2019-02-18 23:48:01.000000000 
+0000
+++ epiphany-browser-3.32.0/meson.build 2019-03-11 15:45:53.000000000 +0000
@@ -1,6 +1,6 @@
 project('epiphany', 'c',
   license: 'GPL3+',
-  version: '3.31.91',
+  version: '3.32.0',
   meson_version: '>= 0.42.0',
   default_options: ['c_std=gnu11']
 )
@@ -76,11 +76,8 @@
   )
 endif
 
-# Dependencies policy: except for WebKitGTK+, all dependency versions must be
-# available in Ubuntu 18.04. Please check before bumping the required version
-# of any dependency.
 glib_requirement = '>= 2.56.0'
-gtk_requirement = '>= 3.22.13'
+gtk_requirement = '>= 3.24.0'
 nettle_requirement = '>= 3.4'
 webkitgtk_requirement = '>= 2.21.92'
 
@@ -98,8 +95,8 @@
 icu_uc_dep = dependency('icu-uc', version: '>= 4.6')
 iso_codes_dep = dependency('iso-codes', version: '>= 0.35')
 json_glib_dep = dependency('json-glib-1.0', version: '>= 1.2.4')
-libdazzle_dep = dependency('libdazzle-1.0', version: '>= 3.29.4', required: 
false)
-libhandy_dep = dependency('libhandy-0.0', version: '>= 0.0.8', required: false)
+libdazzle_dep = dependency('libdazzle-1.0', version: '>= 3.31.90')
+libhandy_dep = dependency('libhandy-0.0', version: '>= 0.0.9', required: false)
 libnotify_dep = dependency('libnotify', version: '>= 0.5.1')
 libsecret_dep = dependency('libsecret-1', version: '>= 0.14')
 libsoup_dep = dependency('libsoup-2.4', version: '>= 2.48.0')
@@ -109,15 +106,6 @@
 webkit2gtk_dep = dependency('webkit2gtk-4.0', version: webkitgtk_requirement)
 webkit2gtk_web_extension_dep = dependency('webkit2gtk-web-extension-4.0', 
version: webkitgtk_requirement)
 
-# Ubuntu 18.04 has libdazzle 3.28, the max we can require from the system, but
-# we need 3.30, so bundle it if the system copy is too old.
-if not libdazzle_dep.found()
-  libdazzle_dep = subproject('libdazzle', default_options: 
['package_subdir=epiphany',
-                                                            
'enable_tools=false',
-                                                            
'with_introspection=false',
-                                                            
'with_vapi=false']).get_variable('libdazzle_dep')
-endif
-
 # Ubuntu 18.04 doesn't have libhandy at all, and we need 0.0.5, so bundle it if
 # the system copy is missing or too old.
 if not libhandy_dep.found()
@@ -125,6 +113,7 @@
                                                           
'glade_catalog=disabled',
                                                           
'introspection=disabled',
                                                           
'package_subdir=epiphany',
+                                                          'static=true',
                                                           'tests=false',
                                                           
'vapi=false']).get_variable('libhandy_dep')
 endif
diff -Nru epiphany-browser-3.31.91/meson_options.txt 
epiphany-browser-3.32.0/meson_options.txt
--- epiphany-browser-3.31.91/meson_options.txt  2019-02-18 23:48:01.000000000 
+0000
+++ epiphany-browser-3.32.0/meson_options.txt   2019-03-11 15:45:53.000000000 
+0000
@@ -4,6 +4,12 @@
   description: 'Enable developer mode'
 )
 
+option('network_tests',
+  type: 'feature',
+  value: 'disabled',
+  description: 'Enable tests that require network access, if unit_tests are 
enabled'
+)
+
 option('tech_preview',
   type: 'boolean',
   value: false,
@@ -11,7 +17,7 @@
 )
 
 option('unit_tests',
-  type: 'boolean',
-  value: true,
+  type: 'feature',
+  value: 'enabled',
   description: 'Enable unit tests'
 )
diff -Nru epiphany-browser-3.31.91/NEWS epiphany-browser-3.32.0/NEWS
--- epiphany-browser-3.31.91/NEWS       2019-02-18 23:48:01.000000000 +0000
+++ epiphany-browser-3.32.0/NEWS        2019-03-11 15:45:53.000000000 +0000
@@ -1,3 +1,38 @@
+3.32.0 - March 11, 2019
+=======================
+
+Major changes since 3.30:
+
+- Redesigned address bar dropdown with new dazzling
+- Redesigned open tabs menu, now displays tab favicons and allows closing tabs
+- Greatly improved adaptive mode support for small displays
+- Three-finger swipe touchpad gesture now available for back/forward navigation
+- Automation mode, for running WebDriver tests (useful for website developers)
+
+Changes since 3.31.92:
+
+- Fix preferences dialog crash
+- Fix password manager crash on 32-bit systems
+- Bump to libhandy 0.0.9 (Adrien Plazas)
+
+3.31.92 - March 4, 2019
+=======================
+
+- Add animation when download completes (#629)
+- New tab popover should close tabs on middle-click (#643)
+- Fix context menu in history dialog (#651)
+- Add separators to tab bar context menu (#652)
+- Fix crash in mouse gesture controller (#679)
+- Disable safe browsing test by default (#684)
+- Improve reliability of password form detection
+- Fix encoding dialog (Arnaud B.)
+- Restore unsafe process model and process count settings for 3.32 branch only
+- Change -Dunit_tests meson option to feature rather than bool type
+- Require system libdazzle and recent GTK 3.24
+- Build libhandy as static lib (Jeremy Bicha)
+- Bundle newer libhandy to fix i18n (Adrien Plazas)
+- Fix licence in appstream metadata to GPLv3+
+
 3.31.91 - February 18, 2019
 ===========================
 
diff -Nru epiphany-browser-3.31.91/src/ephy-action-bar-end.c 
epiphany-browser-3.32.0/src/ephy-action-bar-end.c
--- epiphany-browser-3.31.91/src/ephy-action-bar-end.c  2019-02-18 
23:48:01.000000000 +0000
+++ epiphany-browser-3.32.0/src/ephy-action-bar-end.c   2019-03-11 
15:45:53.000000000 +0000
@@ -44,6 +44,8 @@
 
 G_DEFINE_TYPE (EphyActionBarEnd, ephy_action_bar_end, GTK_TYPE_BOX)
 
+static void begin_complete_theatrics (EphyActionBarEnd *self);
+
 static void
 remove_downloads_button_attention_style (EphyActionBarEnd *self)
 {
@@ -123,11 +125,71 @@
   }
 }
 
+static gboolean
+begin_complete_theatrics_from_main (gpointer user_data)
+{
+  EphyActionBarEnd *self = user_data;
+  GtkAllocation rect;
+
+  gtk_widget_get_allocation (GTK_WIDGET (self->downloads_button), &rect);
+  if (rect.x != -1 && rect.y != -1)
+    begin_complete_theatrics (self);
+
+  return G_SOURCE_REMOVE;
+}
+
+static void
+begin_complete_theatrics (EphyActionBarEnd *self)
+{
+  g_autoptr(GIcon) icon = NULL;
+  DzlBoxTheatric *theatric;
+  GtkAllocation rect;
+
+  gtk_widget_get_allocation (GTK_WIDGET (self->downloads_button), &rect);
+
+  if (rect.x == -1 && rect.y == -1) {
+    /* Delay this until our widget has been mapped/realized/displayed */
+    g_idle_add_full (G_PRIORITY_LOW,
+                     begin_complete_theatrics_from_main,
+                     g_object_ref (self), g_object_unref);
+    return;
+  }
+
+  rect.x = 0;
+  rect.y = 0;
+
+  icon = g_themed_icon_new ("folder-download-symbolic");
+
+  theatric = g_object_new (DZL_TYPE_BOX_THEATRIC,
+                           "alpha", 1.0,
+                           "height", rect.height,
+                           "icon", icon,
+                           "target", self,
+                           "width", rect.width,
+                           "x", rect.x,
+                           "y", rect.y,
+                           NULL);
+
+  dzl_object_animate_full (theatric,
+                           DZL_ANIMATION_EASE_OUT_CUBIC,
+                           750,
+                           gtk_widget_get_frame_clock (GTK_WIDGET (self)),
+                           g_object_unref,
+                           theatric,
+                           "x", rect.x - 60,
+                           "width", rect.width + 120,
+                           "y", rect.y,
+                           "height", rect.height + 120,
+                           "alpha", 0.0,
+                           NULL);
+}
+
 static void
 download_completed_cb (EphyDownloadsManager *manager,
                        EphyDownload         *download,
                        EphyActionBarEnd     *action_bar_end)
 {
+  begin_complete_theatrics (action_bar_end);
 }
 
 static void
diff -Nru epiphany-browser-3.31.91/src/ephy-history-dialog.c 
epiphany-browser-3.32.0/src/ephy-history-dialog.c
--- epiphany-browser-3.31.91/src/ephy-history-dialog.c  2019-02-18 
23:48:01.000000000 +0000
+++ epiphany-browser-3.32.0/src/ephy-history-dialog.c   2019-03-11 
15:45:53.000000000 +0000
@@ -50,7 +50,7 @@
 
   GtkWidget *listbox;
   GtkWidget *forget_all_button;
-  GtkWidget *popover_menu;
+  GtkWidget *popup_menu;
 
   GActionGroup *action_group;
 
@@ -565,27 +565,31 @@
                                GdkEventButton    *event,
                                EphyHistoryDialog *self)
 {
-  if (event->button == 3) {
-    GList *rows = gtk_list_box_get_selected_rows ( GTK_LIST_BOX 
(self->listbox));
+  if (event->button == GDK_BUTTON_SECONDARY) {
+    GtkListBoxRow *row = gtk_list_box_get_row_at_y (GTK_LIST_BOX 
(self->listbox), event->y);
+    GList *rows = NULL;
+    guint state = event->state & gtk_accelerator_get_default_mod_mask ();
     int n;
 
-    n = g_list_length (rows);
+    if (!row)
+      return GDK_EVENT_PROPAGATE;
 
-    if (n <= 0) {
-      g_list_free (rows);
+    if (state != GDK_CONTROL_MASK)
+      gtk_list_box_unselect_all (GTK_LIST_BOX (self->listbox));
 
-      return FALSE;
-    }
+    gtk_list_box_select_row (GTK_LIST_BOX (self->listbox), row);
+    rows = gtk_list_box_get_selected_rows (GTK_LIST_BOX (self->listbox));
+    n = g_list_length (rows);
+    g_list_free (rows);
 
-    update_popup_menu_actions (self->action_group, (n == 1));
+    update_popup_menu_actions (self->action_group, n == 1);
 
-    gtk_popover_set_relative_to (GTK_POPOVER (self->popover_menu), GTK_WIDGET 
(rows->data));
-    gtk_popover_popup (GTK_POPOVER (self->popover_menu));
+    gtk_menu_popup_at_pointer (GTK_MENU (self->popup_menu), (GdkEvent *)event);
 
-    return TRUE;
+    return GDK_EVENT_STOP;
   }
 
-  return FALSE;
+  return GDK_EVENT_PROPAGATE;
 }
 
 
@@ -740,7 +744,7 @@
                                                
"/org/gnome/epiphany/gtk/history-dialog.ui");
   gtk_widget_class_bind_template_child (widget_class, EphyHistoryDialog, 
listbox);
   gtk_widget_class_bind_template_child (widget_class, EphyHistoryDialog, 
forget_all_button);
-  gtk_widget_class_bind_template_child (widget_class, EphyHistoryDialog, 
popover_menu);
+  gtk_widget_class_bind_template_child (widget_class, EphyHistoryDialog, 
popup_menu);
 
   gtk_widget_class_bind_template_callback (widget_class, 
on_listbox_row_activated);
   gtk_widget_class_bind_template_callback (widget_class, 
on_listbox_row_selected);
@@ -799,6 +803,8 @@
   gtk_list_box_set_header_func (GTK_LIST_BOX (self->listbox), box_header_func, 
NULL, NULL);
   ephy_gui_ensure_window_group (GTK_WINDOW (self));
 
+  gtk_menu_attach_to_widget (GTK_MENU (self->popup_menu), GTK_WIDGET (self), 
NULL);
+
   self->action_group = create_action_group (self);
   gtk_widget_insert_action_group (GTK_WIDGET (self), "history", 
self->action_group);
 
diff -Nru epiphany-browser-3.31.91/src/ephy-mouse-gesture-controller.c 
epiphany-browser-3.32.0/src/ephy-mouse-gesture-controller.c
--- epiphany-browser-3.31.91/src/ephy-mouse-gesture-controller.c        
2019-02-18 23:48:01.000000000 +0000
+++ epiphany-browser-3.32.0/src/ephy-mouse-gesture-controller.c 2019-03-11 
15:45:53.000000000 +0000
@@ -243,12 +243,15 @@
 void
 ephy_mouse_gesture_controller_unset_web_view (EphyMouseGestureController *self)
 {
-  g_signal_handlers_disconnect_by_func (self->web_view,
-                                        G_CALLBACK 
(ephy_mouse_gesture_controller_button_press_cb),
-                                        self);
-  g_signal_handlers_disconnect_by_func (self->web_view,
-                                        G_CALLBACK 
(ephy_mouse_gesture_controller_button_release_cb),
-                                        self);
+  if (self->web_view) {
+    g_signal_handlers_disconnect_by_func (self->web_view,
+                                          G_CALLBACK 
(ephy_mouse_gesture_controller_button_press_cb),
+                                          self);
+    g_signal_handlers_disconnect_by_func (self->web_view,
+                                          G_CALLBACK 
(ephy_mouse_gesture_controller_button_release_cb),
+                                          self);
+    g_clear_object (&self->web_view);
+  }
 }
 
 static void
@@ -256,13 +259,8 @@
 {
   EphyMouseGestureController *self = EPHY_MOUSE_GESTURE_CONTROLLER (object);
 
-  if (self->controller != NULL && self->window != NULL)
-    g_signal_handlers_disconnect_by_func (self->controller,
-                                          G_CALLBACK 
(ephy_mouse_gesture_controller_motion_cb),
-                                          self);
-  ephy_mouse_gesture_controller_unset_web_view (self);
-
   g_clear_object (&self->controller);
+  ephy_mouse_gesture_controller_unset_web_view (self);
 
   G_OBJECT_CLASS (ephy_mouse_gesture_controller_parent_class)->dispose 
(object);
 }
@@ -274,10 +272,8 @@
 
   ephy_mouse_gesture_controller_reset (self);
 
-#if GTK_CHECK_VERSION (3, 24, 0)
   self->controller = gtk_event_controller_motion_new (GTK_WIDGET 
(self->window));
   g_signal_connect (self->controller, "motion", G_CALLBACK 
(ephy_mouse_gesture_controller_motion_cb), self);
-#endif
 }
 
 static void
@@ -314,8 +310,10 @@
 ephy_mouse_gesture_controller_set_web_view (EphyMouseGestureController *self,
                                             WebKitWebView              
*web_view)
 {
-  g_signal_connect (web_view, "button-press-event", G_CALLBACK 
(ephy_mouse_gesture_controller_button_press_cb), self);
-  g_signal_connect (web_view, "button-release-event", G_CALLBACK 
(ephy_mouse_gesture_controller_button_release_cb), self);
+  ephy_mouse_gesture_controller_unset_web_view (self);
+
+  g_signal_connect_object (web_view, "button-press-event", G_CALLBACK 
(ephy_mouse_gesture_controller_button_press_cb), self, 0);
+  g_signal_connect_object (web_view, "button-release-event", G_CALLBACK 
(ephy_mouse_gesture_controller_button_release_cb), self, 0);
 
-  self->web_view = web_view;
+  self->web_view = g_object_ref (web_view);
 }
diff -Nru epiphany-browser-3.31.91/src/ephy-page-row.c 
epiphany-browser-3.32.0/src/ephy-page-row.c
--- epiphany-browser-3.31.91/src/ephy-page-row.c        2019-02-18 
23:48:01.000000000 +0000
+++ epiphany-browser-3.32.0/src/ephy-page-row.c 2019-03-11 15:45:53.000000000 
+0000
@@ -82,6 +82,22 @@
   g_signal_emit (self, signals[CLOSED], 0);
 }
 
+static gboolean
+button_release_event (GtkWidget   *widget,
+                      GdkEvent    *event,
+                      EphyPageRow *self)
+{
+  GdkEventButton *button_event = (GdkEventButton *)event;
+
+  if (button_event->button == GDK_BUTTON_MIDDLE) {
+    g_signal_emit (self, signals[CLOSED], 0);
+
+    return GDK_EVENT_STOP;
+  }
+
+  return GDK_EVENT_PROPAGATE;
+}
+
 static void
 ephy_page_row_class_init (EphyPageRowClass *klass)
 {
@@ -102,6 +118,7 @@
   gtk_widget_class_bind_template_child (widget_class, EphyPageRow, spinner);
   gtk_widget_class_bind_template_child (widget_class, EphyPageRow, title);
   gtk_widget_class_bind_template_callback (widget_class, close_clicked_cb);
+  gtk_widget_class_bind_template_callback (widget_class, button_release_event);
 }
 
 static void
diff -Nru epiphany-browser-3.31.91/src/ephy-session.c 
epiphany-browser-3.32.0/src/ephy-session.c
--- epiphany-browser-3.31.91/src/ephy-session.c 2019-02-18 23:48:01.000000000 
+0000
+++ epiphany-browser-3.32.0/src/ephy-session.c  2019-03-11 15:45:53.000000000 
+0000
@@ -273,7 +273,7 @@
   }
 
   gtk_widget_grab_focus (GTK_WIDGET (new_tab));
-  gtk_window_present (GTK_WINDOW (window));
+  gtk_window_present_with_time (GTK_WINDOW (window), 
gtk_get_current_event_time ());
 
   closed_tab_free (tab);
 
diff -Nru epiphany-browser-3.31.91/src/ephy-window.c 
epiphany-browser-3.32.0/src/ephy-window.c
--- epiphany-browser-3.31.91/src/ephy-window.c  2019-02-18 23:48:01.000000000 
+0000
+++ epiphany-browser-3.32.0/src/ephy-window.c   2019-03-11 15:45:53.000000000 
+0000
@@ -171,10 +171,12 @@
   guint is_fullscreen : 1;
   guint closing : 1;
   guint is_popup : 1;
-  guint present_on_insert : 1;
   guint updating_address : 1;
   guint force_close : 1;
   guint checking_modified_forms : 1;
+  guint present_on_insert : 1;
+
+  guint32 present_on_insert_user_time;
 };
 
 enum {
@@ -844,6 +846,7 @@
   { "duplicate", window_cmd_tabs_duplicate },
   { "detach", window_cmd_tabs_detach },
   { "close", window_cmd_tabs_close },
+  { "close-tab", window_cmd_tabs_close },
   { "close-left", window_cmd_tabs_close_left },
   { "close-right", window_cmd_tabs_close_right },
   { "move-left", window_cmd_tabs_move_left },
@@ -2585,7 +2588,11 @@
 static gboolean
 present_on_idle_cb (GtkWindow *window)
 {
-  gtk_window_present (window);
+  EphyWindow *ephy_window = EPHY_WINDOW (window);
+
+  gtk_window_present_with_time (window, 
ephy_window->present_on_insert_user_time);
+  ephy_window->present_on_insert_user_time = 0;
+
   return FALSE;
 }
 
@@ -2867,6 +2874,7 @@
   new_window = ephy_window_new ();
 
   new_window->present_on_insert = TRUE;
+  new_window->present_on_insert_user_time = gtk_get_current_event_time ();
 
   return ephy_window_get_notebook (new_window);
 }
diff -Nru epiphany-browser-3.31.91/src/prefs-dialog.c 
epiphany-browser-3.32.0/src/prefs-dialog.c
--- epiphany-browser-3.31.91/src/prefs-dialog.c 2019-02-18 23:48:01.000000000 
+0000
+++ epiphany-browser-3.32.0/src/prefs-dialog.c  2019-03-11 15:45:53.000000000 
+0000
@@ -677,7 +677,7 @@
   synced_tabs_dialog = synced_tabs_dialog_new (manager);
   gtk_window_set_transient_for (GTK_WINDOW (synced_tabs_dialog), GTK_WINDOW 
(dialog));
   gtk_window_set_modal (GTK_WINDOW (synced_tabs_dialog), TRUE);
-  gtk_window_present (GTK_WINDOW (synced_tabs_dialog));
+  gtk_window_present_with_time (GTK_WINDOW (synced_tabs_dialog), 
gtk_get_current_event_time ());
 }
 
 static void
@@ -885,7 +885,7 @@
   urls_dialog = ephy_webapp_additional_urls_dialog_new ();
   gtk_window_set_transient_for (GTK_WINDOW (urls_dialog), GTK_WINDOW (dialog));
   gtk_window_set_modal (GTK_WINDOW (urls_dialog), TRUE);
-  gtk_window_present (GTK_WINDOW (urls_dialog));
+  gtk_window_present_with_time (GTK_WINDOW (urls_dialog), 
gtk_get_current_event_time ());
 }
 
 static void
@@ -898,7 +898,7 @@
 
   gtk_window_set_transient_for (GTK_WINDOW (cookies_dialog), GTK_WINDOW 
(dialog));
   gtk_window_set_modal (GTK_WINDOW (cookies_dialog), TRUE);
-  gtk_window_present (GTK_WINDOW (cookies_dialog));
+  gtk_window_present_with_time (GTK_WINDOW (cookies_dialog), 
gtk_get_current_event_time ());
 }
 
 static void
@@ -913,7 +913,7 @@
 
   gtk_window_set_transient_for (GTK_WINDOW (passwords_dialog), GTK_WINDOW 
(dialog));
   gtk_window_set_modal (GTK_WINDOW (passwords_dialog), TRUE);
-  gtk_window_present (GTK_WINDOW (passwords_dialog));
+  gtk_window_present_with_time (GTK_WINDOW (passwords_dialog), 
gtk_get_current_event_time ());
 }
 
 static void
@@ -926,7 +926,7 @@
 
   gtk_window_set_transient_for (search_engine_dialog, GTK_WINDOW (dialog));
   gtk_window_set_modal (search_engine_dialog, TRUE);
-  gtk_window_present (search_engine_dialog);
+  gtk_window_present_with_time (search_engine_dialog, 
gtk_get_current_event_time ());
 }
 
 static gboolean
@@ -1410,7 +1410,7 @@
       (gpointer *)add_lang_dialog);
   }
 
-  gtk_window_present (GTK_WINDOW (pd->add_lang_dialog));
+  gtk_window_present_with_time (GTK_WINDOW (pd->add_lang_dialog), 
gtk_get_current_event_time ());
 }
 
 static void
@@ -1600,6 +1600,8 @@
       g_autofree char *normalized_locale = normalize_locale (code);
       if (normalized_locale != NULL) {
         g_autofree char *language_name = language_for_locale 
(normalized_locale);
+        if (language_name == NULL)
+          language_name = g_strdup (normalized_locale);
         language_editor_add (dialog, normalized_locale, language_name);
       }
     }
@@ -1708,7 +1710,7 @@
                                NULL);
   gtk_window_set_transient_for (GTK_WINDOW (clear_dialog), GTK_WINDOW 
(dialog));
   gtk_window_set_modal (GTK_WINDOW (clear_dialog), TRUE);
-  gtk_window_present (GTK_WINDOW (clear_dialog));
+  gtk_window_present_with_time (GTK_WINDOW (clear_dialog), 
gtk_get_current_event_time ());
 }
 
 static gboolean
diff -Nru epiphany-browser-3.31.91/src/resources/gtk/encoding-dialog.ui 
epiphany-browser-3.32.0/src/resources/gtk/encoding-dialog.ui
--- epiphany-browser-3.31.91/src/resources/gtk/encoding-dialog.ui       
2019-02-18 23:48:01.000000000 +0000
+++ epiphany-browser-3.32.0/src/resources/gtk/encoding-dialog.ui        
2019-03-11 15:45:53.000000000 +0000
@@ -86,6 +86,7 @@
                 <child>
                   <object class="GtkGrid" id="recent_grid">
                     <property name="visible">True</property>
+                    <property name="vexpand">True</property>
                     <property name="can_focus">False</property>
                     <property name="orientation">vertical</property>
                     <property name="row_spacing">8</property>
@@ -108,9 +109,9 @@
                     <child>
                       <object class="GtkFrame">
                         <property name="visible">True</property>
+                        <property name="vexpand">True</property>
                         <property name="can_focus">False</property>
                         <property name="hexpand">True</property>
-                        <property name="border_width">6</property>
                         <property name="label_xalign">0</property>
                         <property name="shadow_type">in</property>
                         <child>
@@ -220,6 +221,7 @@
                       <object class="GtkListBox" id="list_box">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
+                        <signal name="row-activated" 
handler="row_activated_cb"/>
                       </object>
                     </child>
                   </object>
diff -Nru epiphany-browser-3.31.91/src/resources/gtk/history-dialog.ui 
epiphany-browser-3.32.0/src/resources/gtk/history-dialog.ui
--- epiphany-browser-3.31.91/src/resources/gtk/history-dialog.ui        
2019-02-18 23:48:01.000000000 +0000
+++ epiphany-browser-3.32.0/src/resources/gtk/history-dialog.ui 2019-03-11 
15:45:53.000000000 +0000
@@ -117,62 +117,35 @@
       </object>
     </child>
   </template>
-  <object class="GtkPopoverMenu" id="popover_menu">
+  <object class="GtkMenu" id="popup_menu">
+    <property name="visible">True</property>
     <property name="can_focus">False</property>
-    <property name="border_width">6</property>
     <child>
-      <object class="GtkBox">
+      <object class="GtkMenuItem">
         <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="orientation">vertical</property>
-        <property name="spacing">6</property>
-        <child>
-          <object class="GtkModelButton">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <property name="action_name">history.open-selection</property>
-            <property name="text" translatable="yes">_Open</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkModelButton">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <property name="action_name">history.copy-url</property>
-            <property name="text" translatable="yes">_Copy Location</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkModelButton">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="receives_default">True</property>
-            <property name="action_name">history.forget</property>
-            <property name="text" translatable="yes">_Delete</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">True</property>
-            <property name="position">2</property>
-          </packing>
-        </child>
+        <property name="can_focus">True</property>
+        <property name="action_name">history.open-selection</property>
+        <property name="label" translatable="yes">_Open</property>
+        <property name="use_underline">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkMenuItem">
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="action_name">history.copy-url</property>
+        <property name="label" translatable="yes">_Copy Location</property>
+        <property name="use_underline">True</property>
+      </object>
+    </child>
+    <child>
+      <object class="GtkMenuItem">
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="action_name">history.forget</property>
+        <property name="label" translatable="yes">_Delete</property>
+        <property name="use_underline">True</property>
       </object>
-      <packing>
-        <property name="submenu">main</property>
-        <property name="position">1</property>
-      </packing>
     </child>
   </object>
 </interface>
diff -Nru epiphany-browser-3.31.91/src/resources/gtk/notebook-context-menu.ui 
epiphany-browser-3.32.0/src/resources/gtk/notebook-context-menu.ui
--- epiphany-browser-3.31.91/src/resources/gtk/notebook-context-menu.ui 
2019-02-18 23:48:01.000000000 +0000
+++ epiphany-browser-3.32.0/src/resources/gtk/notebook-context-menu.ui  
2019-03-11 15:45:53.000000000 +0000
@@ -15,10 +15,14 @@
         <attribute name="label" translatable="yes">_Duplicate</attribute>
         <attribute name="action">tab.duplicate</attribute>
       </item>
+    </section>
+    <section>
       <item>
         <attribute name="label" translatable="yes">Reo_pen Closed 
Tab</attribute>
         <attribute name="action">tab.reopen</attribute>
       </item>
+    </section>
+    <section>
       <item>
         <attribute name="label" translatable="yes">Close Tabs to the 
_Left</attribute>
         <attribute name="action">tab.close-left</attribute>
@@ -33,7 +37,7 @@
       </item>
       <item>
         <attribute name="label" translatable="yes">_Close</attribute>
-        <attribute name="action">tab.close</attribute>
+        <attribute name="action">tab.close-tab</attribute>
       </item>
     </section>
   </menu>
diff -Nru epiphany-browser-3.31.91/src/resources/gtk/page-row.ui 
epiphany-browser-3.32.0/src/resources/gtk/page-row.ui
--- epiphany-browser-3.31.91/src/resources/gtk/page-row.ui      2019-02-18 
23:48:01.000000000 +0000
+++ epiphany-browser-3.32.0/src/resources/gtk/page-row.ui       2019-03-11 
15:45:53.000000000 +0000
@@ -1,70 +1,109 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.1 -->
 <interface>
-  <!-- interface-requires gtk+ 3.16 -->
+  <requires lib="gtk+" version="3.16"/>
   <template class="EphyPageRow" parent="GtkListBoxRow">
+    <property name="can_focus">True</property>
     <child>
-      <object class="GtkBox" id="box">
+      <object class="GtkEventBox">
         <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <signal name="button-release-event" handler="button_release_event" 
swapped="no"/>
         <child>
-          <object class="GtkStack" id="icon_stack">
+          <object class="GtkBox" id="box">
             <property name="visible">True</property>
-            <property name="margin_start">4</property>
-            <property name="margin_end">4</property>
+            <property name="can_focus">False</property>
             <child>
-              <object class="GtkImage" id="icon">
-                <property name="icon_size">1</property>
+              <object class="GtkStack" id="icon_stack">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="margin_start">4</property>
+                <property name="margin_end">4</property>
+                <child>
+                  <object class="GtkImage" id="icon">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="icon_size">1</property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkSpinner" id="spinner">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                  </object>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
               </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
+              </packing>
             </child>
             <child>
-              <object class="GtkSpinner" id="spinner">
+              <object class="GtkLabel" id="title">
                 <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">start</property>
+                <property name="valign">center</property>
+                <property name="margin_start">4</property>
+                <property name="hexpand">True</property>
+                <property name="ellipsize">end</property>
+                <property name="single_line_mode">True</property>
+                <property name="xalign">0</property>
               </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
             </child>
-          </object>
-        </child>
-        <child>
-          <object class="GtkLabel" id="title">
-            <property name="ellipsize">end</property>
-            <property name="halign">start</property>
-            <property name="hexpand">True</property>
-            <property name="single_line_mode">True</property>
-            <property name="valign">center</property>
-            <property name="visible">True</property>
-            <property name="xalign">0</property>
-            <property name="margin_start">4</property>
-          </object>
-        </child>
-        <child>
-          <object class="GtkImage" id="speaker_icon">
-            <property name="icon_name">audio-volume-high-symbolic</property>
-            <property name="icon_size">1</property>
-            <property name="visible">True</property>
-            <property name="margin_start">8</property>
-          </object>
-        </child>
-        <child>
-          <object class="GtkButton" id="close_button">
-            <property name="can_focus">True</property>
-            <property name="focus_on_click">False</property>
-            <property name="halign">end</property>
-            <property name="relief">none</property>
-            <property name="tooltip-text" translatable="yes">Close 
page</property>
-            <property name="valign">center</property>
-            <property name="visible">True</property>
-            <signal name="clicked" handler="close_clicked_cb" swapped="yes"/>
-            <style>
-              <class name="flat"/>
-              <class name="image-button"/>
-              <class name="page-row-close-button"/>
-            </style>
             <child>
-              <object class="GtkImage">
+              <object class="GtkImage" id="speaker_icon">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="icon_name">window-close-symbolic</property>
+                <property name="margin_start">8</property>
+                <property 
name="icon_name">audio-volume-high-symbolic</property>
                 <property name="icon_size">1</property>
               </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkButton" id="close_button">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="focus_on_click">False</property>
+                <property name="receives_default">False</property>
+                <property name="tooltip_text" translatable="yes">Close 
page</property>
+                <property name="halign">end</property>
+                <property name="valign">center</property>
+                <property name="relief">none</property>
+                <signal name="clicked" handler="close_clicked_cb" 
swapped="yes"/>
+                <child>
+                  <object class="GtkImage">
+                    <property name="visible">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="icon_name">window-close-symbolic</property>
+                    <property name="icon_size">1</property>
+                  </object>
+                </child>
+                <style>
+                  <class name="flat"/>
+                  <class name="image-button"/>
+                  <class name="page-row-close-button"/>
+                </style>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">3</property>
+              </packing>
             </child>
           </object>
         </child>
diff -Nru epiphany-browser-3.31.91/src/window-commands.c 
epiphany-browser-3.32.0/src/window-commands.c
--- epiphany-browser-3.31.91/src/window-commands.c      2019-02-18 
23:48:01.000000000 +0000
+++ epiphany-browser-3.32.0/src/window-commands.c       2019-03-11 
15:45:53.000000000 +0000
@@ -499,7 +499,7 @@
   if (GTK_WINDOW (user_data) != gtk_window_get_transient_for (GTK_WINDOW 
(dialog)))
     gtk_window_set_transient_for (GTK_WINDOW (dialog),
                                   GTK_WINDOW (user_data));
-  gtk_window_present (GTK_WINDOW (dialog));
+  gtk_window_present_with_time (GTK_WINDOW (dialog), 
gtk_get_current_event_time ());
 }
 
 void
@@ -515,7 +515,7 @@
     gtk_window_set_transient_for (dialog,
                                   GTK_WINDOW (user_data));
 
-  gtk_window_present (dialog);
+  gtk_window_present_with_time (dialog, gtk_get_current_event_time ());
 }
 
 void
@@ -542,7 +542,7 @@
   if (gtk_window_get_transient_for (GTK_WINDOW (shortcuts_window)) != 
GTK_WINDOW (user_data))
     gtk_window_set_transient_for (GTK_WINDOW (shortcuts_window), GTK_WINDOW 
(user_data));
 
-  gtk_window_present (GTK_WINDOW (shortcuts_window));
+  gtk_window_present_with_time (GTK_WINDOW (shortcuts_window), 
gtk_get_current_event_time ());
 }
 
 void
@@ -2374,7 +2374,7 @@
   ephy_embed_container_add_child (EPHY_EMBED_CONTAINER (new_window), embed, 0, 
FALSE);
   g_object_unref (embed);
 
-  gtk_window_present (GTK_WINDOW (new_window));
+  gtk_window_present_with_time (GTK_WINDOW (new_window), 
gtk_get_current_event_time ());
 }
 
 void
diff -Nru 
epiphany-browser-3.31.91/subprojects/libhandy/data/packaging/rpm/libhandy.spec 
epiphany-browser-3.32.0/subprojects/libhandy/data/packaging/rpm/libhandy.spec
--- 
epiphany-browser-3.31.91/subprojects/libhandy/data/packaging/rpm/libhandy.spec  
    2019-02-18 23:48:04.000000000 +0000
+++ 
epiphany-browser-3.32.0/subprojects/libhandy/data/packaging/rpm/libhandy.spec   
    2019-03-11 15:45:55.000000000 +0000
@@ -1,7 +1,7 @@
 %global _vpath_srcdir %{name}
 
 Name:    libhandy
-Version: 0.0.8
+Version: 0.0.9
 Release: 1%{?dist}
 Summary: A library full of GTK+ widgets for mobile phones
 
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/debian/changelog 
epiphany-browser-3.32.0/subprojects/libhandy/debian/changelog
--- epiphany-browser-3.31.91/subprojects/libhandy/debian/changelog      
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/debian/changelog       
2019-03-11 15:45:55.000000000 +0000
@@ -1,3 +1,68 @@
+libhandy (0.0.9) experimental; urgency=medium
+
+  [ Benjamin Berg ]
+  * glade: Mark ActionRow properties as translatable/icon.
+    Without this, it is impossible to set the translatable flag in glade,
+    making it hard to create proper UI definitions.
+
+  [ Bastien Nocera ]
+  * Use correct i18n include.
+    From the Internationalization section of the GLib API docs:
+    In order to use these macros in an application, you must include
+    <glib/gi18n.h>. For use in a library, you must include <glib/gi18n-lib.h>
+    after defining the GETTEXT_PACKAGE macro suitably for your library
+  * Fix broken translations in all libhandy applications.
+    Translations in all the applications using libhandy would be broken
+    after a call to hdy_init() as it changed the default gettext translation
+    domain.
+    See https://gitlab.gnome.org/GNOME/gnome-control-center/issues/393
+
+  [ Adrien Plazas ]
+  * examples: Update the Flatpak command.
+    The command should changed with the demo application name.
+  * leaflet: Improve the slide child transition description.
+    This makes the slide child transition description match the one of the
+    slide mode transition one.
+  * action-row: Upcast self to check the activated row.
+    Upcast the HdyActionRow rather than downcasting the activated row to
+    compare their pointers. This prevents error messages when a sibbling row
+    that isn't a HdyActionRow is activated. Also use a simple cast rather
+    than a safe cast as it is there only to please the compiler and is
+    useless for a pointer comparison and it's faster.
+  * Drop 'dialer' from the UI resources path.
+    This makes the UI file paths more correct and simpler.
+  * leaflet: Add hdy_leaflet_stop_child_transition()
+    This makes the code clearer by encapsulating child mode transition
+    cancellation into its own function.
+  * leaflet: Factorize bin window move and resize.
+    This ensures we move or resize it consistently.
+  * leaflet: Move the bin window on child transition cancellation.
+    This avoids the children to be drawn out of place when a mode transition
+    is triggered while a child transition was ongoing.
+    Fixes https://source.puri.sm/Librem5/libhandy/issues/93
+  * Add HDY_STYLE_PROVIDER_PRIORITY.
+    Add and use HDY_STYLE_PROVIDER_PRIORITY to help ensuring custom styling
+    is applied consistently and correctly accross all the library.
+  * expander-row: Move the custom style to a resource.
+    This makes the code cleaner, easier to read, and simnpler to modify.
+  * combo-row: Move the custom style to a resource.
+    This makes the code cleaner, easier to read, and simnpler to modify.
+  * expander-row: Add the expanded property.
+    This can be used to reveal external widgets depending on the state of
+    the row.
+
+  [ Guido Günther ]
+  * debian: Test GObject introspection.
+    This makes sure we have the typelib file installed correctly.
+  * debian/tests: Drop API version from include.
+    This makes sure we respect pkg-config's findings.
+  * examples: Add API version to demo name.
+    This makes different versions co-installable.
+  * build: Don't hardcode API version
+  * Release libhandy 0.0.9
+
+ -- Guido Günther <a...@sigxcpu.org>  Thu, 07 Mar 2019 12:37:34 +0100
+
 libhandy (0.0.8) experimental; urgency=medium
 
   [ Adrien Plazas ]
diff -Nru 
epiphany-browser-3.31.91/subprojects/libhandy/debian/libhandy-0.0-0.symbols 
epiphany-browser-3.32.0/subprojects/libhandy/debian/libhandy-0.0-0.symbols
--- epiphany-browser-3.31.91/subprojects/libhandy/debian/libhandy-0.0-0.symbols 
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/debian/libhandy-0.0-0.symbols  
2019-03-11 15:45:55.000000000 +0000
@@ -69,10 +69,12 @@
  hdy_enum_value_object_new@LIBHANDY_0_0_0 0.0.6
  hdy_enum_value_row_name@LIBHANDY_0_0_0 0.0.6
  hdy_expander_row_get_enable_expansion@LIBHANDY_0_0_0 0.0.6
+ hdy_expander_row_get_expanded@LIBHANDY_0_0_0 0.0.9
  hdy_expander_row_get_show_enable_switch@LIBHANDY_0_0_0 0.0.6
  hdy_expander_row_get_type@LIBHANDY_0_0_0 0.0.6
  hdy_expander_row_new@LIBHANDY_0_0_0 0.0.6
  hdy_expander_row_set_enable_expansion@LIBHANDY_0_0_0 0.0.6
+ hdy_expander_row_set_expanded@LIBHANDY_0_0_0 0.0.9
  hdy_expander_row_set_show_enable_switch@LIBHANDY_0_0_0 0.0.6
  hdy_fold_get_type@LIBHANDY_0_0_0 0.0~git20180429
  hdy_header_group_add_header_bar@LIBHANDY_0_0_0 0.0.3
diff -Nru 
epiphany-browser-3.31.91/subprojects/libhandy/debian/tests/build-test.c 
epiphany-browser-3.32.0/subprojects/libhandy/debian/tests/build-test.c
--- epiphany-browser-3.31.91/subprojects/libhandy/debian/tests/build-test.c     
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/debian/tests/build-test.c      
2019-03-11 15:45:55.000000000 +0000
@@ -1,6 +1,6 @@
 #include <gtk/gtk.h>
 #define HANDY_USE_UNSTABLE_API
-#include <libhandy-0.0/handy.h>
+#include <handy.h>
 
 int
 main (int    argc,
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/debian/tests/control 
epiphany-browser-3.32.0/subprojects/libhandy/debian/tests/control
--- epiphany-browser-3.31.91/subprojects/libhandy/debian/tests/control  
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/debian/tests/control   
2019-03-11 15:45:55.000000000 +0000
@@ -2,3 +2,7 @@
 Depends: libhandy-0.0-dev, build-essential, pkg-config
 Restrictions: allow-stderr
 
+Tests: python-gi-test
+Depends: gir1.2-handy-0.0, python3-gi, python3
+Restrictions: allow-stderr
+
diff -Nru 
epiphany-browser-3.31.91/subprojects/libhandy/debian/tests/python-gi-test 
epiphany-browser-3.32.0/subprojects/libhandy/debian/tests/python-gi-test
--- epiphany-browser-3.31.91/subprojects/libhandy/debian/tests/python-gi-test   
1970-01-01 01:00:00.000000000 +0100
+++ epiphany-browser-3.32.0/subprojects/libhandy/debian/tests/python-gi-test    
2019-03-11 15:45:55.000000000 +0000
@@ -0,0 +1,13 @@
+#!/usr/bin/python3
+#
+# Make sure gobject introspection works
+
+import gi
+
+from gi.repository import GLib
+gi.require_version('Handy', '0.0')
+from gi.repository import Handy
+
+s = GLib.String().append("asdü")
+
+assert Handy.string_utf8_len(s) == 4
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/doc/meson.build 
epiphany-browser-3.32.0/subprojects/libhandy/doc/meson.build
--- epiphany-browser-3.31.91/subprojects/libhandy/doc/meson.build       
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/doc/meson.build        
2019-03-11 15:45:55.000000000 +0000
@@ -6,6 +6,7 @@
     'config.h',
     'gtkprogresstrackerprivate.h',
     'hdy-main-private.h',
+    'hdy-style-private.h',
 ]
 
 images = [
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/examples/meson.build 
epiphany-browser-3.32.0/subprojects/libhandy/examples/meson.build
--- epiphany-browser-3.31.91/subprojects/libhandy/examples/meson.build  
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/examples/meson.build   
2019-03-11 15:45:55.000000000 +0000
@@ -14,7 +14,8 @@
   libhandy_generated_headers,
 ]
 
-handy_demo = executable('handy-demo', handy_demo_sources,
+handy_demo = executable('handy-@0@-demo'.format(apiversion),
+  handy_demo_sources,
   dependencies: libhandy_dep,
   gui_app: true,
   install: installable,
diff -Nru 
epiphany-browser-3.31.91/subprojects/libhandy/examples/sm.puri.Handy.Demo.json 
epiphany-browser-3.32.0/subprojects/libhandy/examples/sm.puri.Handy.Demo.json
--- 
epiphany-browser-3.31.91/subprojects/libhandy/examples/sm.puri.Handy.Demo.json  
    2019-02-18 23:48:04.000000000 +0000
+++ 
epiphany-browser-3.32.0/subprojects/libhandy/examples/sm.puri.Handy.Demo.json   
    2019-03-11 15:45:55.000000000 +0000
@@ -3,7 +3,7 @@
   "runtime": "org.gnome.Platform",
   "runtime-version": "master",
   "sdk": "org.gnome.Sdk",
-  "command": "handy-demo",
+  "command": "handy-0.0-demo",
   "finish-args": [
     "--env=DCONF_USER_CONFIG_DIR=.config/dconf",
     "--share=ipc", "--socket=x11",
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/glade/libhandy.xml 
epiphany-browser-3.32.0/subprojects/libhandy/glade/libhandy.xml
--- epiphany-browser-3.31.91/subprojects/libhandy/glade/libhandy.xml    
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/glade/libhandy.xml     
2019-03-11 15:45:55.000000000 +0000
@@ -1,7 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <glade-catalog name="libhandy" library="glade-handy" depends="gtk+" 
book="libhandy">
   <glade-widget-classes>
-    <glade-widget-class name="HdyActionRow" generic-name="actionrow" 
title="Action Row" since="0.0.6"/>
+    <glade-widget-class name="HdyActionRow" generic-name="actionrow" 
title="Action Row" since="0.0.6">
+      <properties>
+        <property id="icon-name" themed-icon="True" />
+        <property id="title" translatable="True" />
+        <property id="subtitle" translatable="True" />
+      </properties>
+    </glade-widget-class>
     <glade-widget-class name="HdyArrows" generic-name="arrows" title="Arrows"/>
     <glade-widget-class name="HdyColumn" generic-name="column" title="Column"/>
     <glade-widget-class name="HdyComboRow" generic-name="comborow" 
title="Combo Row" since="0.0.6"/>
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/meson.build 
epiphany-browser-3.32.0/subprojects/libhandy/meson.build
--- epiphany-browser-3.31.91/subprojects/libhandy/meson.build   2019-02-18 
23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/meson.build    2019-03-11 
15:45:55.000000000 +0000
@@ -1,5 +1,5 @@
 project('libhandy', 'c',
-          version: '0.0.8',
+          version: '0.0.9',
           license: 'LGPL-2.1+',
     meson_version: '>= 0.47.0',
   default_options: [ 'warning_level=1', 'buildtype=debugoptimized', 
'c_std=gnu11' ],
diff -Nru 
epiphany-browser-3.31.91/subprojects/libhandy/src/handy.gresources.xml 
epiphany-browser-3.32.0/subprojects/libhandy/src/handy.gresources.xml
--- epiphany-browser-3.31.91/subprojects/libhandy/src/handy.gresources.xml      
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/handy.gresources.xml       
2019-03-11 15:45:55.000000000 +0000
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <gresources>
-  <gresource prefix="/sm/puri/handy/dialer/ui">
+  <gresource prefix="/sm/puri/handy/ui">
     <file preprocess="xml-stripblanks">hdy-action-row.ui</file>
     <file preprocess="xml-stripblanks">hdy-combo-row.ui</file>
     <file preprocess="xml-stripblanks">hdy-dialer.ui</file>
@@ -8,4 +8,8 @@
     <file preprocess="xml-stripblanks">hdy-expander-row.ui</file>
     <file preprocess="xml-stripblanks">hdy-search-bar.ui</file>
   </gresource>
+  <gresource prefix="/sm/puri/handy/style">
+    <file>hdy-combo-row-list.css</file>
+    <file>hdy-expander-row-arrow.css</file>
+  </gresource>
 </gresources>
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-action-row.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-action-row.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-action-row.c  
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-action-row.c   
2019-03-11 15:45:55.000000000 +0000
@@ -4,9 +4,10 @@
  * SPDX-License-Identifier: LGPL-2.1+
  */
 
+#include "config.h"
 #include "hdy-action-row.h"
 
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
 
 /**
  * SECTION:hdy-action-row
@@ -71,10 +72,11 @@
 static GParamSpec *props[LAST_PROP];
 
 static void
-row_activated_cb (HdyActionRow        *self,
+row_activated_cb (HdyActionRow  *self,
                   GtkListBoxRow *row)
 {
-  if (self == HDY_ACTION_ROW (row))
+  /* No need to use GTK_LIST_BOX_ROW() for a pointer comparison. */
+  if ((GtkListBoxRow *) self == row)
     hdy_action_row_activate (self);
 }
 
@@ -379,7 +381,7 @@
   g_object_class_install_properties (object_class, LAST_PROP, props);
 
   gtk_widget_class_set_template_from_resource (widget_class,
-                                               
"/sm/puri/handy/dialer/ui/hdy-action-row.ui");
+                                               
"/sm/puri/handy/ui/hdy-action-row.ui");
   gtk_widget_class_bind_template_child_private (widget_class, HdyActionRow, 
box);
   gtk_widget_class_bind_template_child_private (widget_class, HdyActionRow, 
header);
   gtk_widget_class_bind_template_child_private (widget_class, HdyActionRow, 
image);
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-arrows.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-arrows.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-arrows.c      
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-arrows.c       
2019-03-11 15:45:55.000000000 +0000
@@ -4,7 +4,8 @@
  * SPDX-License-Identifier: LGPL-2.1+
  */
 
-#include <glib/gi18n.h>
+#include "config.h"
+#include <glib/gi18n-lib.h>
 
 #include "hdy-arrows.h"
 #include "hdy-enums.h"
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-column.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-column.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-column.c      
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-column.c       
2019-03-11 15:45:55.000000000 +0000
@@ -4,9 +4,10 @@
  * SPDX-License-Identifier: LGPL-2.1+
  */
 
+#include "config.h"
 #include "hdy-column.h"
 
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
 #include <math.h>
 
 /**
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-combo-row.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-combo-row.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-combo-row.c   
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-combo-row.c    
2019-03-11 15:45:55.000000000 +0000
@@ -4,10 +4,12 @@
  * SPDX-License-Identifier: LGPL-2.1+
  */
 
+#include "config.h"
 #include "hdy-combo-row.h"
 
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
 #include "hdy-list-box.h"
+#include "hdy-style-private.h"
 
 /**
  * SECTION:hdy-combo-row
@@ -322,7 +324,7 @@
   g_object_class_install_properties (object_class, LAST_PROP, props);
 
   gtk_widget_class_set_template_from_resource (widget_class,
-                                               
"/sm/puri/handy/dialer/ui/hdy-combo-row.ui");
+                                               
"/sm/puri/handy/ui/hdy-combo-row.ui");
   gtk_widget_class_bind_template_child_private (widget_class, HdyComboRow, 
current);
   gtk_widget_class_bind_template_child_private (widget_class, HdyComboRow, 
image);
   gtk_widget_class_bind_template_child_private (widget_class, HdyComboRow, 
list);
@@ -335,12 +337,10 @@
   HdyComboRowPrivate *priv = hdy_combo_row_get_instance_private (self);
   g_autoptr (GtkCssProvider) provider = gtk_css_provider_new ();
 
-  /* This makes the list's background transparent. */
-  gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider),
-                                   "list { border-style: none; 
background-color: transparent; }", -1, NULL);
+  gtk_css_provider_load_from_resource (provider, 
"/sm/puri/handy/style/hdy-combo-row-list.css");
   gtk_style_context_add_provider (gtk_widget_get_style_context (GTK_WIDGET 
(priv->list)),
                                   GTK_STYLE_PROVIDER (provider),
-                                  GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+                                  HDY_STYLE_PROVIDER_PRIORITY);
 }
 
 static void
diff -Nru 
epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-combo-row-list.css 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-combo-row-list.css
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-combo-row-list.css    
1970-01-01 01:00:00.000000000 +0100
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-combo-row-list.css     
2019-03-11 15:45:55.000000000 +0000
@@ -0,0 +1,6 @@
+/* Make the list's background transparent. */
+
+list {
+  border-style: none;
+  background-color: transparent;
+}
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-dialer-button.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-dialer-button.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-dialer-button.c       
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-dialer-button.c        
2019-03-11 15:45:55.000000000 +0000
@@ -4,7 +4,8 @@
  * SPDX-License-Identifier: LGPL-2.1+
  */
 
-#include <glib/gi18n.h>
+#include "config.h"
+#include <glib/gi18n-lib.h>
 
 #include "hdy-dialer-button.h"
 
@@ -219,7 +220,7 @@
   g_object_class_install_properties (object_class, PROP_LAST_PROP, props);
 
   gtk_widget_class_set_template_from_resource (widget_class,
-                                               
"/sm/puri/handy/dialer/ui/hdy-dialer-button.ui");
+                                               
"/sm/puri/handy/ui/hdy-dialer-button.ui");
   gtk_widget_class_bind_template_child_private (widget_class, HdyDialerButton, 
label);
   gtk_widget_class_bind_template_child_private (widget_class, HdyDialerButton, 
secondary_label);
 }
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-dialer.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-dialer.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-dialer.c      
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-dialer.c       
2019-03-11 15:45:55.000000000 +0000
@@ -4,7 +4,8 @@
  * SPDX-License-Identifier: LGPL-2.1+
  */
 
-#include <glib/gi18n.h>
+#include "config.h"
+#include <glib/gi18n-lib.h>
 
 #include "hdy-dialer.h"
 #include "hdy-dialer-button.h"
@@ -503,7 +504,7 @@
                   G_TYPE_CHAR);
 
   gtk_widget_class_set_template_from_resource (widget_class,
-                                               
"/sm/puri/handy/dialer/ui/hdy-dialer.ui");
+                                               
"/sm/puri/handy/ui/hdy-dialer.ui");
   for (int i=0; i < 10; i++) {
     g_autofree gchar *name = g_strdup_printf("btn_%d", i);
     g_return_if_fail (name);
diff -Nru 
epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-dialer-cycle-button.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-dialer-cycle-button.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-dialer-cycle-button.c 
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-dialer-cycle-button.c  
2019-03-11 15:45:55.000000000 +0000
@@ -4,7 +4,8 @@
  * SPDX-License-Identifier: LGPL-2.1+
  */
 
-#include <glib/gi18n.h>
+#include "config.h"
+#include <glib/gi18n-lib.h>
 
 #include "hdy-dialer-cycle-button.h"
 
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-dialog.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-dialog.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-dialog.c      
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-dialog.c       
2019-03-11 15:45:55.000000000 +0000
@@ -4,7 +4,8 @@
  * SPDX-License-Identifier: LGPL-2.1+
  */
 
-#include <glib/gi18n.h>
+#include "config.h"
+#include <glib/gi18n-lib.h>
 
 #include "hdy-dialog.h"
 
diff -Nru 
epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-expander-row-arrow.css 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-expander-row-arrow.css
--- 
epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-expander-row-arrow.css    
    1970-01-01 01:00:00.000000000 +0100
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-expander-row-arrow.css 
2019-03-11 15:45:55.000000000 +0000
@@ -0,0 +1,17 @@
+/* Animate the arrow's rotation */
+
+row button:checked:dir(ltr) image,
+row button:checked:dir(rtl) image {
+  transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
+  -gtk-icon-transform: rotate(0turn);
+}
+
+row button:not(checked):dir(ltr) image {
+  transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
+  -gtk-icon-transform: rotate(-0.25turn);
+}
+
+row button:not(checked):dir(rtl) image {
+  transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 0.94);
+  -gtk-icon-transform: rotate(0.25turn);
+}
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-expander-row.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-expander-row.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-expander-row.c        
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-expander-row.c 
2019-03-11 15:45:55.000000000 +0000
@@ -4,9 +4,11 @@
  * SPDX-License-Identifier: LGPL-2.1+
  */
 
+#include "config.h"
 #include "hdy-expander-row.h"
 
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
+#include "hdy-style-private.h"
 
 /**
  * SECTION:hdy-expander-row
@@ -29,6 +31,7 @@
   GtkRevealer *revealer;
   GtkSeparator *separator;
 
+  gboolean expanded;
   gboolean enable_expansion;
   gboolean show_enable_switch;
 } HdyExpanderRowPrivate;
@@ -37,13 +40,12 @@
 
 enum {
   PROP_0,
+  PROP_EXPANDED,
   PROP_ENABLE_EXPANSION,
   PROP_SHOW_ENABLE_SWITCH,
   LAST_PROP,
 };
 
-#define ANIMATION_TRANSITION "transition: 200ms cubic-bezier(0.25, 0.46, 0.45, 
0.94);\n"
-
 static GParamSpec *props[LAST_PROP];
 
 static void
@@ -51,37 +53,25 @@
 {
   HdyExpanderRowPrivate *priv = hdy_expander_row_get_instance_private (self);
   g_autoptr (GtkCssProvider) provider = gtk_css_provider_new ();
-  static const gchar *style =
-    "row button:checked:dir(ltr) image,\n"
-    "row button:checked:dir(rtl) image {\n"
-    ANIMATION_TRANSITION
-    "  -gtk-icon-transform: rotate(0turn);\n"
-    "}\n"
-    "row button:not(checked):dir(ltr) image {\n"
-    ANIMATION_TRANSITION
-    "  -gtk-icon-transform: rotate(-0.25turn);\n"
-    "}\n"
-    "row button:not(checked):dir(rtl) image {\n"
-    ANIMATION_TRANSITION
-    "  -gtk-icon-transform: rotate(0.25turn);\n"
-    "}";
 
-  /* This animated the arrow's roation. */
-  gtk_css_provider_load_from_data (GTK_CSS_PROVIDER (provider), style, -1, 
NULL);
+  gtk_css_provider_load_from_resource (provider, 
"/sm/puri/handy/style/hdy-expander-row-arrow.css");
   gtk_style_context_add_provider (gtk_widget_get_style_context (GTK_WIDGET 
(priv->image)),
                                   GTK_STYLE_PROVIDER (provider),
-                                  GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+                                  HDY_STYLE_PROVIDER_PRIORITY);
 }
 
 static void
 hdy_expander_row_get_property (GObject    *object,
-                                      guint       prop_id,
-                                      GValue     *value,
-                                      GParamSpec *pspec)
+                               guint       prop_id,
+                               GValue     *value,
+                               GParamSpec *pspec)
 {
   HdyExpanderRow *self = HDY_EXPANDER_ROW (object);
 
   switch (prop_id) {
+  case PROP_EXPANDED:
+    g_value_set_boolean (value, hdy_expander_row_get_expanded (self));
+    break;
   case PROP_ENABLE_EXPANSION:
     g_value_set_boolean (value, hdy_expander_row_get_enable_expansion (self));
     break;
@@ -95,13 +85,16 @@
 
 static void
 hdy_expander_row_set_property (GObject      *object,
-                                      guint         prop_id,
-                                      const GValue *value,
-                                      GParamSpec   *pspec)
+                               guint         prop_id,
+                               const GValue *value,
+                               GParamSpec   *pspec)
 {
   HdyExpanderRow *self = HDY_EXPANDER_ROW (object);
 
   switch (prop_id) {
+  case PROP_EXPANDED:
+    hdy_expander_row_set_expanded (self, g_value_get_boolean (value));
+    break;
   case PROP_ENABLE_EXPANSION:
     hdy_expander_row_set_enable_expansion (self, g_value_get_boolean (value));
     break;
@@ -191,7 +184,7 @@
   HdyExpanderRow *self = HDY_EXPANDER_ROW (row);
   HdyExpanderRowPrivate *priv = hdy_expander_row_get_instance_private (self);
 
-  gtk_revealer_set_reveal_child (priv->revealer, priv->enable_expansion);
+  hdy_expander_row_set_expanded (self, priv->enable_expansion);
 
   HDY_ACTION_ROW_CLASS (hdy_expander_row_parent_class)->activate (row);
 }
@@ -215,6 +208,18 @@
   row_class->activate = hdy_expander_row_activate;
 
   /**
+   * HdyExpanderRow:expanded:
+   *
+   * %TRUE if the row is expanded.
+   */
+  props[PROP_EXPANDED] =
+    g_param_spec_boolean ("expanded",
+                          _("Expanded"),
+                          _("Whether the row is expanded"),
+                          FALSE,
+                          G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY);
+
+  /**
    * HdyExpanderRow:enable-expansion:
    *
    * %TRUE if the expansion is enabled.
@@ -241,7 +246,7 @@
   g_object_class_install_properties (object_class, LAST_PROP, props);
 
   gtk_widget_class_set_template_from_resource (widget_class,
-                                               
"/sm/puri/handy/dialer/ui/hdy-expander-row.ui");
+                                               
"/sm/puri/handy/ui/hdy-expander-row.ui");
   gtk_widget_class_bind_template_child_private (widget_class, HdyExpanderRow, 
box);
   gtk_widget_class_bind_template_child_private (widget_class, HdyExpanderRow, 
button);
   gtk_widget_class_bind_template_child_private (widget_class, HdyExpanderRow, 
image);
@@ -258,8 +263,8 @@
   gtk_widget_init_template (GTK_WIDGET (self));
 
   arrow_init (self);
-
-  priv->enable_expansion = TRUE;
+  hdy_expander_row_set_enable_expansion (self, TRUE);
+  hdy_expander_row_set_expanded (self, FALSE);
 
   g_object_bind_property (self, "show-enable-switch", priv->separator, 
"visible", G_BINDING_SYNC_CREATE);
   g_object_bind_property (self, "show-enable-switch", priv->enable_switch, 
"visible", G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
@@ -283,6 +288,40 @@
   return g_object_new (HDY_TYPE_EXPANDER_ROW, NULL);
 }
 
+gboolean
+hdy_expander_row_get_expanded (HdyExpanderRow *self)
+{
+  HdyExpanderRowPrivate *priv;
+
+  g_return_val_if_fail (HDY_IS_EXPANDER_ROW (self), FALSE);
+
+  priv = hdy_expander_row_get_instance_private (self);
+
+  return priv->expanded;
+}
+
+void
+hdy_expander_row_set_expanded (HdyExpanderRow *self,
+                               gboolean        expanded)
+{
+  HdyExpanderRowPrivate *priv;
+
+  g_return_if_fail (HDY_IS_EXPANDER_ROW (self));
+
+  priv = hdy_expander_row_get_instance_private (self);
+
+  expanded = !!expanded && priv->enable_expansion;
+
+  if (priv->expanded == expanded)
+    return;
+
+  priv->expanded = expanded;
+
+  gtk_revealer_set_reveal_child (priv->revealer, expanded);
+
+  g_object_notify_by_pspec (G_OBJECT (self), props[PROP_EXPANDED]);
+}
+
 /**
  * hdy_expander_row_get_enable_expansion:
  * @self: a #HdyExpanderRow
@@ -329,7 +368,7 @@
 
   priv->enable_expansion = !!enable_expansion;
 
-  gtk_revealer_set_reveal_child (priv->revealer, priv->enable_expansion);
+  hdy_expander_row_set_expanded (self, priv->enable_expansion);
 
   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ENABLE_EXPANSION]);
 }
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-expander-row.h 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-expander-row.h
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-expander-row.h        
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-expander-row.h 
2019-03-11 15:45:55.000000000 +0000
@@ -30,6 +30,10 @@
 
 HdyExpanderRow *hdy_expander_row_new (void);
 
+gboolean hdy_expander_row_get_expanded (HdyExpanderRow *self);
+void     hdy_expander_row_set_expanded (HdyExpanderRow *self,
+                                        gboolean        expanded);
+
 gboolean hdy_expander_row_get_enable_expansion (HdyExpanderRow *self);
 void     hdy_expander_row_set_enable_expansion (HdyExpanderRow *self,
                                                 gboolean        
enable_expansion);
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-fold.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-fold.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-fold.c        
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-fold.c 2019-03-11 
15:45:55.000000000 +0000
@@ -4,6 +4,7 @@
  * SPDX-License-Identifier: LGPL-2.1+
  */
 
+#include "config.h"
 #include "hdy-fold.h"
 
 /**
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-header-group.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-header-group.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-header-group.c        
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-header-group.c 
2019-03-11 15:45:55.000000000 +0000
@@ -4,7 +4,8 @@
  * SPDX-License-Identifier: LGPL-2.1+
  */
 
-#include <glib/gi18n.h>
+#include "config.h"
+#include <glib/gi18n-lib.h>
 
 #include "hdy-header-group.h"
 
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-leaflet.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-leaflet.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-leaflet.c     
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-leaflet.c      
2019-03-11 15:45:55.000000000 +0000
@@ -4,7 +4,8 @@
  * SPDX-License-Identifier: LGPL-2.1+
  */
 
-#include <glib/gi18n.h>
+#include "config.h"
+#include <glib/gi18n-lib.h>
 
 #include "gtkprogresstrackerprivate.h"
 #include "hdy-leaflet.h"
@@ -44,7 +45,7 @@
  * HdyLeafletChildTransitionType:
  * @HDY_LEAFLET_CHILD_TRANSITION_TYPE_NONE: No transition
  * @HDY_LEAFLET_CHILD_TRANSITION_TYPE_CROSSFADE: A cross-fade
- * @HDY_LEAFLET_CHILD_TRANSITION_TYPE_SLIDE: Slide from left, right, up or 
down according to orientation, text direction and order
+ * @HDY_LEAFLET_CHILD_TRANSITION_TYPE_SLIDE: Slide from left, right, up or 
down according to the orientation, text direction and the children order
  * @HDY_LEAFLET_CHILD_TRANSITION_TYPE_OVER: Cover the old page or uncover the 
new page, sliding from or towards the end according to orientation, text 
direction and children order
  * @HDY_LEAFLET_CHILD_TRANSITION_TYPE_UNDER: Uncover the new page or cover the 
old page, sliding from or towards the start according to orientation, text 
direction and children order
  *
@@ -119,6 +120,8 @@
 
   GtkOrientation orientation;
 
+  gboolean move_bin_window_request;
+
   struct {
     HdyLeafletModeTransitionType type;
     guint duration;
@@ -327,6 +330,39 @@
 }
 
 static void
+move_resize_bin_window (HdyLeaflet    *self,
+                        GtkAllocation *allocation,
+                        gboolean       resize)
+{
+  HdyLeafletPrivate *priv = hdy_leaflet_get_instance_private (self);
+  GtkAllocation alloc;
+  gboolean move;
+
+  if (priv->bin_window == NULL)
+    return;
+
+  if (allocation == NULL) {
+    gtk_widget_get_allocation (GTK_WIDGET (self), &alloc);
+    allocation = &alloc;
+  }
+
+  move = priv->move_bin_window_request || is_window_moving_child_transition 
(self);
+
+  if (move && resize)
+    gdk_window_move_resize (priv->bin_window,
+                            get_bin_window_x (self, allocation), 
get_bin_window_y (self, allocation),
+                            allocation->width, allocation->height);
+  else if (move)
+    gdk_window_move (priv->bin_window,
+                     get_bin_window_x (self, allocation), get_bin_window_y 
(self, allocation));
+  else if (resize)
+    gdk_window_resize (priv->bin_window,
+                       allocation->width, allocation->height);
+
+  priv->move_bin_window_request = FALSE;
+}
+
+static void
 hdy_leaflet_child_progress_updated (HdyLeaflet *self)
 {
   HdyLeafletPrivate *priv = hdy_leaflet_get_instance_private (self);
@@ -337,12 +373,7 @@
       !priv->homogeneous[HDY_FOLD_FOLDED][GTK_ORIENTATION_HORIZONTAL])
     gtk_widget_queue_resize (GTK_WIDGET (self));
 
-  if (priv->bin_window != NULL && is_window_moving_child_transition (self)) {
-    GtkAllocation allocation;
-    gtk_widget_get_allocation (GTK_WIDGET (self), &allocation);
-    gdk_window_move (priv->bin_window,
-                     get_bin_window_x (self, &allocation), get_bin_window_y 
(self, &allocation));
-  }
+  move_resize_bin_window (self, NULL, FALSE);
 
   if (gtk_progress_tracker_get_state (&priv->child_transition.tracker) == 
GTK_PROGRESS_STATE_AFTER) {
     if (priv->child_transition.last_visible_surface != NULL) {
@@ -413,6 +444,27 @@
 }
 
 static void
+hdy_leaflet_stop_child_transition (HdyLeaflet *self)
+{
+  HdyLeafletPrivate *priv = hdy_leaflet_get_instance_private (self);
+
+  hdy_leaflet_unschedule_child_ticks (self);
+  priv->child_transition.active_type = HDY_LEAFLET_CHILD_TRANSITION_TYPE_NONE;
+  gtk_progress_tracker_finish (&priv->child_transition.tracker);
+  if (priv->child_transition.last_visible_surface != NULL) {
+    cairo_surface_destroy (priv->child_transition.last_visible_surface);
+    priv->child_transition.last_visible_surface = NULL;
+  }
+  if (priv->last_visible_child != NULL) {
+    gtk_widget_set_child_visible (priv->last_visible_child->widget, FALSE);
+    priv->last_visible_child = NULL;
+  }
+
+  /* Move the bin window back in place as a child transition might have moved 
it. */
+  priv->move_bin_window_request = TRUE;
+}
+
+static void
 hdy_leaflet_start_child_transition (HdyLeaflet                    *self,
                                     HdyLeafletChildTransitionType  
transition_type,
                                     guint                          
transition_duration,
@@ -679,18 +731,7 @@
   /* FIXME PROP_REVEAL_CHILD needs to be implemented. */
   /* g_object_notify_by_pspec (G_OBJECT (revealer), props[PROP_REVEAL_CHILD]); 
*/
 
-  /* Stop the ongoing child transition, */
-  hdy_leaflet_unschedule_child_ticks (self);
-  priv->child_transition.active_type = HDY_LEAFLET_CHILD_TRANSITION_TYPE_NONE;
-  gtk_progress_tracker_finish (&priv->child_transition.tracker);
-  if (priv->child_transition.last_visible_surface != NULL) {
-    cairo_surface_destroy (priv->child_transition.last_visible_surface);
-    priv->child_transition.last_visible_surface = NULL;
-  }
-  if (priv->last_visible_child != NULL) {
-    gtk_widget_set_child_visible (priv->last_visible_child->widget, FALSE);
-    priv->last_visible_child = NULL;
-  }
+  hdy_leaflet_stop_child_transition (self);
 
   transition = priv->mode_transition.type;
   if (gtk_widget_get_mapped (widget) &&
@@ -1790,13 +1831,7 @@
     gdk_window_move_resize (priv->view_window,
                             allocation->x, allocation->y,
                             allocation->width, allocation->height);
-    if (priv->bin_window != NULL && is_window_moving_child_transition (self))
-      gdk_window_move_resize (priv->bin_window,
-                              get_bin_window_x (self, allocation), 
get_bin_window_y (self, allocation),
-                              allocation->width, allocation->height);
-    else
-      gdk_window_resize (priv->bin_window,
-                         allocation->width, allocation->height);
+    move_resize_bin_window (self, allocation, TRUE);
   }
 
   /* Prepare children information. */
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-list-box.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-list-box.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-list-box.c    
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-list-box.c     
2019-03-11 15:45:55.000000000 +0000
@@ -4,9 +4,10 @@
  * SPDX-License-Identifier: LGPL-2.1+
  */
 
+#include "config.h"
 #include "hdy-list-box.h"
 
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
 
 /**
  * SECTION:hdy-list-box
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-main.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-main.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-main.c        
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-main.c 2019-03-11 
15:45:55.000000000 +0000
@@ -6,7 +6,7 @@
 #include "config.h"
 #include "hdy-main-private.h"
 #include <gio/gio.h>
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
 
 static gint hdy_initialized = FALSE;
 
@@ -42,7 +42,6 @@
   if (hdy_initialized)
     return TRUE;
 
-  textdomain (GETTEXT_PACKAGE);
   bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
   bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
   g_resources_register (hdy_get_resource ());
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-search-bar.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-search-bar.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-search-bar.c  
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-search-bar.c   
2019-03-11 15:45:55.000000000 +0000
@@ -41,7 +41,8 @@
  * the fork.
  */
 
-#include <glib/gi18n.h>
+#include "config.h"
+#include <glib/gi18n-lib.h>
 
 #include "hdy-search-bar.h"
 
@@ -469,7 +470,7 @@
   g_object_class_install_properties (object_class, LAST_PROPERTY, props);
 
   gtk_widget_class_set_template_from_resource (widget_class,
-                                               
"/sm/puri/handy/dialer/ui/hdy-search-bar.ui");
+                                               
"/sm/puri/handy/ui/hdy-search-bar.ui");
   gtk_widget_class_bind_template_child_private (widget_class, HdySearchBar, 
tool_box);
   gtk_widget_class_bind_template_child_private (widget_class, HdySearchBar, 
revealer);
   gtk_widget_class_bind_template_child_private (widget_class, HdySearchBar, 
close_button);
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-style-private.h 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-style-private.h
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-style-private.h       
1970-01-01 01:00:00.000000000 +0100
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-style-private.h        
2019-03-11 15:45:55.000000000 +0000
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2019 Purism SPC
+ *
+ * SPDX-License-Identifier: LGPL-2.1+
+ */
+
+#pragma once
+
+#if !defined(_HANDY_INSIDE) && !defined(HANDY_COMPILATION)
+#error "Only <handy.h> can be included directly."
+#endif
+
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+/* The style provider priority to use for libhandy widgets custom styling. It 
is
+ * higher than settings but lower than applications, so application developers
+ * can nonetheless apply custom styling on top of it. */
+#define HDY_STYLE_PROVIDER_PRIORITY (GTK_STYLE_PROVIDER_PRIORITY_SETTINGS + 1)
+
+G_END_DECLS
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-title-bar.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-title-bar.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-title-bar.c   
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-title-bar.c    
2019-03-11 15:45:55.000000000 +0000
@@ -4,9 +4,10 @@
  * SPDX-License-Identifier: LGPL-2.1+
  */
 
+#include "config.h"
 #include "hdy-title-bar.h"
 
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
 
 /**
  * SECTION:hdy-title-bar
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-value-object.c 
epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-value-object.c
--- epiphany-browser-3.31.91/subprojects/libhandy/src/hdy-value-object.c        
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/hdy-value-object.c 
2019-03-11 15:45:55.000000000 +0000
@@ -4,7 +4,8 @@
  * SPDX-License-Identifier: LGPL-2.1+
  */
 
-#include <glib/gi18n.h>
+#include "config.h"
+#include <glib/gi18n-lib.h>
 #include <gobject/gvaluecollector.h>
 #include "hdy-value-object.h"
 
diff -Nru epiphany-browser-3.31.91/subprojects/libhandy/src/meson.build 
epiphany-browser-3.32.0/subprojects/libhandy/src/meson.build
--- epiphany-browser-3.31.91/subprojects/libhandy/src/meson.build       
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/src/meson.build        
2019-03-11 15:45:55.000000000 +0000
@@ -196,7 +196,7 @@
                  sources: libhandy_generated_headers + libhandy_public_headers 
+ libhandy_public_sources,
                nsversion: apiversion,
                namespace: 'Handy',
-               export_packages: 'libhandy-0.0',
+               export_packages: 'libhandy-@0@'.format(apiversion),
            symbol_prefix: 'hdy',
        identifier_prefix: 'Hdy',
                link_with: libhandy,
diff -Nru 
epiphany-browser-3.31.91/subprojects/libhandy/tests/test-expander-row.c 
epiphany-browser-3.32.0/subprojects/libhandy/tests/test-expander-row.c
--- epiphany-browser-3.31.91/subprojects/libhandy/tests/test-expander-row.c     
2019-02-18 23:48:04.000000000 +0000
+++ epiphany-browser-3.32.0/subprojects/libhandy/tests/test-expander-row.c      
2019-03-11 15:45:55.000000000 +0000
@@ -9,6 +9,24 @@
 
 
 static void
+test_hdy_expander_row_expanded (void)
+{
+  g_autoptr (HdyExpanderRow) row = NULL;
+
+  row = g_object_ref_sink (HDY_EXPANDER_ROW (hdy_expander_row_new ()));
+  g_assert_nonnull (row);
+
+  g_assert_false (hdy_expander_row_get_expanded (row));
+
+  hdy_expander_row_set_expanded (row, TRUE);
+  g_assert_true (hdy_expander_row_get_expanded (row));
+
+  hdy_expander_row_set_expanded (row, FALSE);
+  g_assert_false (hdy_expander_row_get_expanded (row));
+}
+
+
+static void
 test_hdy_expander_row_enable_expansion (void)
 {
   g_autoptr (HdyExpanderRow) row = NULL;
@@ -17,12 +35,21 @@
   g_assert_nonnull (row);
 
   g_assert_true (hdy_expander_row_get_enable_expansion (row));
+  g_assert_false (hdy_expander_row_get_expanded (row));
+
+  hdy_expander_row_set_expanded (row, TRUE);
+  g_assert_true (hdy_expander_row_get_expanded (row));
 
   hdy_expander_row_set_enable_expansion (row, FALSE);
   g_assert_false (hdy_expander_row_get_enable_expansion (row));
+  g_assert_false (hdy_expander_row_get_expanded (row));
+
+  hdy_expander_row_set_expanded (row, TRUE);
+  g_assert_false (hdy_expander_row_get_expanded (row));
 
   hdy_expander_row_set_enable_expansion (row, TRUE);
   g_assert_true (hdy_expander_row_get_enable_expansion (row));
+  g_assert_true (hdy_expander_row_get_expanded (row));
 }
 
 
@@ -51,6 +78,7 @@
   gtk_test_init (&argc, &argv, NULL);
   hdy_init (&argc, &argv);
 
+  g_test_add_func("/Handy/ExpanderRow/expanded", 
test_hdy_expander_row_expanded);
   g_test_add_func("/Handy/ExpanderRow/enable_expansion", 
test_hdy_expander_row_enable_expansion);
   g_test_add_func("/Handy/ExpanderRow/show_enable_switch", 
test_hdy_expander_row_show_enable_switch);
 
diff -Nru epiphany-browser-3.31.91/tests/meson.build 
epiphany-browser-3.32.0/tests/meson.build
--- epiphany-browser-3.31.91/tests/meson.build  2019-02-18 23:48:01.000000000 
+0000
+++ epiphany-browser-3.32.0/tests/meson.build   2019-03-11 15:45:53.000000000 
+0000
@@ -5,7 +5,7 @@
   'GSETTINGS_BACKEND=memory',
 ]
 
-if get_option('unit_tests')
+if get_option('unit_tests').enabled()
   # FIXME: The tests that need ephy-test-utils are all disabled....
   #
   # libephytestutils = static_library('ephytestutils',
@@ -64,16 +64,6 @@
        env: envs
   )
 
-  gsb_service_test = executable('test-ephy-gsb-service',
-    'ephy-gsb-service-test.c',
-    dependencies: ephymain_dep
-  )
-  test('GSB service test',
-       gsb_service_test,
-       env: envs,
-       timeout: 90 # slow!
-  )
-
   history_test = executable('test-ephy-history',
     'ephy-history-test.c',
     dependencies: ephymain_dep
@@ -178,4 +168,16 @@
   #      web_view_test,
   #      env: envs
   # )
+
+  if get_option('network_tests').enabled()
+    gsb_service_test = executable('test-ephy-gsb-service',
+      'ephy-gsb-service-test.c',
+      dependencies: ephymain_dep
+    )
+    test('GSB service test',
+         gsb_service_test,
+         env: envs,
+         timeout: 90 # slow!
+    )
+  endif
 endif

Reply via email to