aboutsummaryrefslogtreecommitdiffstats
path: root/components
diff options
context:
space:
mode:
authorMartin Robinson <mrobinson@igalia.com>2024-04-29 17:29:47 +0200
committerGitHub <noreply@github.com>2024-04-29 15:29:47 +0000
commitadcaf2e881fc22bde15bbf37fd970ad1ab57c28c (patch)
tree42dbf3485c028a5c496f22463d463a83916258bf /components
parent4a12c0630927be1ffdedd8f1329081a09337aa1e (diff)
downloadservo-adcaf2e881fc22bde15bbf37fd970ad1ab57c28c.tar.gz
servo-adcaf2e881fc22bde15bbf37fd970ad1ab57c28c.zip
url: Only truncate data URLs for `Debug` (#32177)
Other types of URLs aren't so long that they need to be truncated.
Diffstat (limited to 'components')
-rw-r--r--components/url/lib.rs26
1 files changed, 19 insertions, 7 deletions
diff --git a/components/url/lib.rs b/components/url/lib.rs
index 6a9f3766021..2dfed250962 100644
--- a/components/url/lib.rs
+++ b/components/url/lib.rs
@@ -23,6 +23,9 @@ pub use url::Host;
use url::{Position, Url};
pub use crate::origin::{ImmutableOrigin, MutableOrigin, OpaqueOrigin};
+
+const DATA_URL_DISPLAY_LENGTH: usize = 40;
+
#[derive(Debug)]
pub enum UrlError {
SetUsername,
@@ -266,14 +269,23 @@ impl fmt::Display for ServoUrl {
impl fmt::Debug for ServoUrl {
fn fmt(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
- if self.0.as_str().len() > 40 {
- let mut hasher = DefaultHasher::new();
- hasher.write(self.0.as_str().as_bytes());
- let truncated: String = self.0.as_str().chars().take(40).collect();
- let result = format!("{}... ({:x})", truncated, hasher.finish());
- return result.fmt(formatter);
+ let url_string = self.0.as_str();
+ if self.scheme() != "data" || url_string.len() <= DATA_URL_DISPLAY_LENGTH {
+ return url_string.fmt(formatter);
}
- self.0.fmt(formatter)
+
+ let mut hasher = DefaultHasher::new();
+ hasher.write(self.0.as_str().as_bytes());
+
+ format!(
+ "{}... ({:x})",
+ url_string
+ .chars()
+ .take(DATA_URL_DISPLAY_LENGTH)
+ .collect::<String>(),
+ hasher.finish()
+ )
+ .fmt(formatter)
}
}