[librsvg: 16/18] Images::lookup() - take an AllowedUrl, not a &str
- From: Federico Mena Quintero <federico src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [librsvg: 16/18] Images::lookup() - take an AllowedUrl, not a &str
- Date: Sat, 7 Dec 2019 02:39:22 +0000 (UTC)
commit a34a632957c9d51f711caec34a2e9caf8123e92e
Author: Federico Mena Quintero <federico gnome org>
Date: Fri Dec 6 19:35:53 2019 -0600
Images::lookup() - take an AllowedUrl, not a &str
This moves the creation of the AllowedUrl one level up. I'd like it
to happen closer to set_atts(), but we don't have access to
LoadOptions there to create the AllowedUrl.
rsvg_internals/src/allowed_url.rs | 2 +-
rsvg_internals/src/document.rs | 12 ++++++------
rsvg_internals/src/handle.rs | 2 +-
3 files changed, 8 insertions(+), 8 deletions(-)
---
diff --git a/rsvg_internals/src/allowed_url.rs b/rsvg_internals/src/allowed_url.rs
index 16a3a330..5d6e8f2f 100644
--- a/rsvg_internals/src/allowed_url.rs
+++ b/rsvg_internals/src/allowed_url.rs
@@ -14,7 +14,7 @@ use crate::error::HrefError;
/// a specified `href` (a possibly-relative filename, for example)
/// should be allowed to be loaded, given the base URL of the SVG
/// being loaded.
-#[derive(Debug, PartialEq, Eq, Hash)]
+#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct AllowedUrl(Url);
#[derive(Debug, PartialEq)]
diff --git a/rsvg_internals/src/document.rs b/rsvg_internals/src/document.rs
index d541f191..f2a7e58e 100644
--- a/rsvg_internals/src/document.rs
+++ b/rsvg_internals/src/document.rs
@@ -72,7 +72,10 @@ impl Document {
}
pub fn lookup_image(&self, href: &str) -> Result<SharedImageSurface, LoadingError> {
- self.images.borrow_mut().lookup(&self.load_options, href)
+ let aurl = AllowedUrl::from_href(href, self.load_options.base_url.as_ref())
+ .map_err(|_| LoadingError::BadUrl)?;
+
+ self.images.borrow_mut().lookup(&self.load_options, &aurl)
}
pub fn get_intrinsic_dimensions(&self) -> IntrinsicDimensions {
@@ -154,12 +157,9 @@ impl Images {
fn lookup(
&mut self,
load_options: &LoadOptions,
- href: &str,
+ aurl: &AllowedUrl,
) -> Result<SharedImageSurface, LoadingError> {
- let aurl = AllowedUrl::from_href(href, load_options.base_url.as_ref())
- .map_err(|_| LoadingError::BadUrl)?;
-
- match self.images.entry(aurl) {
+ match self.images.entry(aurl.clone()) {
Entry::Occupied(e) => e.get().clone(),
Entry::Vacant(e) => {
let surface = load_image(load_options, e.key());
diff --git a/rsvg_internals/src/handle.rs b/rsvg_internals/src/handle.rs
index 6f50844a..d2da4a8b 100644
--- a/rsvg_internals/src/handle.rs
+++ b/rsvg_internals/src/handle.rs
@@ -55,7 +55,7 @@ impl LoadOptions {
pub fn copy_with_base_url(&self, base_url: &AllowedUrl) -> Self {
LoadOptions {
- base_url: Some((*base_url).clone()),
+ base_url: Some((**base_url).clone()),
unlimited_size: self.unlimited_size,
keep_image_data: self.keep_image_data,
locale: self.locale.clone(),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]