January 2016


Fixed code review issue for bug 1234612, and used Autolander for the first time. It appears Autoland mangles your commit message by always appending an “r=foo” string on the first line. Filed bug 1236137 about this.

Provided some input on bug 1211666 and why I think auto-creating directory trees is a bad idea.


Reviewed bug 1198797.

Started work on bug 1221187.


Submitted bug 1221187 which addresses logging in Marionette, but also introduces some fundamental concepts to Log.jsm, to review. Surprisingly it was difficult to find a reviewer because all the usual suspects are refusing new reviews.


Input on bug 883555 and bug 1236922.

Answered a lot of email.

Fixed some code review issues for bug 1221187.

Provided needinfo request for jgriffin on bug 1207273.

Provided needinfo on bug 1231979 about bi-di whitespace characters in Marionette’s Get Text command.


Investigated and patched bug 1215502. Thanks to Henrik for describing an effective way to reproduce this problem.

Spent some time resolving intermittents on the try run for bug 1221187 that addresses logging issues in Marionette.

Filed bug 1237627 about a strange new button in MozReview.

Filed bug 1237638 to upload the new marionette-packets.log file, generated by Marionette following bug 1221187, to Treeherder.


Addressed some very thoughtful code review issues from markh for bug 1221187.

Patched bug 1231660.

Continued work on bug 1123506. That feeling when you google something and the only results are bugs people have filed on your code.


Landed and resolved bug 1234063.

Continued work on bug 1123506 and was able to get over what I believe was one of the final hurdles. It turns out that the default should be to always create new sandboxes when the newSandbox parameter is missing.


Updated patch for bug 1221187 to use the Preferences.jsm module I recently learned about, that coerces preference value types automatically for you.

Addressed the mistake to remove Components from bug 1123506, and issued a new try run.

Continued work on bug 1123506. Close to finishing it now.


Continued work on bug 1123506. Figured out what I believe was one of the last hurdles that system principal sandboxes’ windows were being dereferenced.

Reviewed PR 285 to the WebDriver specification which adds the Get Page Source command back in.

Asked for more information on bug 1238569 which I’m unable to reproduce locally.


Had a hard time getting to work because of a landslip on the train line. Ended up taking a boat into central London.

Resolved bug 1238569 as invalid.

Provided needinfo on bug 1238869.

Provided needinfo on bug 1238958.

Reviewed the Marionette part of bug 1233497 that enables CPOW usage in Marionette. We need to also release a new Python package and update the GeckoDriver/wires HTTPD before CPOW usage is disallowed in Gecko.

Filed bug 1238996 and issue 35 in wires to address above concerns about disallow CPOWs.

Submitted PR 36 to wires.

Reviewed PR 9272 in Servo that moves some Servo specific tests to WPT and adds support for DPI settings to wptrunner and the Servo executor.

Attended the monthly internal meeting at Mozilla.

Replied to PR 255 in WebDriver which is about the input type for the Set Alert Text command.

Filed bug 1239030 about Autoland UI issues on MozReview.


Submitted PR 167 to trust Marionette’s default logging settings to wptrunner.

1:1 with dburns.

Investigated Servo link issues on Linux.

whimboo reported that the Firefox UI tests had been permanently broken by my recent changes to Marionette’s logging defaults. I filed and patched bug 1239363.

Later I filed bug 1239371 as a follow-up as I discovered that the original patch didn’t actually look at the state of the boolean value.


Visited two possible new office locations in London.

Reviewed bug 1239307, but this really needs to make it in to the specification.

Looked into a build issue with Servo that prevents you from linking libfontconfig when using an older cargo. The exact version that is required is 7931e58 (2015-09-30) 0.6.0-nightly.

Picked up the review for bug 1198797 which I had somewhat forgotten about. It’s funny how used one gets to MozReview.


Tested and landed bug 1198797.

Reviewed rb/30957 for bug 1238744 about centralising interactions in Marionette. The patch contains an excellent example of good API design!

Continued investigation on the build issue in Servo.

Filed bug 1239987 about merging the marionette-transport Python package back into marionette-driver as a marionette.transport module.

Rebased and resolved conflicts in bug 1123506. I suspect I made a simple mistake that broke try. Will push another try run and link it to the bug.

Requested needinfo on stale bug 905650.

Rebased bug 1230151 about skipping out-of-sync messages in the Marionette Python client.

Fixed up and landed bug 1204504 that had slipped my mind. It wraps illegal query selectors with the correct WebDriver error.

Finally, after two bisect attempts, I found the commit that caused Servo to fail to compile on Linux.


Filed bug 1240530 about artifact build failure on Linux.

Reviewed bug 1239330.

Filed and patched bug 1240550 which fixes optional arguments to the JavaScriptError constructor.

Patched bug 1239373 and added xpcshell unit tests for Marionette. Although I’m not quite sure how to test testing/marionette/components/marionettecomponent.js since it’s not included in the manifest JAR.

Patched bug 1240182.

Filed bug 1240601 about using a socket timeout on the socket in transport.wait_for_port.

Filed bug 1240610 about the --jsdebugger flag for Marionette being broken.

Patched bug 1240576.

Patched bug 1240601.


Addressed test issues for bug 1239373 and pushed to try again.

Filed bug 1240723 about mandatory head and tail entries on xpcshell manifest files. They should not be mandatory as they are not required running xpcshell on desktop.

Filed bug 1240725 about failing to push bug 1239373 to review.

Patched bug 1240723.

Found that bug 1240550 appears to have been backed out because bug 1239373 for a brief moment was on inbound at the same time. As far as I can tell it should be fine to re-land it now that bug 1239373 has been backed out.

Fixed up and re-landed bug 1240550 on inbound. It turns out the first Marionette xpcshell tests found their first, real bug!

Provided needinfo on bug 1240486. Did the same for bug 1215806.

Patched bug 1240610 to fix the --jsdebugger flag.

Filed bug 1240751 about annotating which bug component testing/marionette files underneath.

Rebased and fixed up long overdue patches for bug 1205687. This is the patch series that adds support for Marionette tests to the ./mach test FILE [, FILE] target.

Patched bug 1240751.

Filed bug 1240789 about removing the unneeded head- and tail manifest entries from testing/marionette/unit.ini once bug 1240723 lands.

Verified that jgraham’s latest changes to wires does indeed fix the compilation issues.

Rebased PR 36 to wires which explicitly enables CPOWs for Marionette.

Resolved bug 1240179 as invalid because Firefox requires a window manager to function normally. I attached a solution that works with xvfb.

Provided some context on bug 1240830 about asking the Marionette server to connect on port 0, to have the system allocate a free port for us.

Fixed up code review issues in bug 1240723.

Responded to feedback on the change I made earlier to Selenium.

Provided needinfo on bug 1215806.


Provided needinfo on bug 1205687. Requested review from shawnjohnjr because he r-’ed my previous patch where I removed a newline.

Upgraded my local Mercurial installation using pip because the firefoxtree extension is not compatible with the version shipped in Debian stable (!). This resulted in 108 integrity errors and a corrupted repository.

Took some time to go through the four pushes I made to inbound yesterday evening that was backed out. The backed out patches are for bug 1240576, bug 1240751, bug 1240610, and bug 1240601.

Re-landed patch for bug 1240751 that annotates the file in testing/marionette. This change is completely harmless.

Provided some context on Marionette e10s skip primitives in bug 1239552.

Submitted PR 39 to wires that enables Travis builds on Rust’s stable, beta, and nightly channels. This was surprisingly easy to set up for Rust.

Re-landed patch for bug 1240610 that fixes the --jsdebugger flag.

Tested bug 1240530 that was meant to fix an issue with artifact builds on Linux. It’s however still failing but with a different error that could be unrelated to the bug.

Reviewed bug 1097676 which introduces a using_context decorator to the Marionette Python client.

Played a bit more with Rust and submitted PR 40 which prints errors to stderr and dumps the usage message. Not happy with it.

Started documenting the Marionette protocol.

Provided input on bug 1240830 about providing a connect-back mechanism for Marionette. This is something we’ve been talking about for quite some time, and I think we should do this properly so that we do not have to rely on the racy “find a free port, then pass it to the server” approach.

Provided needinfo on bug 1240530. I apparently misread the error message I posted earlier.


Reviewed bug 1241067 which adds handling of invalid selectors in Marionette.

Filed bug 1241466 about exception on artifact builds.

Started work on bug 1153828 which will help us fix the second issue mentioned in bug 1238095, that brings Marionette off CPOWs. Submitted patch for review.

Reviewed bug 1238744.

Re-landed bug 1239373 and new try runs for bug 1240601.


Rebased bug 1205687 which patches ./mach test FILE [, FILE] to be possible to use with Marionette tests.

Replied to thread on dev-platform@ about requiring try runs for patches landed by Autoland.

Sent email to tools-marionette@ regarding enabling xpcshell tests in Marionette.

Provided needinfo on bug 1228079 regarding disabling the re-run logic for Gij on Gaia trees again.

Provided needinfo on bug 1240576 and bug 1241986.


Provided needinfo on bug 1239552.

Reviewed bug 1242081 which disables xpcshell tests in Marionette in Thunderbirds test environment.


Provided more context on bug 1241466.

Filed bug 1242459 about replacing dump() statements with a proper logger.

Filed bug 1242595 about fixing the Marionette:pollForReadyState hack we have for remoteness changes. This should probably be an integral part of the AsyncContentSender proxy so that the Get command isn’t a special snowflake.

Fixed up bug 1153828 by working around bug 1242595.

Attended fortnightly team meeting.

Filed bug 1242651 about making testing/marionette/actions.js stateless.

Filed bug 1242655 that ActionChain#dispatchActions should return a promise.


Provided feedback about profiles in wires on issue 43.

Gave some more information into my investigation yesterday on Unix domain sockets for a connect-back solution for Marionette in bug 1240830.

Submitted PR 44 to wires that resolves a rustc warning introduced by the 1.6 release.

Commented more on dburns’ reply to issue 43 in wires.

After pulling from central my checkout is failing to build again. Spending time figuring out what is wrong.

Submitted PR 287 to provide descriptions of capabilites and some examples what they can be used for to the WebDriver specification.


Replied to armenzg’s question in bug 1240725 about how to work around the bug.

More investigation into build- and linking problems on Linux. It’s likely that is caused by a series of patches ted made to the NSPR build system. Found that bug 1078370 is still causing clang-3.5 to fail, and downgrading to clang-3.4 (for the time being) works. It turns out bug 1243349 was reported for this, and the root cause is that dist/lib was left over after ted made a patch to remove the configure step from NSS. The solution is to replace those instances of dist/lib with dist/bin. This presumably compiles successfully in CI because the build machines have libnspr4-dev installed, which means they pick up the libraries from system rather than from the -L include flag. The current workaround is to set LD_LIBRARY_PATH to dist/bin.

Commented on bug 1240486.

Provided input on WebDriver bug 29394 that Marc Fischer filed about the scrollIntoView usage in the WebDriver specification. He is right we should call out explicitly what the function should be called with.

Cleared needinfo for me on bug 1237958.

Rebased and triggered new try run for bug 1240601 about using a socket timeout for transport.wait_for_port. I cannot tell why it would cause a backout as the try run, the inbound run, and local tests are passing fine. I’m somewhat suspecting it could be caused by a race condition in how the patches were applied to inbound.

Rebased bug 1242459.

Had my 1:1 with dburns.

Filed bug 1243415 about using the same screen capture code for chrome as for content in Marionette.

Patched bug 1140542 which was about the chrome screen capture code not supporting secondary pop-up windows. Not all chrome windows have a <window> element.

Re-landed bug 1240601 on inbound. Because Autoland is down, I had to do it manually. So primitive!

Submitted patch for bug 1242459.


Pushed bug 1242459 to inbound manually, since Autoland is still unavailable.

Provided needinfo on bug 1240725.

Pushed bug 1140542 to inbound.

Responded to and closed issue 45 in wires.

Submitted PR 288 to the WebDriver specification.

Filed bug 1243704 about serialising errors between content- and chrome space in Marionette.


Hosting a WordPress Hack Day event in the office today.

Reviewed bug 1244042 and bug 1243739.

Requested needinfo from reporter on bug 1140542, bug 1240486, and bug 1243866.

Submitted patch for bug 1243704, which is about serialising Error prototypes before passing them over the IPC channels, instead of using CPOWs. Quite happy with how this change turned out.


Rebased, fixed up some issues, and landed bug 1243704 which serialises errors sent over IPC in Marionette.

Filed bug 1244425 about the CPOW usage in GeckoDriver#sendKeysToElement where an element reference is passed from content to chrome in order to gain access to the element.mozSetFileArray API.

Patched bug 1239987 that nukes the marionette-transport package.