Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upcompositing: Fix a couple of bugs that prevented iframes from painting after navigation. #9421
Conversation
|
r? @pcwalton |
|
@bors-servo: r+ Thanks so much for looking into this! |
|
|
…cwalton compositing: Fix a couple of bugs that prevented iframes from painting after navigation. The first bug was that iframes were not reflowed in their parent DOM when the child page navigated. This is fixed by simply having the constellation notify the appropriate script thread when navigation occurs. The second bug was that the compositor was unable to adjust the pipeline for existing iframe layers, only new ones. This patch adds logic to do that. The third bug was that we have ad-hoc reflow calls throughout script/, and we didn't trigger any reflow from the code that dispatches the `load` event for the iframe so the test for the first two issues would always time out. The second commit adds another reflow call to do that, and also bites the bullet and adds a catch-all reflow (which does nothing if there's no dirty nodes in the document) at the return to the event loop. Closes #8081. Extension of #9285. <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9421) <!-- Reviewable:end -->
|
|
2d53520
to
795d10f
|
@bors-servo: r+ |
|
|
|
|
compositing: Fix a couple of bugs that prevented iframes from painting after navigation. The first bug was that iframes were not reflowed in their parent DOM when the child page navigated. This is fixed by simply having the constellation notify the appropriate script thread when navigation occurs. The second bug was that the compositor was unable to adjust the pipeline for existing iframe layers, only new ones. This patch adds logic to do that. The third bug was that we have ad-hoc reflow calls throughout script/, and we didn't trigger any reflow from the code that dispatches the `load` event for the iframe so the test for the first two issues would always time out. The second commit adds another reflow call to do that, and also bites the bullet and adds a catch-all reflow (which does nothing if there's no dirty nodes in the document) at the return to the event loop. Closes #8081. Extension of #9285. <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9421) <!-- Reviewable:end -->
|
|
795d10f
to
87c8758
|
@bors-servo: r+ |
|
|
|
|
|
Huh. I'm going to try and reproduce #9432 locally, since that's hit every test run. |
after navigation. The first bug was that iframes were not reflowed in their parent DOM when the child page navigated. This is fixed by simply having the constellation notify the appropriate script thread when navigation occurs. The second bug was that the compositor was unable to adjust the pipeline for existing iframe layers, only new ones. This patch adds logic to do that. Closes #8081.
…d a catch-all reflow for all same-origin pages sharing an event loop.a
87c8758
to
c79231f
|
The latest commit fixes #9432. |
|
@jdm The last commit looks good to me. |
|
@bors-servo: r+ |
|
|
compositing: Fix a couple of bugs that prevented iframes from painting after navigation. The first bug was that iframes were not reflowed in their parent DOM when the child page navigated. This is fixed by simply having the constellation notify the appropriate script thread when navigation occurs. The second bug was that the compositor was unable to adjust the pipeline for existing iframe layers, only new ones. This patch adds logic to do that. The third bug was that we have ad-hoc reflow calls throughout script/, and we didn't trigger any reflow from the code that dispatches the `load` event for the iframe so the test for the first two issues would always time out. The second commit adds another reflow call to do that, and also bites the bullet and adds a catch-all reflow (which does nothing if there's no dirty nodes in the document) at the return to the event loop. Closes #8081. Extension of #9285. <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9421) <!-- Reviewable:end -->
|
|
|
@bors-servo retry #8127 |
|
|
|
|
Remove unnecessary explicit reflows These should be unnecessary since the introduction of the catch-all reflow in #9421. Any explicit reflow that is not performing a layout query is unnecessary, and we should be postponing reflow for as long as possible. This should allow pages to perform better when processing mouse events, for example, and allow profiles to better reflect the actual work being done by a page. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #5329 - [x] There are tests for these changes <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23118) <!-- Reviewable:end -->
Remove unnecessary explicit reflows These should be unnecessary since the introduction of the catch-all reflow in #9421. Any explicit reflow that is not performing a layout query is unnecessary, and we should be postponing reflow for as long as possible. This should allow pages to perform better when processing mouse events, for example, and allow profiles to better reflect the actual work being done by a page. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #5329 - [x] There are tests for these changes <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23118) <!-- Reviewable:end -->
Remove unnecessary explicit reflows These should be unnecessary since the introduction of the catch-all reflow in #9421. Any explicit reflow that is not performing a layout query is unnecessary, and we should be postponing reflow for as long as possible. This should allow pages to perform better when processing mouse events, for example, and allow profiles to better reflect the actual work being done by a page. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #5329 - [x] There are tests for these changes <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23118) <!-- Reviewable:end -->
Remove unnecessary explicit reflows These should be unnecessary since the introduction of the catch-all reflow in #9421. Any explicit reflow that is not performing a layout query is unnecessary, and we should be postponing reflow for as long as possible. This should allow pages to perform better when processing mouse events, for example, and allow profiles to better reflect the actual work being done by a page. --- - [x] `./mach build -d` does not report any errors - [x] `./mach test-tidy` does not report any errors - [x] These changes fix #5329 - [x] There are tests for these changes <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/23118) <!-- Reviewable:end -->
jdm commentedJan 25, 2016
The first bug was that iframes were not reflowed in their parent DOM when the child page navigated. This is fixed by simply having the constellation notify the appropriate script thread when navigation occurs.
The second bug was that the compositor was unable to adjust the pipeline for existing iframe layers, only new ones. This patch adds logic to do that.
The third bug was that we have ad-hoc reflow calls throughout script/, and we didn't trigger any reflow from the code that dispatches the
loadevent for the iframe so the test for the first two issues would always time out. The second commit adds another reflow call to do that, and also bites the bullet and adds a catch-all reflow (which does nothing if there's no dirty nodes in the document) at the return to the event loop.Closes #8081.
Extension of #9285.