Checking the browsing_context before change title, and adding wpt test

This commit is contained in:
askeing 2016-04-23 21:20:55 +09:00
parent 75ae1c033f
commit 3c56d41699
4 changed files with 46 additions and 3 deletions

View file

@ -618,11 +618,13 @@ impl Document {
/// Handles any updates when the document's title has changed. /// Handles any updates when the document's title has changed.
pub fn title_changed(&self) { pub fn title_changed(&self) {
if self.browsing_context().is_some() {
// https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowsertitlechange // https://developer.mozilla.org/en-US/docs/Web/Events/mozbrowsertitlechange
self.trigger_mozbrowser_event(MozBrowserEvent::TitleChange(String::from(self.Title()))); self.trigger_mozbrowser_event(MozBrowserEvent::TitleChange(String::from(self.Title())));
self.send_title_to_compositor(); self.send_title_to_compositor();
} }
}
/// Sends this document's title to the compositor. /// Sends this document's title to the compositor.
pub fn send_title_to_compositor(&self) { pub fn send_title_to_compositor(&self) {

View file

@ -6430,6 +6430,12 @@
"url": "/_mozilla/mozilla/mozbrowser/mozbrowsershowmodalprompt_event.html" "url": "/_mozilla/mozilla/mozbrowser/mozbrowsershowmodalprompt_event.html"
} }
], ],
"mozilla/mozbrowser/mozbrowsertitlechangedeagerly_event.html": [
{
"path": "mozilla/mozbrowser/mozbrowsertitlechangedeagerly_event.html",
"url": "/_mozilla/mozilla/mozbrowser/mozbrowsertitlechangedeagerly_event.html"
}
],
"mozilla/mozbrowser/redirect.html": [ "mozilla/mozbrowser/redirect.html": [
{ {
"path": "mozilla/mozbrowser/redirect.html", "path": "mozilla/mozbrowser/redirect.html",

View file

@ -0,0 +1,19 @@
<!doctype html>
<meta charset="utf-8">
<title>Check if title_changed is too eager (issue #10782)</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<body></body>
<script>
async_test(function(t) {
var iframe = document.createElement("iframe");
iframe.mozbrowser = "true";
iframe.src = "mozbrowsertitlechangedeagerly_event_iframe.html";
iframe.addEventListener("mozbrowsertitlechange", t.step_func(e => {
assert_equals(e.type, "mozbrowsertitlechange");
assert_not_equals(e.detail, "Bar");
}));
iframe.addEventListener("load", t.step_func_done());
document.body.appendChild(iframe);
});
</script>

View file

@ -0,0 +1,16 @@
<html>
<head>
<title>Foo</title>
<script>
var text =
'<html xmlns="http://www.w3.org/1999/xhtml">' +
' <head>' +
' <title>Bar</title>' +
' </head>' +
'</html>';
var parser = new DOMParser();
var doc = parser.parseFromString(text, "text/xml");
</script>
</head>
<body>Hello world</body>
</html>