mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 00:35:44 +00:00
servo: Merge #14274 - Implement range index with the Position enum on ServoUrl (from stshine:servo-url-index); r=emilio
<!-- Please describe your changes on the following line: --> --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [ ] These changes fix #__ (github issue number if applicable). <!-- Either: --> - [ ] There are tests for these changes OR - [X] These changes do not require tests because refactoring <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> r? @emilio Source-Repo: https://github.com/servo/servo Source-Revision: ac6a2681ae9f94827ebd989c3d3c3b175cbb455f
This commit is contained in:
parent
c839f3f401
commit
44ce2304ab
@ -35,7 +35,7 @@ pub type DecodeData = (Mime, Vec<u8>);
|
||||
pub fn decode(url: &ServoUrl) -> Result<DecodeData, DecodeError> {
|
||||
assert_eq!(url.scheme(), "data");
|
||||
// Split out content type and data.
|
||||
let parts: Vec<&str> = url.as_url().unwrap()[Position::BeforePath..Position::AfterQuery].splitn(2, ',').collect();
|
||||
let parts: Vec<&str> = url[Position::BeforePath..Position::AfterQuery].splitn(2, ',').collect();
|
||||
if parts.len() != 2 {
|
||||
return Err(DecodeError::InvalidDataUri);
|
||||
}
|
||||
|
@ -931,7 +931,7 @@ pub fn load<A, B>(load_data: &LoadData,
|
||||
// the source rather than rendering the contents of the URL.
|
||||
let viewing_source = doc_url.scheme() == "view-source";
|
||||
if viewing_source {
|
||||
doc_url = ServoUrl::parse(&load_data.url.as_url().unwrap()[Position::BeforeUsername..]).unwrap();
|
||||
doc_url = ServoUrl::parse(&load_data.url[Position::BeforeUsername..]).unwrap();
|
||||
}
|
||||
|
||||
// Loop to handle redirects.
|
||||
|
@ -358,7 +358,7 @@ impl ResponseMethods for Response {
|
||||
}
|
||||
|
||||
fn serialize_without_fragment(url: &ServoUrl) -> &str {
|
||||
&url.as_url().unwrap()[..Position::AfterQuery]
|
||||
&url[..Position::AfterQuery]
|
||||
}
|
||||
|
||||
impl Response {
|
||||
|
@ -878,7 +878,7 @@ impl XMLHttpRequest {
|
||||
},
|
||||
};
|
||||
|
||||
*self.response_url.borrow_mut() = metadata.final_url.as_url().unwrap()[..Position::AfterQuery].to_owned();
|
||||
*self.response_url.borrow_mut() = metadata.final_url[..Position::AfterQuery].to_owned();
|
||||
|
||||
// XXXManishearth Clear cache entries in case of a network error
|
||||
self.process_partial_response(XHRProgress::HeadersReceived(
|
||||
|
@ -1739,7 +1739,7 @@ impl ScriptThread {
|
||||
// Start with the scheme data of the parsed URL;
|
||||
// append question mark and query component, if any;
|
||||
// append number sign and fragment component if any.
|
||||
let encoded = &incomplete.url.as_url().unwrap()[Position::BeforePath..];
|
||||
let encoded = &incomplete.url[Position::BeforePath..];
|
||||
|
||||
// Percent-decode (8.) and UTF-8 decode (9.)
|
||||
let script_source = percent_decode(encoded.as_bytes()).decode_utf8_lossy();
|
||||
|
@ -19,9 +19,10 @@ extern crate url;
|
||||
|
||||
use std::fmt;
|
||||
use std::net::IpAddr;
|
||||
use std::ops::{Range, RangeFrom, RangeTo, RangeFull, Index};
|
||||
use std::path::Path;
|
||||
use std::sync::Arc;
|
||||
use url::{Url, Origin};
|
||||
use url::{Url, Origin, Position};
|
||||
|
||||
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
|
||||
#[cfg_attr(feature = "servo", derive(HeapSizeOf, Serialize, Deserialize))]
|
||||
@ -152,3 +153,31 @@ impl fmt::Display for ServoUrl {
|
||||
self.0.fmt(formatter)
|
||||
}
|
||||
}
|
||||
|
||||
impl Index<RangeFull> for ServoUrl {
|
||||
type Output = str;
|
||||
fn index(&self, _: RangeFull) -> &str {
|
||||
&self.0[..]
|
||||
}
|
||||
}
|
||||
|
||||
impl Index<RangeFrom<Position>> for ServoUrl {
|
||||
type Output = str;
|
||||
fn index(&self, range: RangeFrom<Position>) -> &str {
|
||||
&self.0[range]
|
||||
}
|
||||
}
|
||||
|
||||
impl Index<RangeTo<Position>> for ServoUrl {
|
||||
type Output = str;
|
||||
fn index(&self, range: RangeTo<Position>) -> &str {
|
||||
&self.0[range]
|
||||
}
|
||||
}
|
||||
|
||||
impl Index<Range<Position>> for ServoUrl {
|
||||
type Output = str;
|
||||
fn index(&self, range: Range<Position>) -> &str {
|
||||
&self.0[range]
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user