Auto merge of #25799 - paulrouget:hideWindow, r=Manishearth

Hide window

Stop animations when the window is hidden.

Tested with both Immersive Mode, and regular window being minimized.

---
<!-- 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
- [x] These changes fix #25794 (GitHub issue number if applicable)
This commit is contained in:
bors-servo 2020-02-20 14:28:09 -05:00 committed by GitHub
commit b5b9732509
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 78 additions and 1 deletions

View file

@ -1681,6 +1681,9 @@ where
FromCompositorMsg::MediaSessionAction(action) => {
self.handle_media_session_action_msg(action);
},
FromCompositorMsg::ChangeBrowserVisibility(top_level_browsing_context_id, visible) => {
self.handle_change_browser_visibility(top_level_browsing_context_id, visible);
},
}
}
@ -4276,6 +4279,32 @@ where
}
}
fn handle_change_browser_visibility(
&mut self,
top_level_browsing_context_id: TopLevelBrowsingContextId,
visible: bool,
) {
let browsing_context_id = BrowsingContextId::from(top_level_browsing_context_id);
let pipeline_id = match self.browsing_contexts.get(&browsing_context_id) {
Some(browsing_context) => browsing_context.pipeline_id,
None => {
return warn!(
"Browsing context {} got visibility change event after closure.",
browsing_context_id
);
},
};
match self.pipelines.get(&pipeline_id) {
None => {
return warn!(
"Pipeline {} got visibility change event after closure.",
pipeline_id
)
},
Some(pipeline) => pipeline.notify_visibility(visible),
};
}
fn notify_history_changed(&self, top_level_browsing_context_id: TopLevelBrowsingContextId) {
// Send a flat projection of the history to embedder.
// The final vector is a concatenation of the LoadData of the past