diff options
author | Utsav Oza <utsavoza96@gmail.com> | 2020-07-30 16:31:36 +0530 |
---|---|---|
committer | Utsav Oza <utsavoza96@gmail.com> | 2020-07-30 16:34:30 +0530 |
commit | 962e6205293b3466df173889cd56ba435cdaa233 (patch) | |
tree | 4517a8b7df3409a7d5b7ce530496992331391f67 /components/script/dom/document.rs | |
parent | da45522085363480009f7e12cce2c00a94ec931e (diff) | |
download | servo-962e6205293b3466df173889cd56ba435cdaa233.tar.gz servo-962e6205293b3466df173889cd56ba435cdaa233.zip |
Do not panic on navigating across documents
Diffstat (limited to 'components/script/dom/document.rs')
-rw-r--r-- | components/script/dom/document.rs | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 2ca8825808b..fef552b326b 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -560,7 +560,8 @@ impl Document { let new_dirty_root = element .upcast::<Node>() - .common_ancestor(dirty_root.upcast(), ShadowIncluding::Yes); + .common_ancestor(dirty_root.upcast(), ShadowIncluding::Yes) + .expect("Couldn't find common ancestor"); let mut has_dirty_descendants = true; for ancestor in dirty_root @@ -1515,10 +1516,12 @@ impl Document { FireMouseEventType::Enter | FireMouseEventType::Leave )); - let common_ancestor = related_target.as_ref().map_or_else( - || DomRoot::from_ref(&*event_target), - |related_target| event_target.common_ancestor(related_target, ShadowIncluding::No), - ); + let common_ancestor = match related_target.as_ref() { + Some(related_target) => event_target + .common_ancestor(related_target, ShadowIncluding::No) + .unwrap_or_else(|| DomRoot::from_ref(&*event_target)), + None => DomRoot::from_ref(&*event_target), + }; // We need to create a target chain in case the event target shares // its boundaries with its ancestors. |