Closed Bug 1508693 Opened 11 months ago Closed 11 months ago

Fails to Paint in paused.js

Categories

(Core :: Web Replay, defect)

defect
Not set

Tracking

()

RESOLVED FIXED
mozilla65
Tracking Status
firefox65 --- fixed

People

(Reporter: jlast, Assigned: bhackett)

References

(Blocks 1 open bug)

Details

Attachments

(2 files)

STR:

1. cd debugger.html; yarn; yarn start;
2. go to http://localhost:8000/; launch firefox remotely, select the first tab
3. add a breakpoint in actions/paused.js#58 & #66
4. pause in the debugger at paused.js#58 
5. resume and pause at #66


ER: see the debug line, AR see Paint Failure
Attached patch patchSplinter Review
The problem here is that we don't support all the middleman calls needed to render a checkbox after diverging from the recording.  The attached patch adds enough to make this work.  Additionally, I went through all the code under nsNativeThemeCocoa::RenderWidget --- which is the entry point through which all these OS specific widgets are rendered --- and added middleman call support for all the calls there, including some redirections that were missing entirely.  This patch also has some improvements to the reporting of fatal errors related to middleman calls when the devtools.recordreplay.allowRepaintFailures is set to false.
Assignee: nobody → bhackett1024
Attachment #9026866 - Flags: review?(lsmyth)
Comment on attachment 9026866 [details] [diff] [review]
patch

Review of attachment 9026866 [details] [diff] [review]:
-----------------------------------------------------------------

::: toolkit/recordreplay/ProcessRedirectDarwin.cpp
@@ -359,5 @@
>    MACRO(CGColorSpaceCreateDeviceRGB, RR_ScalarRval, nullptr, Middleman_CreateCFTypeRval) \
>    MACRO(CGColorSpaceCreatePattern, RR_ScalarRval)                \
>    MACRO(CGColorSpaceRelease, RR_ScalarRval, nullptr, nullptr, Preamble_Veto<0>) \
> -  MACRO(CGContextBeginTransparencyLayerWithRect)                 \
> -  MACRO(CGContextClipToRects, RR_ScalarRval, nullptr,            \

Out of curiosity, what isn't this calling `RR_ScalarRval` anymore?
Attachment #9026866 - Flags: review?(lsmyth) → review+
(In reply to Logan Smyth [:loganfsmyth] from comment #2)
> Comment on attachment 9026866 [details] [diff] [review]
> patch
> 
> Review of attachment 9026866 [details] [diff] [review]:
> -----------------------------------------------------------------
> 
> ::: toolkit/recordreplay/ProcessRedirectDarwin.cpp
> @@ -359,5 @@
> >    MACRO(CGColorSpaceCreateDeviceRGB, RR_ScalarRval, nullptr, Middleman_CreateCFTypeRval) \
> >    MACRO(CGColorSpaceCreatePattern, RR_ScalarRval)                \
> >    MACRO(CGColorSpaceRelease, RR_ScalarRval, nullptr, nullptr, Preamble_Veto<0>) \
> > -  MACRO(CGContextBeginTransparencyLayerWithRect)                 \
> > -  MACRO(CGContextClipToRects, RR_ScalarRval, nullptr,            \
> 
> Out of curiosity, what isn't this calling `RR_ScalarRval` anymore?

This is fixing a bug: CGContextClipToRects does not return anything, so there isn't a point to recording/replaying its return value.
Pushed by bhackett@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/70f4239b2fab
Add middleman call support for functions used in rendering widgets, r=lsmyth.
https://hg.mozilla.org/mozilla-central/rev/70f4239b2fab
Status: NEW → RESOLVED
Closed: 11 months ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla65
Depends on: 1510481
You need to log in before you can comment on or make changes to this bug.