[geary/mjog/1170-webview-remote-resource-loading: 1/4] client: Update Components.WebView terminology around resource loading
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary/mjog/1170-webview-remote-resource-loading: 1/4] client: Update Components.WebView terminology around resource loading
- Date: Sun, 4 Apr 2021 11:40:09 +0000 (UTC)
commit 1be5dec877ec4bb8a2dc5370c9a7deea0b094eb4
Author: Michael Gratton <mike vee net>
Date: Sun Apr 4 18:04:41 2021 +1000
client: Update Components.WebView terminology around resource loading
Refer uniformly to remote resource loading instead of that and remote
image loading.
src/client/components/components-web-view.vala | 49 ++++++++++++----------
.../conversation-viewer/conversation-message.vala | 12 +++---
src/client/web-process/web-process-extension.vala | 8 ++--
ui/components-web-view.js | 2 +-
4 files changed, 39 insertions(+), 32 deletions(-)
---
diff --git a/src/client/components/components-web-view.vala b/src/client/components/components-web-view.vala
index e11a3f792..ff6b379f6 100644
--- a/src/client/components/components-web-view.vala
+++ b/src/client/components/components-web-view.vala
@@ -11,8 +11,8 @@
*
* This provides common functionality expected by the client for
* displaying HTML, such as common WebKit settings, desktop font
- * integration, Inspector support, and remote and inline image
- * handling.
+ * integration, Inspector support, and remote and inline resource
+ * handling for content such as images and videos.
*/
public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface {
@@ -23,7 +23,7 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface {
/** URI for internal message body page loads. */
public const string INTERNAL_URL_BODY = INTERNAL_URL_PREFIX + "body";
- /** URI Scheme and delimiter for images loaded by Content-ID. */
+ /** URI Scheme and delimiter for resources loaded by Content-ID. */
public const string CID_URL_PREFIX = "cid:";
// Keep these in sync with GearyWebExtension
@@ -35,7 +35,7 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface {
private const string CONTENT_LOADED = "content_loaded";
private const string DOCUMENT_MODIFIED = "document_modified";
private const string PREFERRED_HEIGHT_CHANGED = "preferred_height_changed";
- private const string REMOTE_IMAGE_LOAD_BLOCKED = "remote_image_load_blocked";
+ private const string REMOTE_RESOURCE_LOAD_BLOCKED = "remote_resource_load_blocked";
private const string SELECTION_CHANGED = "selection_changed";
private const double ZOOM_DEFAULT = 1.0;
@@ -251,6 +251,17 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface {
}
}
+ /**
+ * Determines if any remote resources are loaded during page load.
+ *
+ * This must be set before HTML loaded to have any effect, that
+ * is, before calling {@link load_html}. Afterwards, you must call
+ * {@link load_remote_resources} instead.
+ */
+ public bool enable_loading_remote_resources {
+ get; set; default = false;
+ }
+
public string document_font {
get {
return _document_font;
@@ -312,8 +323,8 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface {
/** Emitted when the view has loaded a resource added to it. */
public signal void internal_resource_loaded(string name);
- /** Emitted when a remote image load was disallowed. */
- public signal void remote_image_load_blocked();
+ /** Emitted when a remote resource load was disallowed. */
+ public signal void remote_resource_load_blocked();
protected WebView(Application.Configuration config,
@@ -420,20 +431,16 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface {
}
/**
- * Allows loading any remote images found during page load.
+ * Load any remote resources that were previously blocked.
*
- * This must be called before HTML content is loaded to have any
- * effect.
- */
- public void allow_remote_image_loading() {
- this.run_javascript.begin("_gearyAllowRemoteResourceLoads = true", null);
- }
-
- /**
- * Load any remote images previously that were blocked.
+ * This method will ensure any remote resources that were blocked
+ * during initial HTML page load are now loaded.
+ *
+ * @see enable_loading_remote_resources
*/
- public void load_remote_images() {
- this.call_void.begin(Util.JS.callable("loadRemoteImages"), null);
+ public void load_remote_resources() {
+ this.enable_loading_remote_resources = true;
+ this.call_void.begin(Util.JS.callable("loadRemoteResources"), null);
}
/**
@@ -599,7 +606,7 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface {
PREFERRED_HEIGHT_CHANGED, on_preferred_height_changed
);
register_message_callback(
- REMOTE_IMAGE_LOAD_BLOCKED, on_remote_image_load_blocked
+ REMOTE_RESOURCE_LOAD_BLOCKED, on_remote_resource_load_blocked
);
register_message_callback(
SELECTION_CHANGED, on_selection_changed
@@ -797,8 +804,8 @@ public abstract class Components.WebView : WebKit.WebView, Geary.BaseInterface {
document_modified();
}
- private void on_remote_image_load_blocked(GLib.Variant? parameters) {
- remote_image_load_blocked();
+ private void on_remote_resource_load_blocked(GLib.Variant? parameters) {
+ remote_resource_load_blocked();
}
private void on_content_loaded(GLib.Variant? parameters) {
diff --git a/src/client/conversation-viewer/conversation-message.vala
b/src/client/conversation-viewer/conversation-message.vala
index becf3bf77..27e2bb82d 100644
--- a/src/client/conversation-viewer/conversation-message.vala
+++ b/src/client/conversation-viewer/conversation-message.vala
@@ -596,7 +596,7 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface {
this.web_view.notify["has-selection"].connect(on_selection_changed);
this.web_view.notify["is-loading"].connect(on_is_loading_notify);
this.web_view.resource_load_started.connect(on_resource_load_started);
- this.web_view.remote_image_load_blocked.connect(on_remote_images_blocked);
+ this.web_view.remote_resource_load_blocked.connect(on_remote_resources_blocked);
this.web_view.internal_resource_loaded.connect(trigger_internal_resource_loaded);
this.web_view.content_loaded.connect(trigger_content_loaded);
this.web_view.set_hexpand(true);
@@ -877,9 +877,9 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface {
this.primary_contact != null &&
this.primary_contact.load_remote_resources
);
- if (this.load_remote_resources || contact_load_images) {
- this.web_view.allow_remote_image_loading();
- }
+ this.web_view.enable_loading_remote_resources = (
+ this.load_remote_resources || contact_load_images
+ );
show_placeholder_pane(null);
@@ -1154,7 +1154,7 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface {
this.remote_resources_requested = 0;
this.remote_resources_loaded = 0;
if (this.web_view != null) {
- this.web_view.load_remote_images();
+ this.web_view.load_remote_resources();
}
if (update_email_flag) {
flag_remote_images();
@@ -1398,7 +1398,7 @@ public class ConversationMessage : Gtk.Grid, Geary.BaseInterface {
selection_changed(this.web_view.has_selection);
}
- private void on_remote_images_blocked() {
+ private void on_remote_resources_blocked() {
if (this.remote_images_info_bar == null) {
this.remote_images_info_bar = new Components.InfoBar(
// Translators: Info bar status message
diff --git a/src/client/web-process/web-process-extension.vala
b/src/client/web-process/web-process-extension.vala
index 5a7599e68..33a4fc26c 100644
--- a/src/client/web-process/web-process-extension.vala
+++ b/src/client/web-process/web-process-extension.vala
@@ -72,13 +72,13 @@ public class GearyWebExtension : Object {
// Always load internal resources
should_load = true;
} else {
- // Only load anything else if remote image loading is
+ // Only load anything else if remote resources loading is
// permitted
- if (should_load_remote_images(page)) {
+ if (should_load_remote_resources(page)) {
should_load = true;
} else {
page.send_message_to_view.begin(
- new WebKit.UserMessage("remote_image_load_blocked", null),
+ new WebKit.UserMessage("remote_resource_load_blocked", null),
null
);
}
@@ -87,7 +87,7 @@ public class GearyWebExtension : Object {
return should_load ? Gdk.EVENT_PROPAGATE : Gdk.EVENT_STOP; // LOL
}
- private bool should_load_remote_images(WebKit.WebPage page) {
+ private bool should_load_remote_resources(WebKit.WebPage page) {
bool should_load = false;
WebKit.Frame frame = page.get_main_frame();
JSC.Context context = frame.get_js_context();
diff --git a/ui/components-web-view.js b/ui/components-web-view.js
index 9b026dcdf..97fb2d497 100644
--- a/ui/components-web-view.js
+++ b/ui/components-web-view.js
@@ -72,7 +72,7 @@ PageState.prototype = {
this.updatePreferredHeight();
this._contentLoaded();
},
- loadRemoteImages: function() {
+ loadRemoteResources: function() {
window._gearyAllowRemoteResourceLoads = true;
let images = document.getElementsByTagName("IMG");
for (let i = 0; i < images.length; i++) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]