Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package epiphany for openSUSE:Factory checked in at 2023-07-05 15:31:16 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/epiphany (Old) and /work/SRC/openSUSE:Factory/.epiphany.new.23466 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "epiphany" Wed Jul 5 15:31:16 2023 rev:202 rq:1096872 version:44.5 Changes: -------- --- /work/SRC/openSUSE:Factory/epiphany/epiphany.changes 2023-05-29 22:47:58.982362713 +0200 +++ /work/SRC/openSUSE:Factory/.epiphany.new.23466/epiphany.changes 2023-07-05 15:31:33.942924282 +0200 @@ -1,0 +2,21 @@ +Fri Jun 30 14:17:31 UTC 2023 - Bjørn Lie <bjorn....@gmail.com> + +- Update to version 44.5: + + Fix Sync Now button appearing when Firefox Sync is not enabled, + leading to crash. + +------------------------------------------------------------------- +Fri Jun 30 07:49:44 UTC 2023 - Bjørn Lie <bjorn....@gmail.com> + +- Update to version 44.4: + + Bring back URL scheme in address bar, fixing incorrect URLs + loaded in narrow mode. + + Fix duplicate permission requests. + + Fix changing web app title and URL with preferences dialog. + + Fix failure to create web app when no icon or favicon is + available. + + Fix address bar stealing mouse clicks. + + Fix broken Mute Tab context menu item. + + Fix critical when creating WebExtension web view. + +------------------------------------------------------------------- Old: ---- epiphany-44.3.tar.xz New: ---- epiphany-44.5.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ epiphany.spec ++++++ --- /var/tmp/diff_new_pack.JYQDJP/_old 2023-07-05 15:31:34.634928388 +0200 +++ /var/tmp/diff_new_pack.JYQDJP/_new 2023-07-05 15:31:34.638928411 +0200 @@ -17,7 +17,7 @@ Name: epiphany -Version: 44.3 +Version: 44.5 Release: 0 Summary: GNOME Web Browser License: GPL-3.0-or-later ++++++ epiphany-44.3.tar.xz -> epiphany-44.5.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/epiphany-44.3/.gitlab-ci.yml new/epiphany-44.5/.gitlab-ci.yml --- old/epiphany-44.3/.gitlab-ci.yml 2023-05-25 22:12:49.000000000 +0200 +++ new/epiphany-44.5/.gitlab-ci.yml 2023-06-30 15:07:16.000000000 +0200 @@ -1,11 +1,18 @@ include: - - remote: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml' - - remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/3d80a75e1284935e69219bfa80bc6064c6786819/templates/alpine.yml' + - remote: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml' + - remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/3d80a75e1284935e69219bfa80bc6064c6786819/templates/alpine.yml' cache: paths: - _ccache/ +# This workflow disables merge request pipelines. Use only branch pipelines. +# https://docs.gitlab.com/ee/ci/yaml/workflow.html +workflow: + rules: + - if: '$CI_COMMIT_TAG' + - if: '$CI_COMMIT_BRANCH' + variables: BUNDLE: 'epiphany-git.flatpak' MANIFEST_PATH: 'org.gnome.Epiphany.json' @@ -43,12 +50,15 @@ uncrustify FDO_DISTRIBUTION_EXEC: >- npm install -g eslint + rules: + - if: $CI_COMMIT_BRANCH !~ /gnome-\d\d+/ check-code-style: extends: - '.fdo.distribution-image@alpine' - '.alpine.container.common' stage: 'test' + needs: [ 'build.container.alpine@x86_64' ] interruptible: true script: - bash data/check-code-style @@ -56,14 +66,15 @@ paths: - ${ESLINT_LOG} when: on_failure - except: - - gnome-* + rules: + - if: $CI_COMMIT_BRANCH !~ /gnome-\d\d+/ eslint: extends: - '.fdo.distribution-image@alpine' - '.alpine.container.common' stage: 'test' + needs: [ 'build.container.alpine@x86_64' ] interruptible: true script: - eslint -o eslint-report.txt --no-color embed/web-process-extension/resources/js/ || { cat $ESLINT_LOG; false; } @@ -71,57 +82,38 @@ paths: - ${ESLINT_LOG} when: on_failure - except: - - gnome-* + rules: + - if: $CI_COMMIT_BRANCH !~ /gnome-\d\d+/ + +.flatpak rules: + rules: + - if: $CI_COMMIT_BRANCH =~ /gnome-\d\d+/ + variables: + CONFIG_OPTS: '-Dprofile=Devel -Dunit_tests=enabled -Dgsb_api_key=${GSB_API_KEY} -Dgranite=enabled' + - if: $CI_COMMIT_BRANCH == "master" + variables: + CONFIG_OPTS: '-Dtech_preview=true -Dprofile=Devel -Dunit_tests=enabled -Dgsb_api_key=${GSB_API_KEY} -Dgranite=enabled' + - if: $CI_COMMIT_BRANCH !~ /gnome-\d\d+/ && $CI_COMMIT_BRANCH != "master" + variables: + CONFIG_OPTS: '-Dprofile=Devel -Dunit_tests=enabled -Dgsb_api_key=${GSB_API_KEY} -Dgranite=enabled --werror' flatpak: - extends: '.flatpak' - variables: - CONFIG_OPTS: '-Dprofile=Devel -Dunit_tests=enabled -Dgsb_api_key=${GSB_API_KEY} --werror' - except: - - master - - gnome-* + extends: + - '.flatpak' + - '.flatpak rules' + needs: [] flatpak aarch64: - extends: '.flatpak@aarch64' - variables: - CONFIG_OPTS: '-Dprofile=Devel -Dunit_tests=enabled -Dgsb_api_key=${GSB_API_KEY} --werror' - except: - - master - - gnome-* - -flatpak stable: - extends: '.flatpak' - variables: - CONFIG_OPTS: '-Dprofile=Devel -Dunit_tests=enabled -Dgsb_api_key=${GSB_API_KEY} -Dsoup2=enabled' - only: - - gnome-* - -flatpak aarch64 stable: - extends: '.flatpak@aarch64' - variables: - CONFIG_OPTS: '-Dprofile=Devel -Dunit_tests=enabled -Dgsb_api_key=${GSB_API_KEY} -Dsoup2=enabled' - only: - - gnome-* - -flatpak master: - extends: '.flatpak' - variables: - CONFIG_OPTS: '-Dtech_preview=true -Dprofile=Devel -Dunit_tests=enabled -Dgsb_api_key=${GSB_API_KEY}' - only: - - master - -flatpak aarch64 master: - extends: '.flatpak@aarch64' - variables: - CONFIG_OPTS: '-Dtech_preview=true -Dprofile=Devel -Dunit_tests=enabled -Dgsb_api_key=${GSB_API_KEY}' - only: - - master + extends: + - '.flatpak@aarch64' + - '.flatpak rules' + needs: [] scanbuild: extends: '.flatpak' + needs: [] variables: - CONFIG_OPTS: '-Dprofile=Devel -Dunit_tests=enabled' + CONFIG_OPTS: '-Dprofile=Devel -Dunit_tests=enabled -Dgranite=enabled' script: - flatpak-builder --user --disable-rofiles-fuse --stop-at=${FLATPAK_MODULE} flatpak_app ${MANIFEST_PATH} - flatpak build flatpak_app bash -c "source /usr/lib/sdk/llvm14/enable.sh; meson --prefix=/app ${CONFIG_OPTS} _build; SCANBUILD=$(pwd)/.run-scan-build ninja -C _build scan-build" @@ -129,62 +121,15 @@ when: on_failure paths: - _build/meson-logs/scanbuild + rules: + - if: $CI_COMMIT_BRANCH !~ /gnome-\d\d+/ nightly: extends: '.publish_nightly' stage: .post - dependencies: ['flatpak master'] + needs: ['flatpak'] nightly aarch64: extends: '.publish_nightly' stage: .post - dependencies: ['flatpak aarch64 master'] - -# Canary is disabled indefinitely until a WebKit runtime built for GTK 4 is available. -# -#canary: -# image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master' -# stage: 'test' -# interruptible: true -# allow_failure: true -# tags: -# - flatpak -# variables: -# SDK_REPO: 'https://software.igalia.com/flatpak-refs/webkit-sdk.flatpakrepo' -# BUNDLE: 'epiphany-canary.flatpak' -# script: -# # TODO: Switch to debug? 5GB downloads though. -# - python3 generate-canary-manifest.py --release -# - flatpak remote-add --user --if-not-exists webkit-sdk ${SDK_REPO} -# - flatpak-builder --user --install-deps-from=webkit-sdk --disable-rofiles-fuse --repo=repo canary_flatpak_app org.gnome.Epiphany.Canary.json -# - flatpak build-bundle repo ${BUNDLE} --runtime-repo=${SDK_REPO} org.gnome.Epiphany.Canary -# - tar cf canary-repo.tar repo/ -# - rm -rf canary-repo canary_flatpak_app org.gnome.Epiphany.Canary.json webkitgtk.zip -# -# artifacts: -# name: 'Canary Flatpak artifacts' -# expose_as: 'Get Canary Flatpak bundle here' -# when: 'always' -# paths: -# - "${BUNDLE}" -# - "canary-repo.tar" -# expire_in: 14 days -# cache: -# - key: "$CI_JOB_NAME" -# paths: -# - '.flatpak-builder/downloads' -# - '.flatpak-builder/git' -# - key: "$CI_JOB_NAME" -# paths: -# - '.flatpak-builder/cache' -# - '.flatpak-builder/ccache' -# except: -# - gnome-* -# -#canary nightly: -# extends: '.publish_nightly' -# allow_failure: true -# stage: .post -# dependencies: ['canary'] -# before_script: -# - mv canary-repo.tar repo.tar + needs: ['flatpak aarch64'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/epiphany-44.3/NEWS new/epiphany-44.5/NEWS --- old/epiphany-44.3/NEWS 2023-05-25 22:12:49.000000000 +0200 +++ new/epiphany-44.5/NEWS 2023-06-30 15:07:16.000000000 +0200 @@ -1,3 +1,19 @@ +44.5 - June 30, 2023 +==================== + + * Fix Sync Now button appearing when Firefox Sync is not enabled, leading to crash (!1358) + +44.4 (sorry, tetraphobiacs) - June 29, 2023 +=========================================== + + * Bring back URL scheme in address bar, fixing incorrect URLs loaded in narrow mode (#2085) + * Fix duplicate permission requests (#2088) + * Fix changing web app title and URL with preferences dialog (#2089) + * Fix failure to create web app when no icon or favicon is available (#2100) + * Fix address bar stealing mouse clicks (!1348, Vitaly Dyachkov) + * Fix broken Mute Tab context menu item (!1354) + * Fix critical when creating WebExtension web view (!1356) + 44.3 - May 25, 2023 =================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/epiphany-44.3/data/org.gnome.Epiphany.appdata.xml.in.in new/epiphany-44.5/data/org.gnome.Epiphany.appdata.xml.in.in --- old/epiphany-44.3/data/org.gnome.Epiphany.appdata.xml.in.in 2023-05-25 22:12:49.000000000 +0200 +++ new/epiphany-44.5/data/org.gnome.Epiphany.appdata.xml.in.in 2023-06-30 15:07:16.000000000 +0200 @@ -51,6 +51,8 @@ <display_length compare="ge">360</display_length> </requires> <releases> + <release date="2023-06-30" version="44.5"/> + <release date="2023-06-29" version="44.4"/> <release date="2023-05-25" version="44.3"/> <release date="2023-04-20" version="44.2"/> <release date="2023-04-02" version="44.1"/> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/epiphany-44.3/lib/ephy-web-app-utils.c new/epiphany-44.5/lib/ephy-web-app-utils.c --- old/epiphany-44.3/lib/ephy-web-app-utils.c 2023-05-25 22:12:49.000000000 +0200 +++ new/epiphany-44.5/lib/ephy-web-app-utils.c 2023-06-30 15:07:16.000000000 +0200 @@ -1019,9 +1019,15 @@ } if (changed) { - saved = g_key_file_save_to_file (key, app->desktop_path, &error); + char *resolved_path = realpath (app->desktop_path, NULL); + if (!resolved_path) { + g_warning ("Failed to save web application %s: failed to resolve path %s: %s", app->name, app->desktop_path, g_strerror (errno)); + return FALSE; + } + saved = g_key_file_save_to_file (key, resolved_path, &error); if (!saved) g_warning ("Failed to save desktop file of web application: %s\n", error->message); + free (resolved_path); } } else { g_warning ("Failed to load desktop file of web application: %s\n", error->message); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/epiphany-44.3/meson.build new/epiphany-44.5/meson.build --- old/epiphany-44.3/meson.build 2023-05-25 22:12:49.000000000 +0200 +++ new/epiphany-44.5/meson.build 2023-06-30 15:07:16.000000000 +0200 @@ -1,6 +1,6 @@ project('epiphany', 'c', license: 'GPL3+', - version: '44.3', + version: '44.5', meson_version: '>= 0.59.0', default_options: ['c_std=gnu11', 'warning_level=2'] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/epiphany-44.3/org.gnome.Epiphany.json new/epiphany-44.5/org.gnome.Epiphany.json --- old/epiphany-44.3/org.gnome.Epiphany.json 2023-05-25 22:12:49.000000000 +0200 +++ new/epiphany-44.5/org.gnome.Epiphany.json 2023-06-30 15:07:16.000000000 +0200 @@ -3,6 +3,9 @@ "runtime" : "org.gnome.Platform", "runtime-version" : "master", "sdk" : "org.gnome.Sdk", + "sdk-extensions" : [ + "org.freedesktop.Sdk.Extension.vala-nightly" + ], "command" : "epiphany", "tags" : [ "nightly" @@ -19,6 +22,10 @@ "--system-talk-name=org.freedesktop.GeoClue2", "--own-name=org.gnome.Epiphany.WebAppProvider" ], + "build-options" : { + "prepend-path" : "/usr/lib/sdk/vala-nightly/bin/", + "prepend-ld-library-path" : "/usr/lib/sdk/vala-nightly/lib" + }, "modules" : [ { "name": "elementary-icons", @@ -26,7 +33,8 @@ "sources": [ { "type": "git", - "url": "https://github.com/elementary/icons.git" + "url": "https://github.com/elementary/icons.git", + "branch": "main" } ], "modules": [ @@ -82,6 +90,22 @@ ] }, { + "name" : "libgee", + "buildsystem" : "autotools", + "build-options" : { + "env" : { + "ACLOCAL_PATH" : "/usr/lib/sdk/vala-nightly/share/aclocal" + } + }, + "sources" : [ + { + "type" : "git", + "url" : "https://gitlab.gnome.org/GNOME/libgee.git", + "branch" : "main" + } + ] + }, + { "name": "granite", "buildsystem": "meson", "sources": [ @@ -117,6 +141,20 @@ "-Dprofile=Devel", "-Dgranite=enabled" ], + "run-tests" : true, + "build-options" : { + "test-args" : [ + "--device=dri", + "--filesystem=xdg-download", + "--share=ipc", + "--share=network", + "--socket=fallback-x11", + "--socket=pulseaudio", + "--socket=wayland", + "--system-talk-name=org.freedesktop.GeoClue2", + "--own-name=org.gnome.Epiphany.WebAppProvider" + ] + }, "sources" : [ { "type" : "git", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/epiphany-44.3/src/ephy-firefox-sync-dialog.c new/epiphany-44.5/src/ephy-firefox-sync-dialog.c --- old/epiphany-44.3/src/ephy-firefox-sync-dialog.c 2023-05-25 22:12:49.000000000 +0200 +++ new/epiphany-44.5/src/ephy-firefox-sync-dialog.c 2023-06-30 15:07:16.000000000 +0200 @@ -198,6 +198,7 @@ gtk_widget_set_visible (sync_dialog->sync_page_group, FALSE); gtk_widget_set_visible (sync_dialog->sync_firefox_account_group, TRUE); gtk_widget_set_visible (sync_dialog->sync_options_group, TRUE); + gtk_widget_set_visible (sync_dialog->sync_now_button, TRUE); } else { /* Display the error message and reload the iframe. */ sync_sign_in_details_show (sync_dialog, error->message); @@ -541,6 +542,7 @@ /* Show Firefox Accounts iframe. */ sync_setup_firefox_iframe (sync_dialog); + gtk_widget_set_visible (sync_dialog->sync_now_button, FALSE); gtk_widget_set_visible (sync_dialog->sync_firefox_account_group, FALSE); gtk_widget_set_visible (sync_dialog->sync_options_group, FALSE); gtk_widget_set_visible (sync_dialog->sync_page_group, TRUE); @@ -749,6 +751,7 @@ if (!user) { sync_setup_firefox_iframe (sync_dialog); + gtk_widget_set_visible (sync_dialog->sync_now_button, FALSE); gtk_widget_set_visible (sync_dialog->sync_firefox_account_group, FALSE); gtk_widget_set_visible (sync_dialog->sync_options_group, FALSE); } else { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/epiphany-44.3/src/ephy-location-entry.c new/epiphany-44.5/src/ephy-location-entry.c --- old/epiphany-44.3/src/ephy-location-entry.c 2023-05-25 22:12:49.000000000 +0200 +++ new/epiphany-44.5/src/ephy-location-entry.c 2023-06-30 15:07:16.000000000 +0200 @@ -71,7 +71,6 @@ char *saved_text; char *jump_tab; - char *complete_address; guint progress_timeout; gdouble progress_fraction; @@ -209,9 +208,7 @@ static void editable_changed_cb (GtkEditable *editable, EphyLocationEntry *entry); -static void -ephy_location_entry_set_text (EphyLocationEntry *self, - const char *text); + static void update_selected_url (EphyLocationEntry *entry) { @@ -230,9 +227,9 @@ if (g_str_has_prefix (uri, "ephy-tab://")) { entry->jump_tab = g_strdup (uri); - ephy_location_entry_set_text (entry, dzl_suggestion_get_subtitle (suggestion)); + gtk_editable_set_text (GTK_EDITABLE (entry), dzl_suggestion_get_subtitle (suggestion)); } else { - ephy_location_entry_set_text (entry, uri); + gtk_editable_set_text (GTK_EDITABLE (entry), uri); } gtk_editable_set_position (GTK_EDITABLE (entry), -1); g_signal_handlers_unblock_by_func (entry, G_CALLBACK (editable_changed_cb), entry); @@ -512,9 +509,6 @@ show_context_menu (entry, x, y); gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED); } - - if (n_click >= 2) - gtk_event_controller_reset (GTK_EVENT_CONTROLLER (gesture)); } static GIcon * @@ -581,12 +575,10 @@ PangoAttribute *color_normal; PangoAttribute *color_dimmed; g_autoptr (GUri) uri = NULL; - g_autofree char *new_text = NULL; const char *text = gtk_editable_get_text (GTK_EDITABLE (self)); const char *host; const char *base_domain; char *sub_string; - int offset = 0; attrs = pango_attr_list_new (); @@ -594,20 +586,8 @@ goto out; uri = g_uri_parse (text, G_URI_FLAGS_NONE, NULL); - if (!uri) { - /* Maybe text is missing its scheme (due to narrow mode). - * Let's create a temporary full address and try it again. - * It will not be added to the current address. - */ - new_text = g_strconcat ("https://", text, NULL); - - text = new_text; - offset = 8; - - uri = g_uri_parse (text, G_URI_FLAGS_NONE, NULL); - if (!uri) - goto out; - } + if (!uri) + goto out; host = g_uri_get_host (uri); if (!host || strlen (host) == 0) @@ -627,7 +607,7 @@ /* Base domain with normal style */ color_normal = pango_attr_foreground_alpha_new (65535); - color_normal->start_index = sub_string - text - offset; + color_normal->start_index = sub_string - text; color_normal->end_index = color_normal->start_index + strlen (base_domain); pango_attr_list_insert (attrs, color_normal); @@ -637,36 +617,6 @@ } static void -ephy_location_entry_set_text (EphyLocationEntry *self, - const char *text) -{ - if (text) { - g_clear_pointer (&self->complete_address, g_free); - self->complete_address = g_strdup (text); - } else { - text = self->complete_address; - } - - if (!gtk_widget_has_focus (GTK_WIDGET (self)) && self->adaptive_mode == EPHY_ADAPTIVE_MODE_NARROW) { - g_autoptr (GUri) uri = NULL; - const char *host = NULL; - - uri = g_uri_parse (text, G_URI_FLAGS_NONE, NULL); - if (uri) { - host = g_uri_get_host (uri); - if (host) { - char *pos = strstr (text, host); - if (pos) - text = pos; - } - } - } - - gtk_editable_set_text (GTK_EDITABLE (self), text); - update_entry_style (self, gtk_widget_has_focus (GTK_WIDGET (self))); -} - -static void focus_enter_cb (EphyLocationEntry *entry) { update_entry_style (entry, TRUE); @@ -686,7 +636,7 @@ { if (entry->jump_tab) { g_signal_handlers_block_by_func (entry, G_CALLBACK (editable_changed_cb), entry); - ephy_location_entry_set_text (entry, entry->jump_tab); + gtk_editable_set_text (GTK_EDITABLE (entry), entry->jump_tab); g_signal_handlers_unblock_by_func (entry, G_CALLBACK (editable_changed_cb), entry); g_clear_pointer (&entry->jump_tab, g_free); } else { @@ -694,6 +644,8 @@ gchar *url = g_strstrip (text); g_autofree gchar *new_url = NULL; + gtk_editable_set_text (GTK_EDITABLE (entry), entry->jump_tab ? entry->jump_tab : text); + if (strlen (url) > 5 && g_str_has_prefix (url, "http:") && url[5] != '/') new_url = g_strdup_printf ("http://%s", url + 5); else if (strlen (url) > 6 && g_str_has_prefix (url, "https:") && url[6] != '/') @@ -701,11 +653,7 @@ if (new_url) { g_signal_handlers_block_by_func (entry, G_CALLBACK (editable_changed_cb), entry); - ephy_location_entry_set_text (entry, new_url); - g_signal_handlers_unblock_by_func (entry, G_CALLBACK (editable_changed_cb), entry); - } else { - g_signal_handlers_block_by_func (entry, G_CALLBACK (editable_changed_cb), entry); - ephy_location_entry_set_text (entry, entry->jump_tab ? entry->jump_tab : text); + gtk_editable_set_text (GTK_EDITABLE (entry), new_url); g_signal_handlers_unblock_by_func (entry, G_CALLBACK (editable_changed_cb), entry); } @@ -717,7 +665,7 @@ g_autofree gchar *new_url = g_strdup_printf ("www.%s.com", url); g_signal_handlers_block_by_func (entry, G_CALLBACK (editable_changed_cb), entry); - ephy_location_entry_set_text (entry, new_url); + gtk_editable_set_text (GTK_EDITABLE (entry), new_url); g_signal_handlers_unblock_by_func (entry, G_CALLBACK (editable_changed_cb), entry); } } @@ -791,7 +739,7 @@ text = ephy_suggestion_get_uri (suggestion); g_signal_handlers_block_by_func (entry, G_CALLBACK (editable_changed_cb), entry); - ephy_location_entry_set_text (entry, entry->jump_tab ? entry->jump_tab : text); + gtk_editable_set_text (GTK_EDITABLE (entry), entry->jump_tab ? entry->jump_tab : text); g_clear_pointer (&entry->jump_tab, g_free); g_signal_handlers_unblock_by_func (entry, G_CALLBACK (editable_changed_cb), entry); @@ -916,7 +864,7 @@ } g_signal_handlers_block_by_func (entry, G_CALLBACK (editable_changed_cb), entry); - ephy_location_entry_set_text (entry, text); + gtk_editable_set_text (GTK_EDITABLE (entry), text); emit_activate (entry, 0); g_signal_handlers_unblock_by_func (entry, G_CALLBACK (editable_changed_cb), entry); @@ -938,7 +886,7 @@ { entry->block_update = TRUE; g_signal_handlers_block_by_func (entry, G_CALLBACK (editable_changed_cb), entry); - ephy_location_entry_set_text (entry, ""); + gtk_editable_set_text (GTK_EDITABLE (entry), ""); g_signal_handlers_unblock_by_func (entry, G_CALLBACK (editable_changed_cb), entry); entry->block_update = FALSE; entry->user_changed = TRUE; @@ -1569,7 +1517,7 @@ entry->block_update = TRUE; g_signal_handlers_block_by_func (entry, G_CALLBACK (editable_changed_cb), entry); - ephy_location_entry_set_text (entry, final_text); + gtk_editable_set_text (GTK_EDITABLE (widget), final_text); g_signal_handlers_unblock_by_func (entry, G_CALLBACK (editable_changed_cb), entry); update_entry_style (entry, gtk_widget_has_focus (entry->text)); @@ -1704,7 +1652,7 @@ ephy_location_entry_undo_reset (EphyLocationEntry *entry) { g_signal_handlers_block_by_func (entry, G_CALLBACK (editable_changed_cb), entry); - ephy_location_entry_set_text (entry, entry->saved_text); + gtk_editable_set_text (GTK_EDITABLE (entry), entry->saved_text); g_signal_handlers_unblock_by_func (entry, G_CALLBACK (editable_changed_cb), entry); entry->can_redo = FALSE; entry->user_changed = TRUE; @@ -2020,20 +1968,17 @@ } void -ephy_location_entry_set_adaptive_mode (EphyLocationEntry *self, +ephy_location_entry_set_adaptive_mode (EphyLocationEntry *entry, EphyAdaptiveMode adaptive_mode) { - self->adaptive_mode = adaptive_mode; - g_signal_handlers_block_by_func (self, G_CALLBACK (editable_changed_cb), self); - ephy_location_entry_set_text (self, NULL); - g_signal_handlers_unblock_by_func (self, G_CALLBACK (editable_changed_cb), self); + entry->adaptive_mode = adaptive_mode; if (adaptive_mode == EPHY_ADAPTIVE_MODE_NARROW) - gtk_widget_add_css_class (GTK_WIDGET (self), "narrow"); + gtk_widget_add_css_class (GTK_WIDGET (entry), "narrow"); else - gtk_widget_remove_css_class (GTK_WIDGET (self), "narrow"); + gtk_widget_remove_css_class (GTK_WIDGET (entry), "narrow"); - ephy_location_entry_set_bookmark_icon_state (self, self->icon_state); + ephy_location_entry_set_bookmark_icon_state (entry, entry->icon_state); } void diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/epiphany-44.3/src/ephy-window.c new/epiphany-44.5/src/ephy-window.c --- old/epiphany-44.3/src/ephy-window.c 2023-05-25 22:12:49.000000000 +0200 +++ new/epiphany-44.5/src/ephy-window.c 2023-06-30 15:07:16.000000000 +0200 @@ -180,7 +180,7 @@ GtkWidget *toast_overlay; GtkWidget *switch_to_tab; AdwToast *switch_toast; - GHashTable *active_permission_requests; + GHashTable *active_permission_popovers; GList *pending_decisions; gulong filters_initialized_id; @@ -2356,6 +2356,59 @@ ephy_location_entry_set_progress (EPHY_LOCATION_ENTRY (title_widget), progress, loading); } +static void +load_all_available_popovers (EphyWindow *window, + EphyWebView *view) +{ + GList *popover_list = g_hash_table_lookup (window->active_permission_popovers, view); + EphyTitleWidget *title_widget = ephy_header_bar_get_title_widget (EPHY_HEADER_BAR (window->header_bar)); + EphyLocationEntry *lentry; + GList *l; + + if (!EPHY_IS_LOCATION_ENTRY (title_widget)) + return; + + lentry = EPHY_LOCATION_ENTRY (title_widget); + + ephy_location_entry_set_password_popover (lentry, NULL); + ephy_location_entry_clear_permission_buttons (lentry); + + for (l = popover_list; l; l = l->next) { + if (EPHY_IS_PASSWORD_POPOVER (l->data)) + ephy_location_entry_set_password_popover (lentry, EPHY_PASSWORD_POPOVER (l->data)); + else if (EPHY_IS_PERMISSION_POPOVER (l->data)) + ephy_location_entry_add_permission_popover (lentry, EPHY_PERMISSION_POPOVER (l->data)); + } +} + +static void +destroy_permission_popovers_for_view (EphyWindow *window, + EphyWebView *view) +{ + GList *popover_list; + + /* Freeing open permission popovers will also free the outstanding permission + * requests, which is equivalent to denying them. + */ + popover_list = g_hash_table_lookup (window->active_permission_popovers, view); + g_hash_table_steal (window->active_permission_popovers, view); + g_list_free_full (popover_list, g_object_unref); +} + +static void +load_changed_cb (EphyWebView *view, + WebKitLoadEvent load_event, + EphyWindow *window) +{ + sync_tab_load_status (view, load_event, window); + + if (load_event != WEBKIT_LOAD_STARTED) + return; + + destroy_permission_popovers_for_view (window, view); + if (view == ephy_embed_get_web_view (window->active_embed)) + load_all_available_popovers (window, view); +} static void ephy_window_connect_active_embed (EphyWindow *window) @@ -2428,7 +2481,7 @@ G_CALLBACK (sync_tab_document_type), window, 0); g_signal_connect_object (view, "load-changed", - G_CALLBACK (sync_tab_load_status), + G_CALLBACK (load_changed_cb), window, 0); g_signal_connect_object (view, "notify::navigation", G_CALLBACK (sync_tab_navigation), @@ -2540,14 +2593,17 @@ AdwTabPage *page, EphyWindow *window) { + EphyWebView *view = NULL; GActionGroup *action_group; GAction *action; int n_pages; int n_pinned_pages; int position; gboolean pinned; + gboolean muted; if (page) { + view = ephy_embed_get_web_view (EPHY_EMBED (adw_tab_page_get_child (page))); n_pages = adw_tab_view_get_n_pages (tab_view); n_pinned_pages = adw_tab_view_get_n_pinned_pages (tab_view); position = adw_tab_view_get_page_position (tab_view, page); @@ -2585,6 +2641,12 @@ action = g_action_map_lookup_action (G_ACTION_MAP (action_group), "close"); g_simple_action_set_enabled (G_SIMPLE_ACTION (action), !page || !pinned); + + muted = view && webkit_web_view_get_is_muted (WEBKIT_WEB_VIEW (view)); + action = g_action_map_lookup_action (G_ACTION_MAP (action_group), + "mute"); + g_simple_action_set_state (G_SIMPLE_ACTION (action), + g_variant_new_boolean (muted)); } static gboolean @@ -2650,31 +2712,6 @@ } static void -load_all_available_popovers (EphyWindow *window, - EphyWebView *view) -{ - GList *popover_list = g_hash_table_lookup (window->active_permission_requests, view); - EphyTitleWidget *title_widget = ephy_header_bar_get_title_widget (EPHY_HEADER_BAR (window->header_bar)); - EphyLocationEntry *lentry; - GList *l; - - if (!EPHY_IS_LOCATION_ENTRY (title_widget)) - return; - - lentry = EPHY_LOCATION_ENTRY (title_widget); - - ephy_location_entry_set_password_popover (lentry, NULL); - ephy_location_entry_clear_permission_buttons (lentry); - - for (l = popover_list; l; l = l->next) { - if (EPHY_IS_PASSWORD_POPOVER (l->data)) - ephy_location_entry_set_password_popover (lentry, EPHY_PASSWORD_POPOVER (l->data)); - else if (EPHY_IS_PERMISSION_POPOVER (l->data)) - ephy_location_entry_add_permission_popover (lentry, EPHY_PERMISSION_POPOVER (l->data)); - } -} - -static void popover_response_cb (EphyWindow *window, gpointer popover) { @@ -2692,13 +2729,13 @@ ephy_location_entry_set_password_popover (lentry, NULL); view = ephy_shell_get_active_web_view (ephy_shell_get_default ()); - popover_list = g_hash_table_lookup (window->active_permission_requests, view); + popover_list = g_hash_table_lookup (window->active_permission_popovers, view); popover_list = g_list_remove (popover_list, popover); if (!popover_list) - g_hash_table_steal (window->active_permission_requests, view); + g_hash_table_steal (window->active_permission_popovers, view); else - g_hash_table_replace (window->active_permission_requests, view, popover_list); + g_hash_table_replace (window->active_permission_popovers, view, popover_list); g_object_unref (popover); } @@ -2813,7 +2850,7 @@ } else { EphyTitleWidget *title_widget = ephy_header_bar_get_title_widget (EPHY_HEADER_BAR (window->header_bar)); EphyLocationEntry *lentry; - GList *list = g_hash_table_lookup (EPHY_WINDOW (window)->active_permission_requests, view); + GList *list = g_hash_table_lookup (EPHY_WINDOW (window)->active_permission_popovers, view); g_assert (EPHY_IS_LOCATION_ENTRY (title_widget)); @@ -2823,7 +2860,7 @@ ephy_location_entry_add_permission_popover (lentry, popover); ephy_location_entry_show_best_permission_popover (lentry); list = g_list_append (list, popover); - g_hash_table_replace (EPHY_WINDOW (window)->active_permission_requests, view, list); + g_hash_table_replace (EPHY_WINDOW (window)->active_permission_popovers, view, list); g_signal_connect (popover, "allow", G_CALLBACK (popover_allow_cb), window); g_signal_connect (popover, "deny", G_CALLBACK (popover_deny_cb), window); @@ -2911,6 +2948,8 @@ ephy_link_open (EPHY_LINK (window), NULL, NULL, EPHY_LINK_NEW_TAB); } + destroy_permission_popovers_for_view (window, ephy_embed_get_web_view (tab)); + g_object_set_data (G_OBJECT (tab), "ephy-window-close-tab-closed", GINT_TO_POINTER (TRUE)); /* If that was the last tab, destroy the window. @@ -3278,7 +3317,7 @@ } static void -free_permission_requests (gpointer key, +free_permission_popovers (gpointer key, GList *value) { g_list_free_full (value, g_object_unref); @@ -3305,10 +3344,10 @@ g_hash_table_unref (window->action_labels); - g_hash_table_foreach (window->active_permission_requests, - (GHFunc)free_permission_requests, NULL); + g_hash_table_foreach (window->active_permission_popovers, + (GHFunc)free_permission_popovers, NULL); - g_hash_table_unref (window->active_permission_requests); + g_hash_table_unref (window->active_permission_popovers); } G_OBJECT_CLASS (ephy_window_parent_class)->dispose (object); @@ -3792,7 +3831,7 @@ } else { EphyPasswordPopover *popover = ephy_password_popover_new (request_data); EphyWebView *view = ephy_shell_get_active_web_view (EPHY_SHELL (shell)); - GList *list = g_hash_table_lookup (EPHY_WINDOW (window)->active_permission_requests, view); + GList *list = g_hash_table_lookup (EPHY_WINDOW (window)->active_permission_popovers, view); title_widget = GTK_WIDGET (ephy_header_bar_get_title_widget (EPHY_HEADER_BAR (ephy_window_get_header_bar (EPHY_WINDOW (window))))); @@ -3805,7 +3844,7 @@ ephy_location_entry_set_password_popover (lentry, popover); ephy_location_entry_show_password_popover (lentry); list = g_list_append (list, popover); - g_hash_table_replace (EPHY_WINDOW (window)->active_permission_requests, view, list); + g_hash_table_replace (EPHY_WINDOW (window)->active_permission_popovers, view, list); g_signal_connect_swapped (popover, "response", G_CALLBACK (popover_response_cb), window); } @@ -3905,7 +3944,7 @@ g_strdup (action_label[i].label)); } - window->active_permission_requests = g_hash_table_new (g_direct_hash, + window->active_permission_popovers = g_hash_table_new (g_direct_hash, g_direct_equal); /* Set accels for actions */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/epiphany-44.3/src/preferences/prefs-general-page.c new/epiphany-44.5/src/preferences/prefs-general-page.c --- old/epiphany-44.3/src/preferences/prefs-general-page.c 2023-05-25 22:12:49.000000000 +0200 +++ new/epiphany-44.5/src/preferences/prefs-general-page.c 2023-06-30 15:07:16.000000000 +0200 @@ -610,6 +610,8 @@ gboolean changed = FALSE; const char *text; + general_page->webapp_save_id = 0; + if (!general_page->webapp) return G_SOURCE_REMOVE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/epiphany-44.3/src/resources/epiphany.gresource.xml new/epiphany-44.5/src/resources/epiphany.gresource.xml --- old/epiphany-44.3/src/resources/epiphany.gresource.xml 2023-05-25 22:12:49.000000000 +0200 +++ new/epiphany-44.5/src/resources/epiphany.gresource.xml 2023-06-30 15:07:16.000000000 +0200 @@ -52,6 +52,7 @@ <file preprocess="xml-stripblanks" compressed="true">overview-remove-item.svg</file> <file preprocess="xml-stripblanks" compressed="true">network-error-symbolic.svg</file> <file preprocess="xml-stripblanks" compressed="true">security-high-symbolic.svg</file> + <file preprocess="xml-stripblanks" compressed="true">web-app-icon-missing.svg</file> </gresource> <gresource prefix="/org/gnome/Epiphany/icons"> <file compressed="true" alias="scalable/actions/ephy-download-symbolic.svg">ephy-download-symbolic.svg</file> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/epiphany-44.3/src/resources/web-app-icon-missing.svg new/epiphany-44.5/src/resources/web-app-icon-missing.svg --- old/epiphany-44.3/src/resources/web-app-icon-missing.svg 1970-01-01 01:00:00.000000000 +0100 +++ new/epiphany-44.5/src/resources/web-app-icon-missing.svg 2023-06-30 15:07:16.000000000 +0200 @@ -0,0 +1,64 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg height="128px" viewBox="0 0 128 128" width="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <linearGradient id="a" gradientUnits="userSpaceOnUse" x1="98" x2="108" y1="112" y2="112"> + <stop offset="0" stop-color="#16529c"/> + <stop offset="1" stop-color="#236ac0"/> + </linearGradient> + <linearGradient id="b" gradientTransform="matrix(0 -1 1 0 -157 121)" gradientUnits="userSpaceOnUse" x1="0.999999" x2="0.999999" y1="215" y2="171"> + <stop offset="0" stop-color="#2166bb"/> + <stop offset="1" stop-color="#89eda9"/> + </linearGradient> + <filter id="c" height="100%" width="100%" x="0%" y="0%"> + <feColorMatrix in="SourceGraphic" type="matrix" values="0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0"/> + </filter> + <mask id="d"> + <g filter="url(#c)"> + <rect fill-opacity="0.5" height="128" width="128"/> + </g> + </mask> + <clipPath id="e"> + <rect height="152" width="192"/> + </clipPath> + <mask id="f"> + <g filter="url(#c)"> + <rect fill-opacity="0.5" height="128" width="128"/> + </g> + </mask> + <clipPath id="g"> + <rect height="152" width="192"/> + </clipPath> + <mask id="h"> + <g filter="url(#c)"> + <rect fill-opacity="0.5" height="128" width="128"/> + </g> + </mask> + <clipPath id="i"> + <rect height="152" width="192"/> + </clipPath> + <path d="m 64 5 c 33.136719 0 60 26.863281 60 60 s -26.863281 60 -60 60 s -60 -26.863281 -60 -60 s 26.863281 -60 60 -60 z m 0 0" fill="url(#a)"/> + <path d="m 64 5 c -33.136719 0 -60 26.863281 -60 60 s 26.863281 60 60 60 z m 0 0" fill="url(#b)"/> + <path d="m 124 63 c 0 33.136719 -26.863281 60 -60 60 s -60 -26.863281 -60 -60 s 26.863281 -60 60 -60 s 60 26.863281 60 60 z m 0 0" fill="#40a1c8"/> + <path d="m 28.003906 64 c 0.125 13.914062 2.882813 27.367188 7.835938 38.25 c -3.941406 2.015625 -7.28125 4.441406 -9.863282 7.160156 c -13.640624 -11.171875 -21.675781 -27.78125 -21.96875 -45.410156 z m 0 0" fill="#49bbb0"/> + <path d="m 64 96 v 27 c -4.5 0 -8.988281 -0.507812 -13.375 -1.511719 c -5.800781 -4.058593 -10.894531 -10.691406 -14.78125 -19.238281 c 7.902344 -4.039062 17.867188 -6.25 28.15625 -6.25 z m 0 0" fill="#378bde"/> + <path d="m 99.996094 64 c -0.125 13.914062 -2.882813 27.367188 -7.839844 38.25 c 3.945312 2.015625 7.28125 4.441406 9.863281 7.160156 c 13.640625 -11.171875 21.675781 -27.78125 21.972657 -45.410156 z m 0 0" fill="#266ec6"/> + <path d="m 64 64 v 59 c 4.5 0 8.988281 -0.507812 13.375 -1.511719 c 13.472656 -9.433593 22.390625 -32.097656 22.621094 -57.488281 z m 0 0" fill="#378bde"/> + <path d="m 64 96 v 27 c 4.5 0 8.988281 -0.507812 13.375 -1.511719 c 5.800781 -4.058593 10.894531 -10.691406 14.78125 -19.238281 c -7.902344 -4.039062 -17.867188 -6.25 -28.15625 -6.25 z m 0 0" fill="#266ec6"/> + <path d="m 92.160156 102.25 c -3.890625 8.546875 -8.984375 15.175781 -14.78125 19.238281 c 9.035156 -2.066406 17.472656 -6.203125 24.644532 -12.078125 c -2.582032 -2.71875 -5.921876 -5.144531 -9.863282 -7.160156 z m 0 0" fill="#1e62b5"/> + <path d="m 64 3 c -33.136719 0 -60 26.863281 -60 60 c 0 0.332031 0.003906 0.667969 0.007812 1 h 59.992188 z m 0 0" fill="#53d795"/> + <path d="m 50.625 4.507812 c -9.039062 2.070313 -17.476562 6.203126 -24.648438 12.078126 c 2.582032 2.722656 5.921876 5.144531 9.867188 7.164062 c 3.890625 -8.550781 8.984375 -15.179688 14.78125 -19.242188 z m 0 0" fill="#72e99a"/> + <path d="m 64 3 c -4.5 0 -8.984375 0.507812 -13.375 1.507812 c -13.664062 9.570313 -22.625 32.734376 -22.625 58.492188 c 0 0.332031 0 0.667969 0.003906 1 h 35.996094 z m 0 0" fill="#49bbb0"/> + <path d="m 64 3 c -4.5 0 -8.984375 0.507812 -13.375 1.507812 c -5.796875 4.0625 -10.890625 10.691407 -14.78125 19.242188 c 7.90625 4.039062 17.867188 6.25 28.15625 6.25 z m 0 0" fill="#53d795"/> + <path d="m 64 3 c 33.136719 0 60 26.863281 60 60 c 0 0.332031 -0.003906 0.667969 -0.007812 1 h -59.992188 z m 0 0" fill="#378bde"/> + <path d="m 77.375 4.507812 c 9.039062 2.070313 17.476562 6.203126 24.648438 12.078126 c -2.582032 2.722656 -5.921876 5.144531 -9.863282 7.160156 c -3.894531 -8.546875 -8.988281 -15.175782 -14.785156 -19.238282 z m 0 0" fill="#40a1c8"/> + <path d="m 64 3 c 4.5 0 8.988281 0.507812 13.375 1.507812 c 13.664062 9.570313 22.625 32.734376 22.625 58.492188 c 0 0.332031 0 0.667969 -0.003906 1 h -35.996094 z m 0 0" fill="#40a1c8"/> + <path d="m 64 3 c 4.5 0 8.988281 0.507812 13.375 1.507812 c 5.796875 4.0625 10.890625 10.691407 14.78125 19.238282 c -7.90625 4.042968 -17.867188 6.253906 -28.15625 6.253906 z m 0 0" fill="#49bbb0"/> + <g clip-path="url(#e)" mask="url(#d)" transform="matrix(1 0 0 1 -8 -16)"> + <path d="m 169.5 24 v 1 h 13 v -1 z m 0 0" fill="#2e3436"/> + </g> + <g clip-path="url(#g)" mask="url(#f)" transform="matrix(1 0 0 1 -8 -16)"> + <path d="m 169.5 21 v 1 h 13 v -1 z m 0 0" fill="#2e3436"/> + </g> + <g clip-path="url(#i)" mask="url(#h)" transform="matrix(1 0 0 1 -8 -16)"> + <path d="m 169.5 27 v 1 h 13 v -1 z m 0 0" fill="#2e3436"/> + </g> +</svg> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/epiphany-44.3/src/webextension/ephy-web-extension-manager.c new/epiphany-44.5/src/webextension/ephy-web-extension-manager.c --- old/epiphany-44.3/src/webextension/ephy-web-extension-manager.c 2023-05-25 22:12:49.000000000 +0200 +++ new/epiphany-44.5/src/webextension/ephy-web-extension-manager.c 2023-06-30 15:07:16.000000000 +0200 @@ -1015,8 +1015,9 @@ { EphyWebExtensionManager *manager = ephy_web_extension_manager_get_default (); g_autoptr (WebKitSettings) settings = NULL; - WebKitWebContext *web_context; + WebKitWebContext *web_context = NULL; GtkWidget *web_view; + WebKitWebView *background_view; const char *custom_user_agent; settings = webkit_settings_new_with_settings ("enable-write-console-messages-to-stdout", TRUE, @@ -1032,16 +1033,20 @@ else webkit_settings_set_user_agent_with_application_details (settings, "Epiphany", EPHY_VERSION); - web_context = webkit_web_context_new (); - webkit_web_context_register_uri_scheme (web_context, "ephy-webextension", ephy_webextension_scheme_cb, web_extension, NULL); - webkit_security_manager_register_uri_scheme_as_secure (webkit_web_context_get_security_manager (web_context), - "ephy-webextension"); - g_signal_connect_object (web_context, "initialize-web-process-extensions", G_CALLBACK (init_web_extension_api), web_extension, 0); + /* If there is a background view the web context is shared with the related-view property. */ + background_view = ephy_web_extension_manager_get_background_web_view (manager, web_extension); + if (!background_view) { + web_context = webkit_web_context_new (); + webkit_web_context_register_uri_scheme (web_context, "ephy-webextension", ephy_webextension_scheme_cb, web_extension, NULL); + webkit_security_manager_register_uri_scheme_as_secure (webkit_web_context_get_security_manager (web_context), + "ephy-webextension"); + g_signal_connect_object (web_context, "initialize-web-process-extensions", G_CALLBACK (init_web_extension_api), web_extension, 0); + } web_view = g_object_new (WEBKIT_TYPE_WEB_VIEW, "web-context", web_context, "settings", settings, - "related-view", ephy_web_extension_manager_get_background_web_view (manager, web_extension), + "related-view", background_view, "default-content-security-policy", ephy_web_extension_get_content_security_policy (web_extension), "web-extension-mode", WEBKIT_WEB_EXTENSION_MODE_MANIFESTV2, NULL); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/epiphany-44.3/src/window-commands.c new/epiphany-44.5/src/window-commands.c --- old/epiphany-44.3/src/window-commands.c 2023-05-25 22:12:49.000000000 +0200 +++ new/epiphany-44.5/src/window-commands.c 2023-06-30 15:07:16.000000000 +0200 @@ -1630,17 +1630,24 @@ GdkTexture *icon_texture = webkit_web_view_get_favicon (WEBKIT_WEB_VIEW (data->view)); icon = ephy_favicon_get_from_texture_scaled (icon_texture, 0, 0); - if (icon != NULL) { data->framed_pixbuf = frame_pixbuf (icon, NULL, DEFAULT_ICON_SIZE, DEFAULT_ICON_SIZE); g_assert (data->icon_v == NULL); data->icon_v = g_icon_serialize (G_ICON (data->framed_pixbuf)); - create_install_dialog_when_ready (data); - } - if (data->icon_v == NULL) { - g_warning ("Failed to get favicon for web app %s, giving up", data->display_address); - ephy_application_dialog_data_free (data); + } else { + g_autoptr (GBytes) bytes = NULL; + + bytes = g_resources_lookup_data ("/org/gnome/epiphany/page-icons/web-app-icon-missing.svg", + G_RESOURCE_LOOKUP_FLAGS_NONE, + NULL); + g_assert (bytes); + + icon = g_bytes_icon_new (bytes); + data->icon_v = g_icon_serialize (icon); } + + g_assert (data->icon_v != NULL); + create_install_dialog_when_ready (data); } static void @@ -1851,7 +1858,8 @@ notification = g_notification_new (message); - g_notification_set_icon (notification, G_ICON (data->framed_pixbuf)); + if (data->framed_pixbuf) + g_notification_set_icon (notification, G_ICON (data->framed_pixbuf)); if (success) { /* Translators: Desktop notification when a new web app is created. */