diff --git a/components/net/hsts.rs b/components/net/hsts.rs index 1d56473ef85..946bb19c294 100644 --- a/components/net/hsts.rs +++ b/components/net/hsts.rs @@ -63,9 +63,11 @@ impl HSTSList { } } - /// Create an `HSTSList` from the contents of a JSON preload file. - pub fn from_preload(preload_content: &str) -> Option { - decode(preload_content).ok() + /// Create an `HSTSList` from the bytes of a JSON preload file. + pub fn from_preload(preload_content: &[u8]) -> Option { + from_utf8(&preload_content) + .ok() + .and_then(|c| decode(c).ok()) } pub fn is_host_secure(&self, host: &str) -> bool { @@ -113,11 +115,9 @@ impl HSTSList { } pub fn preload_hsts_domains() -> Option { - read_resource_file("hsts_preload.json").ok().and_then(|bytes| { - from_utf8(&bytes).ok().and_then(|hsts_preload_content| { - HSTSList::from_preload(hsts_preload_content) - }) - }) + read_resource_file("hsts_preload.json") + .ok() + .and_then(|bytes| HSTSList::from_preload(&bytes)) } pub fn secure_url(url: &Url) -> Url { diff --git a/tests/unit/net/hsts.rs b/tests/unit/net/hsts.rs index 3691c9dc486..95eeaffcecb 100644 --- a/tests/unit/net/hsts.rs +++ b/tests/unit/net/hsts.rs @@ -150,19 +150,19 @@ fn test_push_entry_to_hsts_list_should_add_an_entry() { #[test] fn test_parse_hsts_preload_should_return_none_when_json_invalid() { - let mock_preload_content = "derp"; + let mock_preload_content = b"derp"; assert!(HSTSList::from_preload(mock_preload_content).is_none(), "invalid preload list should not have parsed") } #[test] fn test_parse_hsts_preload_should_return_none_when_json_contains_no_entries_key() { - let mock_preload_content = "{\"nothing\": \"to see here\"}"; + let mock_preload_content = b"{\"nothing\": \"to see here\"}"; assert!(HSTSList::from_preload(mock_preload_content).is_none(), "invalid preload list should not have parsed") } #[test] fn test_parse_hsts_preload_should_decode_host_and_includes_subdomains() { - let mock_preload_content = "{\ + let mock_preload_content = b"{\ \"entries\": [\ {\"host\": \"mozilla.org\",\ \"include_subdomains\": false}\