client: Update Components.WebView terminology around resource loading

Refer uniformly to remote resource loading instead of that and remote
image loading.
This commit is contained in:
Michael Gratton 2021-04-04 18:04:41 +10:00
parent 044c77325a
commit 1be5dec877
4 changed files with 39 additions and 32 deletions

View file

@ -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.
* 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 allow_remote_image_loading() {
this.run_javascript.begin("_gearyAllowRemoteResourceLoads = true", null);
}
/**
* Load any remote images previously that were blocked.
*/
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) {

View file

@ -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

View file

@ -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();

View file

@ -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++) {