<html>
<head>
<style>
body { margin: 0; padding: 0 }
</style>
</head>
<body>
<div id="test" contenteditable>FAILURE</div>
<p id="console"></p>
<script type="text/javascript">
    
    var console_messages = document.createElement("ol");
    
    function log(message)
    {
        var item = document.createElement("li");
        item.appendChild(document.createTextNode(message));
        console_messages.appendChild(item);
    }
    
    if (window.testRunner) {
        
        try {

            testRunner.dumpAsText();
                        document.getElementById("test").focus();

            var substr = textInputController.attributedSubstringFromRange(0, 2);
//            log(substr); -- attributedSubstringFromRange is not implemented in WebKit yet
    
            var attrString = textInputController.makeAttributedString("test");
            log(attrString.getAttributeNamesAtIndex(0));
            log(attrString.length());
            log(attrString.string());

            attrString.addAttribute("NSToolTip", "Tool Tip");
            attrString.addFontAttribute("NSFont", "Monaco", 14);
            attrString.addColorAttribute("NSForegroundColor", 1, 1, 1, 0.5);

            attrString.addFontAttributeForRange("NSFont", "Monaco", 12, 0, 2);
            attrString.addColorAttributeForRange("NSForegroundColor", 1, 0.5, 1, 0.5, 0, 2);
            attrString.addAttributeForRange("NSObliqueness", 0.5, 0, 2);

            log(attrString.length());
            log(attrString.string());
            
            log(attrString.getAttributeNamesAtIndex(0));
            log(attrString.getAttributeNamesAtIndex(3));

            log(attrString.getAttributeValueAtIndex("NSObliqueness", 0));
            log(attrString.getAttributeValueAtIndex("NSObliqueness", 3));

            log(attrString.getAttributeValueAtIndex("NSForegroundColor", 1));
            
            document.execCommand("SelectAll");
            
            textInputController.insertText(attrString);
            
        } catch (ex) {
            document.write("Exception: " + ex.description);
        }
        
        document.getElementById("console").appendChild(console_messages);
        
    } else {
        document.write("(cannot run interactively)");
    }
</script>
</body>
</html>
