<html>
<head>
    <title>Test case for &lt;rdar://problem/7313430&gt; Many crashes in Safari inside Flip4Mac below -[NSAlert didEndAlert:returnCode:contextInfo:]</title>
</head>
<body>
    <h1>Test case for &lt;<a href='rdar://problem/7313430'>rdar://problem/7313430</a>&gt; Many crashes in Safari inside Flip4Mac below -[NSAlert didEndAlert:returnCode:contextInfo:]</h1>

    <p>This test requires Flip4Mac to be installed and an update to be available for the version that is installed.  Previous versions
       of Flip4Mac can be downloaded from <a href='http://dynamic.telestream.net/downloads/download-flip4macwmv.htm'>Telestream's website</a>.
       As of the writing of this test on 2010-04-21 the latest available version of Flip4Mac is 2.3.2.6.  The prior version to that,
       version 2.3.1.2, is therefore currently the most recent version that will reproduce this bug due to it being the most recent version
       with an update available.
    </p>

    <p>Once Flip4Mac is installed, you can test the bug by doing the following.</p>
    <ol>
        <li>Launch the browser with <code>NSZombieEnabled=YES</code> and <code>NSDeallocateZombies=NO</code> set in the enrivonment.</li>
        <li>Load this page.  A Flip4Mac update alert will be displayed, and soon after the page will navigate.</li>
        <li>After the new page has loaded click the "Cancel" button on the update alert.The browser should not crash.</li>
    </ol>

    <p>If you have the correct version of Flip4Mac installed but do not see the update alert displayed when loading this page then you may need to delete
       the Flip4Mac preferences to force it to check for updates.  You can do this by removing <code>~/Library/Preferences/net.telestream.wmv.*</code>
       and then relaunching the browser.</p>

    <object type="application/asx"></object>

    <script>window.setTimeout(function() { window.location = "data:text/html,If the browser does not crash when you click 'Cancel' in the Flip4Mac update alert sheet then the bug is not present."; }, 10000)</script>
</body>
</html>
