<style>
    div {
        border: 1px solid black;
        -webkit-column-rule: 1px solid black;
    }
</style>

<div style="-webkit-columns: 64px 2;" id="parent">
    <div style="-webkit-columns: inherit;" id="child0">
    Vestibulum a sapien. Phasellus ante lacus, vehicula non, cursus a, tempor ut, magna. Suspendisse potenti. Fusce aliquet, odio viverra vulputate dictum, enim odio luctus purus, ut scelerisque quam nulla non est. Donec eros lacus, egestas vitae, lacinia quis, tempor quis, pede. Morbi orci erat, iaculis id, ornare ac, elementum at, sem. Nunc ornare sodales nisi. Morbi interdum commodo nisl. Fusce eget eros non nisi ornare facilisis. Sed placerat, est non posuere posuere, purus sem dignissim libero, a viverra tellus dolor vel lorem. Cras augue. Etiam ultricies consequat odio. Mauris ac libero. Etiam posuere, libero vitae euismod gravida, urna elit imperdiet magna, vel cursus elit felis non mauris. Donec orci erat, porta id, dignissim ut, posuere dictum, leo. Suspendisse scelerisque egestas nulla.
    </div>

    <div style="-webkit-column-count: inherit;" id="child1">
    Vestibulum a sapien. Phasellus ante lacus, vehicula non, cursus a, tempor ut, magna. Suspendisse potenti. Fusce aliquet, odio viverra vulputate dictum, enim odio luctus purus, ut scelerisque quam nulla non est. Donec eros lacus, egestas vitae, lacinia quis, tempor quis, pede. Morbi orci erat, iaculis id, ornare ac, elementum at, sem. Nunc ornare sodales nisi. Morbi interdum commodo nisl. Fusce eget eros non nisi ornare facilisis. Sed placerat, est non posuere posuere, purus sem dignissim libero, a viverra tellus dolor vel lorem. Cras augue. Etiam ultricies consequat odio. Mauris ac libero. Etiam posuere, libero vitae euismod gravida, urna elit imperdiet magna, vel cursus elit felis non mauris. Donec orci erat, porta id, dignissim ut, posuere dictum, leo. Suspendisse scelerisque egestas nulla.
    </div>

    <div style="-webkit-column-width: inherit;" id="child2">
    Vestibulum a sapien. Phasellus ante lacus, vehicula non, cursus a, tempor ut, magna. Suspendisse potenti. Fusce aliquet, odio viverra vulputate dictum, enim odio luctus purus, ut scelerisque quam nulla non est. Donec eros lacus, egestas vitae, lacinia quis, tempor quis, pede. Morbi orci erat, iaculis id, ornare ac, elementum at, sem. Nunc ornare sodales nisi. Morbi interdum commodo nisl. Fusce eget eros non nisi ornare facilisis. Sed placerat, est non posuere posuere, purus sem dignissim libero, a viverra tellus dolor vel lorem. Cras augue. Etiam ultricies consequat odio. Mauris ac libero. Etiam posuere, libero vitae euismod gravida, urna elit imperdiet magna, vel cursus elit felis non mauris. Donec orci erat, porta id, dignissim ut, posuere dictum, leo. Suspendisse scelerisque egestas nulla.
    </div>
</div>
<pre id="result"/>
<script>
    var output = "";

    function test(id, property, value)
    {
        var element = document.getElementById(id);
        var result = window.getComputedStyle(element, null).getPropertyValue(property);
        output += (result == value) ? "Pass: " : "Fail: ";
        output += id + " " + property + " = " + result;
        output += (result == value) ? "\n" : (" expected " + value + "\n");
    }

    if (window.testRunner) {
        testRunner.dumpAsText();
        document.getElementById("parent").style.display = "none";
    }

    test("parent", "-webkit-column-count", 2);
    test("parent", "-webkit-column-width", "64px");
    test("child0", "-webkit-column-count", 2);
    test("child0", "-webkit-column-width", "64px");
    test("child1", "-webkit-column-count", 2);
    test("child1", "-webkit-column-width", "auto");
    test("child2", "-webkit-column-count", "auto");
    test("child2", "-webkit-column-width", "64px");
	
    document.getElementById("result").innerText = output;
</script>
