<!DOCTYPE html>
<html>
<head>
    <style>
        .test { float: left; width: 50px; height: 50px; border: 1px solid black; }
        #topRightDiff { -webkit-border-top-right-radius: 10px 20px; }
        #topRightSame {-webkit-border-top-right-radius: 10px; }
        #topLeftDiff { -webkit-border-top-left-radius: 10px 20px; }
        #topLeftSame { -webkit-border-top-left-radius: 10px; }
        #bottomRightDiff { -webkit-border-bottom-right-radius: 10px 20px; }
        #bottomRightSame { -webkit-border-bottom-right-radius: 10px; }
        #bottomLeftDiff { -webkit-border-bottom-left-radius: 10px 20px; }
        #bottomLeftSame { -webkit-border-bottom-left-radius: 10px; }
    </style>
    <script type="text/javascript">
        function log(msg)
        {
            document.getElementById('console').appendChild(document.createTextNode(msg + '\n'));
        }

        function test(id, prop)
        {
            var ob = document.getElementById(id + 'Diff');
            log('getPropertyValue(' + prop + '): ' + document.defaultView.getComputedStyle(ob, null).getPropertyValue(prop));
            log('getPropertyCSSValue(' + prop + '): ' + document.defaultView.getComputedStyle(ob, null).getPropertyCSSValue(prop));
            ob = document.getElementById(id + 'Same');
            log('getPropertyValue(' + prop + '): ' + document.defaultView.getComputedStyle(ob, null).getPropertyValue(prop));
            log('getPropertyCSSValue(' + prop + '): ' + document.defaultView.getComputedStyle(ob, null).getPropertyCSSValue(prop));
        }

        function runTests()
        {
            if (window.layoutTestController)
                layoutTestController.dumpAsText();

            test('topRight', '-webkit-border-top-right-radius');
            test('topLeft', '-webkit-border-top-left-radius');
            test('bottomRight', '-webkit-border-bottom-right-radius');
            test('bottomLeft', '-webkit-border-bottom-left-radius');

            log('');

            log('Test getting 0px value border radius.')
            test('bottomRight', '-webkit-border-top-left-radius');
        }
    </script>
</head>
<body onload="runTests();">
    <p>Test calling getPropertyValue on computed styles for border radius properties.</p>
    <pre id="console"></pre>

    <div class="test" id="topRightDiff"></div>
    <div class="test" id="topRightSame"></div>
    <div class="test" id="topLeftDiff"></div>
    <div class="test" id="topLeftSame"></div>
    <div class="test" id="bottomRightDiff"></div>
    <div class="test" id="bottomRightSame"></div>
    <div class="test" id="bottomLeftDiff"></div>
    <div class="test" id="bottomLeftSame"></div>
    <script>
    </script>
</body>
</html>
