<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Simple Path performance test</title>
    <script src="../resources/runner.js"></script>
</head>
<body>
    <pre id="log"></pre>
    <div id="target">
        <p>Lorem ipsum dolor sit amet, vix alii reprimique an, vim cu elit suscipit. Qui in possit accumsan. Ea aperiri pertinax est. Est cu doming sensibus mnesarchum. Ne mea possit pericula tractatos, id nam ponderum legendos periculis.
At pri vide vivendo, essent alienum ad est. Id praesent hendrerit eam, id usu quis dicunt, cibo ludus dolorum et eam. Meis complectitur vim ex. Nec te dolorem lobortis. Pri esse quando ullamcorper an, nec rebum aeterno ea. Te quo decore dissentiet, mea an partiendo concludaturque vituperatoribus, nam quot dicam noster ad.
Cibo tollit perpetua eos an, eu sale expetendis mea, nam at assum convenire necessitatibus. Est cu posse labores, ad postea alterum mea. Mei te salutatus vulputate, dolore maiestatis id per, sit autem nemore eu. Tempor laoreet suavitate sea at. Soleat intellegebat quo te, pro at nemore efficiantur. Pro omnis latine civibus ei, quo an quem paulo audiam. Ea enim ancillae lucilius cum.Lorem ipsum dolor sit amet, vix alii reprimique an, vim cu elit suscipit. Qui in possit accumsan. Ea aperiri pertinax est. Est cu doming sensibus mnesarchum. Ne mea possit pericula tractatos, id nam ponderum legendos periculis.
At pri vide vivendo, essent alienum ad est. Id praesent hendrerit eam, id usu quis dicunt, cibo ludus dolorum et eam. Meis complectitur vim ex. Nec te dolorem lobortis. Pri esse quando ullamcorper an, nec rebum aeterno ea. Te quo decore dissentiet, mea an partiendo concludaturque vituperatoribus, nam quot dicam noster ad.
Cibo tollit perpetua eos an, eu sale expetendis mea, nam at assum convenire necessitatibus. Est cu posse labores, ad postea alterum mea. Mei te salutatus vulputate, dolore maiestatis id per, sit autem nemore eu. Tempor laoreet suavitate sea at. Soleat intellegebat quo te, pro at nemore efficiantur. Pro omnis latine civibus ei, quo an quem paulo audiam. Ea enim ancillae lucilius cum.Lorem ipsum dolor sit amet, vix alii reprimique an, vim cu elit suscipit. Qui in possit accumsan. Ea aperiri pertinax est. Est cu doming sensibus mnesarchum. Ne mea possit pericula tractatos, id nam ponderum legendos periculis.
At pri vide vivendo, essent alienum ad est. Id praesent hendrerit eam, id usu quis dicunt, cibo ludus dolorum et eam. Meis complectitur vim ex. Nec te dolorem lobortis. Pri esse quando ullamcorper an, nec rebum aeterno ea. Te quo decore dissentiet, mea an partiendo concludaturque vituperatoribus, nam quot dicam noster ad.
Cibo tollit perpetua eos an, eu sale expetendis mea, nam at assum convenire necessitatibus. Est cu posse labores, ad postea alterum mea. Mei te salutatus vulputate, dolore maiestatis id per, sit autem nemore eu. Tempor laoreet suavitate sea at. Soleat intellegebat quo te, pro at nemore efficiantur. Pro omnis latine civibus ei, quo an quem paulo audiam. Ea enim ancillae lucilius cum.</p>

        <p>Lorem ipsum dolor sit amet, vix alii reprimique an, vim cu elit suscipit. Qui in possit accumsan. Ea aperiri pertinax est. Est cu doming sensibus mnesarchum. Ne mea possit pericula tractatos, id nam ponderum legendos periculis.
At pri vide vivendo, essent alienum ad est. Id praesent hendrerit eam, id usu quis dicunt, cibo ludus dolorum et eam. Meis complectitur vim ex. Nec te dolorem lobortis. Pri esse quando ullamcorper an, nec rebum aeterno ea. Te quo decore dissentiet, mea an partiendo concludaturque vituperatoribus, nam quot dicam noster ad.
Cibo tollit perpetua eos an, eu sale expetendis mea, nam at assum convenire necessitatibus. Est cu posse labores, ad postea alterum mea. Mei te salutatus vulputate, dolore maiestatis id per, sit autem nemore eu. Tempor laoreet suavitate sea at. Soleat intellegebat quo te, pro at nemore efficiantur. Pro omnis latine civibus ei, quo an quem paulo audiam. Ea enim ancillae lucilius cum.Lorem ipsum dolor sit amet, vix alii reprimique an, vim cu elit suscipit. Qui in possit accumsan. Ea aperiri pertinax est. Est cu doming sensibus mnesarchum. Ne mea possit pericula tractatos, id nam ponderum legendos periculis.
At pri vide vivendo, essent alienum ad est. Id praesent hendrerit eam, id usu quis dicunt, cibo ludus dolorum et eam. Meis complectitur vim ex. Nec te dolorem lobortis. Pri esse quando ullamcorper an, nec rebum aeterno ea. Te quo decore dissentiet, mea an partiendo concludaturque vituperatoribus, nam quot dicam noster ad.
Cibo tollit perpetua eos an, eu sale expetendis mea, nam at assum convenire necessitatibus. Est cu posse labores, ad postea alterum mea. Mei te salutatus vulputate, dolore maiestatis id per, sit autem nemore eu. Tempor laoreet suavitate sea at. Soleat intellegebat quo te, pro at nemore efficiantur. Pro omnis latine civibus ei, quo an quem paulo audiam. Ea enim ancillae lucilius cum.Lorem ipsum dolor sit amet, vix alii reprimique an, vim cu elit suscipit. Qui in possit accumsan. Ea aperiri pertinax est. Est cu doming sensibus mnesarchum. Ne mea possit pericula tractatos, id nam ponderum legendos periculis.
At pri vide vivendo, essent alienum ad est. Id praesent hendrerit eam, id usu quis dicunt, cibo ludus dolorum et eam. Meis complectitur vim ex. Nec te dolorem lobortis. Pri esse quando ullamcorper an, nec rebum aeterno ea. Te quo decore dissentiet, mea an partiendo concludaturque vituperatoribus, nam quot dicam noster ad.
Cibo tollit perpetua eos an, eu sale expetendis mea, nam at assum convenire necessitatibus. Est cu posse labores, ad postea alterum mea. Mei te salutatus vulputate, dolore maiestatis id per, sit autem nemore eu. Tempor laoreet suavitate sea at. Soleat intellegebat quo te, pro at nemore efficiantur. Pro omnis latine civibus ei, quo an quem paulo audiam. Ea enim ancillae lucilius cum.</p>
    </div>
    <script>
        var target = document.getElementById("target");
        var style = target.style;

        function test() {
            style.display = "block";
            style.width = "200px";
            PerfTestRunner.forceLayout();
            style.width = "201px";
            PerfTestRunner.forceLayout();
            style.width = "200px";
            PerfTestRunner.forceLayout();
            style.display = "none";
        }

        PerfTestRunner.measureRunsPerSecond({
            description: "Measures performance of layout on simple Latin characters.",
            run: test
        });
    </script>
</body>
</html>
