diff -r 000000000000 -r 6474c204b198 toolkit/components/thumbnails/test/browser_thumbnails_bg_crash_during_capture.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolkit/components/thumbnails/test/browser_thumbnails_bg_crash_during_capture.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,36 @@ +/* Any copyright is dedicated to the Public Domain. + * http://creativecommons.org/publicdomain/zero/1.0/ */ + +function runTests() { + let crashObserver = bgAddCrashObserver(); + + // make a good capture first - this ensures we have the + let goodUrl = bgTestPageURL(); + yield bgCapture(goodUrl); + ok(thumbnailExists(goodUrl), "Thumbnail should be cached after capture"); + removeThumbnail(goodUrl); + + // inject our content script. + let mm = bgInjectCrashContentScript(); + + // queue up 2 captures - the first has a wait, so this is the one that + // will die. The second one should immediately capture after the crash. + let waitUrl = bgTestPageURL({ wait: 30000 }); + let sawWaitUrlCapture = false; + bgCapture(waitUrl, { onDone: () => { + sawWaitUrlCapture = true; + ok(!thumbnailExists(waitUrl), "Thumbnail should not have been saved due to the crash"); + }}); + bgCapture(goodUrl, { onDone: () => { + ok(sawWaitUrlCapture, "waitUrl capture should have finished first"); + ok(thumbnailExists(goodUrl), "We should have recovered and completed the 2nd capture after the crash"); + removeThumbnail(goodUrl); + // Test done. + ok(crashObserver.crashed, "Saw a crash from this test"); + next(); + }}); + + info("Crashing the thumbnail content process."); + mm.sendAsyncMessage("thumbnails-test:crash"); + yield true; +}