Tests public interface of WebInspector Extensions API

Started extension.
Running tests...
RUNNING TEST: extension_testAPI
{
    audits : {
    }
    console : {
        onMessageAdded : {
            addListener : <function>
            removeListener : <function>
        }
    }
    inspectedWindow : {
        onResourceAdded : {
            addListener : <function>
            removeListener : <function>
        }
        onResourceContentCommitted : {
            addListener : <function>
            removeListener : <function>
        }
    }
    network : {
        onFinished : {
            addListener : <function>
            removeListener : <function>
        }
        onNavigated : {
            addListener : <function>
            removeListener : <function>
        }
        onRequestFinished : {
            addListener : <function>
            removeListener : <function>
        }
    }
    panels : {
        elements : {
            createSidebarPane : <function>
            onSelectionChanged : {
                addListener : <function>
                removeListener : <function>
            }
        }
    }
    resources : {
        onFinished : {
            addListener : <function>
            removeListener : <function>
        }
        onNavigated : {
            addListener : <function>
            removeListener : <function>
        }
        onRequestFinished : {
            addListener : <function>
            removeListener : <function>
        }
    }
    timeline : {
        onEventRecorded : {
            addListener : <function>
            removeListener : <function>
        }
    }
}
All tests done.

