2006-06-02 Steve Falkenburg <sfalken@apple.com>
authorsfalken <sfalken@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 2 Jun 2006 19:32:33 +0000 (19:32 +0000)
committersfalken <sfalken@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 2 Jun 2006 19:32:33 +0000 (19:32 +0000)
        Reviewed by darin.

        New hosting for Spinneret to avoid static linking

        * COM: Added.
        * COM/Interfaces: Added.
        * COM/Interfaces/DOMCSS.idl: Added.
        * COM/Interfaces/DOMCore.idl: Added.
        * COM/Interfaces/DOMHTML.idl: Added.
        * COM/Interfaces/DOMRange.idl: Added.
        * COM/Interfaces/IWebArchive.idl: Added.
        * COM/Interfaces/IWebAttributedString.idl: Added.
        * COM/Interfaces/IWebBackForwardList.idl: Added.
        * COM/Interfaces/IWebDataSource.idl: Added.
        * COM/Interfaces/IWebDocument.idl: Added.
        * COM/Interfaces/IWebDownload.idl: Added.
        * COM/Interfaces/IWebEditingDelegate.idl: Added.
        * COM/Interfaces/IWebError.idl: Added.
        * COM/Interfaces/IWebFrame.idl: Added.
        * COM/Interfaces/IWebFrameLoadDelegate.idl: Added.
        * COM/Interfaces/IWebFrameView.idl: Added.
        * COM/Interfaces/IWebHistoryItem.idl: Added.
        * COM/Interfaces/IWebIconDatabase.idl: Added.
        * COM/Interfaces/IWebImage.idl: Added.
        * COM/Interfaces/IWebMutableURLRequest.idl: Added.
        * COM/Interfaces/IWebNotification.idl: Added.
        * COM/Interfaces/IWebPolicyDelegate.idl: Added.
        * COM/Interfaces/IWebPreferences.idl: Added.
        * COM/Interfaces/IWebResource.idl: Added.
        * COM/Interfaces/IWebResourceLoadDelegate.idl: Added.
        * COM/Interfaces/IWebScriptObject.idl: Added.
        * COM/Interfaces/IWebUIDelegate.idl: Added.
        * COM/Interfaces/IWebURLAuthenticationChallenge.idl: Added.
        * COM/Interfaces/IWebURLRequest.idl: Added.
        * COM/Interfaces/IWebURLResponse.idl: Added.
        * COM/Interfaces/IWebUndoManager.idl: Added.
        * COM/Interfaces/IWebView.idl: Added.
        * COM/Interfaces/WebKit.idl: Added.
        * COM/WebBackForwardList.cpp: Added.
        (WebBackForwardList::WebBackForwardList):
        (WebBackForwardList::~WebBackForwardList):
        (WebBackForwardList::createInstance):
        (WebBackForwardList::QueryInterface):
        (WebBackForwardList::AddRef):
        (WebBackForwardList::Release):
        (WebBackForwardList::addItem):
        (WebBackForwardList::goBack):
        (WebBackForwardList::goForward):
        (WebBackForwardList::goToItem):
        (WebBackForwardList::backItem):
        (WebBackForwardList::currentItem):
        (WebBackForwardList::forwardItem):
        (WebBackForwardList::backListWithLimit):
        (WebBackForwardList::forwardListWithLimit):
        (WebBackForwardList::capacity):
        (WebBackForwardList::setCapacity):
        (WebBackForwardList::backListCount):
        (WebBackForwardList::forwardListCount):
        (WebBackForwardList::containsItem):
        (WebBackForwardList::itemAtIndex):
        (WebBackForwardList::setPageCacheSize):
        (WebBackForwardList::pageCacheSize):
        * COM/WebBackForwardList.h: Added.
        * COM/WebDataSource.cpp: Added.
        (WebDataSource::WebDataSource):
        (WebDataSource::~WebDataSource):
        (WebDataSource::createInstance):
        (WebDataSource::QueryInterface):
        (WebDataSource::AddRef):
        (WebDataSource::Release):
        (WebDataSource::initWithRequest):
        (WebDataSource::data):
        (WebDataSource::representation):
        (WebDataSource::webFrame):
        (WebDataSource::initialRequest):
        (WebDataSource::request):
        (WebDataSource::response):
        (WebDataSource::textEncodingName):
        (WebDataSource::isLoading):
        (WebDataSource::pageTitle):
        (WebDataSource::unreachableURL):
        (WebDataSource::webArchive):
        (WebDataSource::mainResource):
        (WebDataSource::subresources):
        (WebDataSource::subresourceForURL):
        (WebDataSource::addSubresource):
        * COM/WebDataSource.h: Added.
        * COM/WebFrame.cpp: Added.
        (WebFrame::WebFramePrivate::WebFramePrivate):
        (WebFrame::WebFramePrivate::~WebFramePrivate):
        (WebFrame::WebFrame):
        (WebFrame::~WebFrame):
        (WebFrame::createInstance):
        (WebFrame::QueryInterface):
        (WebFrame::AddRef):
        (WebFrame::Release):
        (WebFrame::initWithName):
        (WebFrame::name):
        (WebFrame::webView):
        (WebFrame::frameView):
        (WebFrame::DOMDocument):
        (WebFrame::frameElement):
        (WebFrame::loadRequest):
        (WebFrame::loadData):
        (WebFrame::loadHTMLString):
        (WebFrame::loadAlternateHTMLString):
        (WebFrame::loadArchive):
        (WebFrame::dataSource):
        (WebFrame::provisionalDataSource):
        (WebFrame::stopLoading):
        (WebFrame::reload):
        (WebFrame::findFrameNamed):
        (WebFrame::parentFrame):
        (WebFrame::childFrames):
        (WebFrame::paint):
        (WebFrame::impl):
        (WebFrame::loadDataSource):
        (WebFrame::loading):
        (WebFrame::goToItem):
        (WebFrame::loadItem):
        (WebSystemMainMemory):
        (WebFrame::getObjectCacheSize):
        (WebFrame::receivedRedirect):
        (WebFrame::receivedResponse):
        (WebFrame::receivedData):
        (WebFrame::receivedAllData):
        (WebFrame::openURL):
        (WebFrame::submitForm):
        (WebFrame::setTitle):
        (WebFrame::setStatusText):
        * COM/WebFrame.h: Added.
        * COM/WebHistoryItem.cpp: Added.
        (WebHistoryItem::WebHistoryItem):
        (WebHistoryItem::~WebHistoryItem):
        (WebHistoryItem::createInstance):
        (WebHistoryItem::QueryInterface):
        (WebHistoryItem::AddRef):
        (WebHistoryItem::Release):
        (WebHistoryItem::initWithURLString):
        (WebHistoryItem::originalURLString):
        (WebHistoryItem::URLString):
        (WebHistoryItem::title):
        (WebHistoryItem::lastVisitedTimeInterval):
        (WebHistoryItem::setAlternateTitle):
        (WebHistoryItem::alternateTitle):
        (WebHistoryItem::icon):
        * COM/WebHistoryItem.h: Added.
        * COM/WebIconDatabase.cpp: Added.
        (WebIconDatabase::WebIconDatabase):
        (WebIconDatabase::~WebIconDatabase):
        (WebIconDatabase::createInstance):
        (WebIconDatabase::QueryInterface):
        (WebIconDatabase::AddRef):
        (WebIconDatabase::Release):
        (WebIconDatabase::sharedIconDatabase):
        (WebIconDatabase::iconForURL):
        (WebIconDatabase::defaultIconWithSize):
        (WebIconDatabase::retainIconForURL):
        (WebIconDatabase::releaseIconForURL):
        (WebIconDatabase::delayDatabaseCleanup):
        (WebIconDatabase::allowDatabaseCleanup):
        * COM/WebIconDatabase.h: Added.
        * COM/WebKitClassFactory.cpp: Added.
        (WebKitClassFactory::WebKitClassFactory):
        (WebKitClassFactory::~WebKitClassFactory):
        (WebKitClassFactory::QueryInterface):
        (WebKitClassFactory::AddRef):
        (WebKitClassFactory::Release):
        (WebKitClassFactory::CreateInstance):
        (WebKitClassFactory::LockServer):
        * COM/WebKitClassFactory.h: Added.
        * COM/WebKitDLL.cpp: Added.
        (DllMain):
        (DllGetClassObject):
        (DllCanUnloadNow):
        (DllUnregisterServer):
        (DllRegisterServer):
        * COM/WebKitDLL.h: Added.
        * COM/WebMutableURLRequest.cpp: Added.
        (WebMutableURLRequest::WebMutableURLRequest):
        (WebMutableURLRequest::~WebMutableURLRequest):
        (WebMutableURLRequest::createInstance):
        (WebMutableURLRequest::QueryInterface):
        (WebMutableURLRequest::AddRef):
        (WebMutableURLRequest::Release):
        (WebMutableURLRequest::requestWithURL):
        (WebMutableURLRequest::allHTTPHeaderFields):
        (WebMutableURLRequest::cachePolicy):
        (WebMutableURLRequest::HTTPBody):
        (WebMutableURLRequest::HTTPBodyStream):
        (WebMutableURLRequest::HTTPMethod):
        (WebMutableURLRequest::HTTPShouldHandleCookies):
        (WebMutableURLRequest::initWithURL):
        (WebMutableURLRequest::mainDocumentURL):
        (WebMutableURLRequest::timeoutInterval):
        (WebMutableURLRequest::URL):
        (WebMutableURLRequest::valueForHTTPHeaderField):
        (WebMutableURLRequest::addValue):
        (WebMutableURLRequest::setAllHTTPHeaderFields):
        (WebMutableURLRequest::setCachePolicy):
        (WebMutableURLRequest::setHTTPBody):
        (WebMutableURLRequest::setHTTPBodyStream):
        (WebMutableURLRequest::setHTTPMethod):
        (WebMutableURLRequest::setHTTPShouldHandleCookies):
        (WebMutableURLRequest::setMainDocumentURL):
        (WebMutableURLRequest::setTimeoutInterval):
        (WebMutableURLRequest::setURL):
        (WebMutableURLRequest::setValue):
        (WebMutableURLRequest::setFormData):
        (WebMutableURLRequest::formData):
        * COM/WebMutableURLRequest.h: Added.
        * COM/WebView.cpp: Added.
        (WebView::WebView):
        (WebView::~WebView):
        (WebView::createInstance):
        (WebView::mouseMoved):
        (WebView::mouseDown):
        (WebView::mouseUp):
        (WebView::mouseDoubleClick):
        (WebView::keyPress):
        (registerWebView):
        (WebViewWndProc):
        (calculateScrollDelta):
        (scrollMessageForKey):
        (WebView::goToItem):
        (WebView::QueryInterface):
        (WebView::AddRef):
        (WebView::Release):
        (WebView::canShowMIMEType):
        (WebView::canShowMIMETypeAsHTML):
        (WebView::MIMETypesShownAsHTML):
        (WebView::setMIMETypesShownAsHTML):
        (WebView::URLFromPasteboard):
        (WebView::URLTitleFromPasteboard):
        (WebView::initWithFrame):
        (WebView::setUIDelegate):
        (WebView::uiDelegate):
        (WebView::setResourceLoadDelegate):
        (WebView::resourceLoadDelegate):
        (WebView::setDownloadDelegate):
        (WebView::downloadDelegate):
        (WebView::setFrameLoadDelegate):
        (WebView::frameLoadDelegate):
        (WebView::setPolicyDelegate):
        (WebView::policyDelegate):
        (WebView::mainFrame):
        (WebView::backForwardList):
        (WebView::setMaintainsBackForwardList):
        (WebView::goBack):
        (WebView::goForward):
        (WebView::goToBackForwardItem):
        (WebView::setTextSizeMultiplier):
        (WebView::textSizeMultiplier):
        (WebView::setApplicationNameForUserAgent):
        (WebView::applicationNameForUserAgent):
        (WebView::setCustomUserAgent):
        (WebView::customUserAgent):
        (WebView::userAgentForURL):
        (WebView::supportsTextEncoding):
        (WebView::setCustomTextEncodingName):
        (WebView::customTextEncodingName):
        (WebView::setMediaStyle):
        (WebView::mediaStyle):
        (WebView::stringByEvaluatingJavaScriptFromString):
        (WebView::windowScriptObject):
        (WebView::setPreferences):
        (WebView::preferences):
        (WebView::setPreferencesIdentifier):
        (WebView::preferencesIdentifier):
        (WebView::setHostWindow):
        (WebView::hostWindow):
        (WebView::searchFor):
        (WebView::registerViewClass):
        (WebView::takeStringURLFrom):
        (WebView::stopLoading):
        (WebView::reload):
        (WebView::canGoBack):
        (WebView::canGoForward):
        (WebView::canMakeTextLarger):
        (WebView::makeTextLarger):
        (WebView::canMakeTextSmaller):
        (WebView::makeTextSmaller):
        (WebView::computedStyleForElement):
        (WebView::editableDOMRangeForPoint):
        (WebView::setSelectedDOMRange):
        (WebView::selectedDOMRange):
        (WebView::selectionAffinity):
        (WebView::setEditable):
        (WebView::isEditable):
        (WebView::setTypingStyle):
        (WebView::typingStyle):
        (WebView::setSmartInsertDeleteEnabled):
        (WebView::smartInsertDeleteEnabled):
        (WebView::setContinuousSpellCheckingEnabled):
        (WebView::isContinuousSpellCheckingEnabled):
        (WebView::spellCheckerDocumentTag):
        (WebView::undoManager):
        (WebView::setEditingDelegate):
        (WebView::editingDelegate):
        (WebView::styleDeclarationWithText):
        (WebView::replaceSelectionWithNode):
        (WebView::replaceSelectionWithText):
        (WebView::replaceSelectionWithMarkupString):
        (WebView::replaceSelectionWithArchive):
        (WebView::deleteSelection):
        (WebView::applyStyle):
        (WebView::copy):
        (WebView::cut):
        (WebView::paste):
        (WebView::copyFont):
        (WebView::pasteFont):
        (WebView::delete_):
        (WebView::pasteAsPlainText):
        (WebView::pasteAsRichText):
        (WebView::changeFont):
        (WebView::changeAttributes):
        (WebView::changeDocumentBackgroundColor):
        (WebView::changeColor):
        (WebView::alignCenter):
        (WebView::alignJustified):
        (WebView::alignLeft):
        (WebView::alignRight):
        (WebView::checkSpelling):
        (WebView::showGuessPanel):
        (WebView::performFindPanelAction):
        (WebView::startSpeaking):
        (WebView::stopSpeaking):
        (WebView::viewWindow):
        * COM/WebView.h: Added.
        * WebKit.vcproj: Added.
        * WebKit.vcproj/Interfaces.vcproj: Added.
        * WebKit.vcproj/WebKit.def: Added.
        * WebKit.vcproj/WebKit.rc: Added.
        * WebKit.vcproj/WebKit.sln: Added.
        * WebKit.vcproj/WebKit.vcproj: Added.
        * WebKit.vcproj/WebKitGUID.vcproj: Added.
        * WebKit.vcproj/autoversion.h: Added.
        * WebKit.vcproj/resource.h: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@14688 268f45cc-cd09-0410-ab3c-d52691b4dbfc

59 files changed:
WebKit/COM/Interfaces/DOMCSS.idl [new file with mode: 0644]
WebKit/COM/Interfaces/DOMCore.idl [new file with mode: 0644]
WebKit/COM/Interfaces/DOMHTML.idl [new file with mode: 0644]
WebKit/COM/Interfaces/DOMRange.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebArchive.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebAttributedString.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebBackForwardList.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebDataSource.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebDocument.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebDownload.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebEditingDelegate.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebError.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebFrame.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebFrameLoadDelegate.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebFrameView.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebHistoryItem.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebIconDatabase.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebImage.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebMutableURLRequest.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebNotification.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebPolicyDelegate.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebPreferences.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebResource.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebResourceLoadDelegate.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebScriptObject.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebUIDelegate.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebURLAuthenticationChallenge.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebURLRequest.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebURLResponse.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebUndoManager.idl [new file with mode: 0644]
WebKit/COM/Interfaces/IWebView.idl [new file with mode: 0644]
WebKit/COM/Interfaces/WebKit.idl [new file with mode: 0644]
WebKit/COM/WebBackForwardList.cpp [new file with mode: 0644]
WebKit/COM/WebBackForwardList.h [new file with mode: 0644]
WebKit/COM/WebDataSource.cpp [new file with mode: 0644]
WebKit/COM/WebDataSource.h [new file with mode: 0644]
WebKit/COM/WebFrame.cpp [new file with mode: 0644]
WebKit/COM/WebFrame.h [new file with mode: 0644]
WebKit/COM/WebHistoryItem.cpp [new file with mode: 0644]
WebKit/COM/WebHistoryItem.h [new file with mode: 0644]
WebKit/COM/WebIconDatabase.cpp [new file with mode: 0644]
WebKit/COM/WebIconDatabase.h [new file with mode: 0644]
WebKit/COM/WebKitClassFactory.cpp [new file with mode: 0644]
WebKit/COM/WebKitClassFactory.h [new file with mode: 0644]
WebKit/COM/WebKitDLL.cpp [new file with mode: 0644]
WebKit/COM/WebKitDLL.h [new file with mode: 0644]
WebKit/COM/WebMutableURLRequest.cpp [new file with mode: 0644]
WebKit/COM/WebMutableURLRequest.h [new file with mode: 0644]
WebKit/COM/WebView.cpp [new file with mode: 0644]
WebKit/COM/WebView.h [new file with mode: 0644]
WebKit/ChangeLog
WebKit/WebKit.vcproj/Interfaces.vcproj [new file with mode: 0644]
WebKit/WebKit.vcproj/WebKit.def [new file with mode: 0644]
WebKit/WebKit.vcproj/WebKit.rc [new file with mode: 0644]
WebKit/WebKit.vcproj/WebKit.sln [new file with mode: 0644]
WebKit/WebKit.vcproj/WebKit.vcproj [new file with mode: 0644]
WebKit/WebKit.vcproj/WebKitGUID.vcproj [new file with mode: 0644]
WebKit/WebKit.vcproj/autoversion.h [new file with mode: 0644]
WebKit/WebKit.vcproj/resource.h [new file with mode: 0644]

diff --git a/WebKit/COM/Interfaces/DOMCSS.idl b/WebKit/COM/Interfaces/DOMCSS.idl
new file mode 100644 (file)
index 0000000..7da55f1
--- /dev/null
@@ -0,0 +1,239 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "DOMCore.idl";\r
+import "IWebScriptObject.idl";\r
+\r
+interface IDOMObject;\r
+interface IDOMCSSValue;\r
+interface IDOMCSSStyleSheet;\r
+interface IDOMCSSRule;\r
+\r
+/*\r
+    @interface DOMCSSRuleList : DOMObject
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(D45DA43D-5EDB-4315-A097-3ED3FA089193),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMCSSRuleList : IDOMObject\r
+{\r
+    /*\r
+        - (unsigned)length;
+    */
+    HRESULT length([out, retval] UINT* result);
+
+    /*
+        - (DOMCSSRule *)item:(unsigned)index;
+    */
+    HRESULT item([in] UINT index, [out, retval] IDOMCSSRule* result);
+}\r
+\r
+/*\r
+    @interface DOMCSSRule : DOMObject
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(05947A31-9E1C-4c98-8608-6688959D6542),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMCSSRule : IDOMObject\r
+{\r
+    /*\r
+        - (unsigned short)type;
+    */
+    HRESULT type([out, retval] unsigned short* result);
+
+    /*
+        - (NSString *)cssText;
+    */
+    HRESULT cssText([out, retval] BSTR* text);
+
+    /*
+        - (void)setCssText:(NSString *)cssText;
+    */
+    HRESULT setCssText([in] BSTR cssText);
+
+    /*
+        - (DOMCSSStyleSheet *)parentStyleSheet;
+    */
+    HRESULT parentStyleSheet([out, retval] IDOMCSSStyleSheet* sheet);
+
+    /*
+        - (DOMCSSRule *)parentRule;
+    */
+    HRESULT parentRule([out, retval] IDOMCSSRule* rule);
+}
+\r
+/*\r
+    @interface DOMCSSStyleDeclaration : DOMObject
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(DBBE9A6B-D505-4647-B4AB-40A7CF3EE63E),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMCSSStyleDeclaration : IDOMObject\r
+{\r
+    /*\r
+        - (NSString *)cssText;
+    */
+    HRESULT cssText([out, retval] BSTR* result);
+
+    /*
+        - (void)setCssText:(NSString *)cssText;
+    */
+    HRESULT setCssText([in] BSTR cssText);
+
+    /*
+        - (NSString *)getPropertyValue:(NSString *)propertyName;
+    */
+    HRESULT getPropertyValue([in] BSTR propertyName, [out, retval] BSTR* result);
+
+    /*
+        - (DOMCSSValue *)getPropertyCSSValue:(NSString *)propertyName;
+    */
+    HRESULT getPropertyCSSValue([in] BSTR propertyName, [out, retval] IDOMCSSValue** result);
+
+    /*
+        - (NSString *)removeProperty:(NSString *)propertyName;
+    */
+    HRESULT removeProperty([in] BSTR propertyName, [out, retval] BSTR* result);
+
+    /*
+        - (NSString *)getPropertyPriority:(NSString *)propertyName;
+    */
+    HRESULT getPropertyPriority([in] BSTR propertyName, [out, retval] BSTR* result);
+
+    /*
+        - (void)setProperty:(NSString *)propertyName :(NSString *)value :(NSString *)priority;
+    */
+    HRESULT setProperty([in] BSTR propertyName, [in] BSTR value, [in] BSTR priority);
+
+    /*
+        - (unsigned)length;
+    */
+    HRESULT length([out, retval] UINT* result);
+
+    /*
+        - (NSString *)item:(unsigned)index;
+    */
+    HRESULT item([in] UINT index, [out, retval] BSTR* result);
+
+    /*
+        - (DOMCSSRule *)parentRule;
+    */
+    HRESULT parentRule([out, retval] IDOMCSSRule** result);
+}\r
+\r
+/*\r
+    @interface DOMCSSValue : DOMObject
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(51D29553-2AF7-4f52-AFE6-3C59196A8BAA),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMCSSValue : IDOMObject\r
+{\r
+    /*\r
+        - (NSString *)cssText;
+    */
+    HRESULT cssText([out, retval] BSTR* text);
+
+    /*
+        - (void)setCssText:(NSString *)cssText;
+    */
+    HRESULT setCssText([in] BSTR text);
+
+    /*
+        - (unsigned short)cssValueType;
+    */
+    HRESULT cssValueType([out, retval] unsigned short *valueType);
+}
+
+/*\r
+    @interface DOMCSSStyleSheet : DOMStyleSheet
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(14B1C213-1458-48a1-AD8F-54BFE64F9ECF),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMCSSStyleSheet : IDOMObject\r
+{
+    /*
+        - (DOMCSSRule *)ownerRule;
+    */
+    HRESULT ownerRule([out, retval] IDOMCSSRule** rule);
+
+    /*
+        - (DOMCSSRuleList *)cssRules;
+    */
+    HRESULT cssRules([out, retval] IDOMCSSRuleList** ruleList);
+
+    /*
+        - (unsigned)insertRule:(NSString *)rule :(unsigned)index;
+    */
+    HRESULT insertRule([in] BSTR rule, [in] UINT index, [out, retval] UINT* result);
+
+    /*
+        - (void)deleteRule:(unsigned)index;
+    */
+    HRESULT deleteRule([in] UINT index);
+}
diff --git a/WebKit/COM/Interfaces/DOMCore.idl b/WebKit/COM/Interfaces/DOMCore.idl
new file mode 100644 (file)
index 0000000..e0e1987
--- /dev/null
@@ -0,0 +1,734 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "IWebScriptObject.idl";\r
+\r
+interface IWebScriptObject;\r
+interface IDOMNodeList;\r
+interface IDOMNamedNodeMap;\r
+interface IDOMDocumentType;\r
+interface IDOMElement;\r
+interface IDOMDocumentFragment;\r
+interface IDOMText;\r
+interface IDOMComment;\r
+interface IDOMCDATASection;\r
+interface IDOMProcessingInstruction;\r
+interface IDOMAttr;\r
+interface IDOMEntityReference;\r
+interface IDOMDocument;\r
+\r
+/*\r
+    @interface DOMObject : WebScriptObject <NSCopying>
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(A27FA225-F34E-425d-88EB-A35BD105A527),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMObject : IWebScriptObject\r
+{\r
+}\r
+\r
+/*
+    @interface DOMImplementation : DOMObject
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(6E48C25D-E542-4d1a-BC73-ACDC21E39C56),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMImplementation : IDOMObject\r
+{\r
+    /*\r
+        - (BOOL)hasFeature:(NSString *)feature :(NSString *)version;
+    */
+    HRESULT hasFeature([in] BSTR feature, [in] BSTR version, [out, retval] BOOL* result);
+
+    /*
+        - (DOMDocumentType *)createDocumentType:(NSString *)qualifiedName :(NSString *)publicId :(NSString *)systemId;
+    */
+    HRESULT createDocumentType([in] BSTR qualifiedName, [in] BSTR publicId, [in] BSTR systemId, [out, retval] IDOMDocumentType** result);
+
+    /*
+        - (DOMDocument *)createDocument:(NSString *)namespaceURI :(NSString *)qualifiedName :(DOMDocumentType *)doctype;
+    */
+    HRESULT createDocument([in] BSTR namespaceURI, [in] BSTR qualifiedName, [in] IDOMDocumentType* doctype, [out, retval] IDOMDocument** result);
+}
+
+/*
+    @interface DOMNode : DOMObject <DOMEventTarget>
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(3EEA3E20-72DA-4be7-954F-79B5A14AD726),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMNode : IDOMObject\r
+{\r
+    /*\r
+        - (NSString *)nodeName;
+    */
+    HRESULT nodeName([out, retval] BSTR* result);
+
+    /*
+        - (NSString *)nodeValue;
+    */
+    HRESULT nodeValue([out, retval] BSTR* result);
+
+    /*
+        - (void)setNodeValue:(NSString *)string;
+    */
+    HRESULT setNodeValue([in] BSTR value);
+
+    /*
+        - (unsigned short)nodeType;
+    */
+    HRESULT nodeType([out, retval] unsigned short* result);
+
+    /*
+        - (DOMNode *)parentNode;
+    */
+    HRESULT parentNode([out, retval] IDOMNode** result);
+
+    /*
+        - (DOMNodeList *)childNodes;
+    */
+    HRESULT childNodes([out, retval] IDOMNodeList** result);
+
+    /*
+        - (DOMNode *)firstChild;
+    */
+    HRESULT firstChild([out, retval] IDOMNode** result);
+
+    /*
+        - (DOMNode *)lastChild;
+    */
+    HRESULT lastChild([out, retval] IDOMNode** result);
+
+    /*
+        - (DOMNode *)previousSibling;
+    */
+    HRESULT previousSibling([out, retval] IDOMNode** result);
+
+    /*
+        - (DOMNode *)nextSibling;
+    */
+    HRESULT nextSibling([out, retval] IDOMNode** result);
+
+    /*
+        - (DOMNamedNodeMap *)attributes;
+    */
+    HRESULT attributes([out, retval] IDOMNamedNodeMap** result);
+
+    /*
+        - (DOMDocument *)ownerDocument;
+    */
+    HRESULT ownerDocument([out, retval] IDOMDocument** result);
+
+    /*
+        - (DOMNode *)insertBefore:(DOMNode *)newChild :(DOMNode *)refChild;
+    */
+    HRESULT insertBefore([in] IDOMNode* newChild, [in] IDOMNode* refChild, [out, retval] IDOMNode** result);
+
+    /*
+        - (DOMNode *)replaceChild:(DOMNode *)newChild :(DOMNode *)oldChild;
+    */
+    HRESULT replaceChild([in] IDOMNode* newChild, [in] IDOMNode* oldChild, [out, retval] IDOMNode** result);
+
+    /*
+        - (DOMNode *)removeChild:(DOMNode *)oldChild;
+    */
+    HRESULT removeChild([in] IDOMNode* oldChild, [out, retval] IDOMNode** result);
+
+    /*
+        - (DOMNode *)appendChild:(DOMNode *)newChild;
+    */
+    HRESULT appendChild([in] IDOMNode* oldChild, [out, retval] IDOMNode** result);
+
+    /*
+        - (BOOL)hasChildNodes;
+    */
+    HRESULT hasChildNodes([out, retval] BOOL* result);
+
+    /*
+        - (DOMNode *)cloneNode:(BOOL)deep;
+    */
+    HRESULT cloneNode([in] BOOL deep, [out, retval] IDOMNode** result);
+
+    /*
+        - (void)normalize;
+    */
+    HRESULT normalize();
+
+    /*
+        - (BOOL)isSupported:(NSString *)feature :(NSString *)version;
+    */
+    HRESULT isSupported([in] BSTR feature, [in] BSTR version, [out, retval] BOOL* result);
+
+    /*
+        - (NSString *)namespaceURI;
+    */
+    HRESULT namespaceURI([out, retval] BSTR* result);
+
+    /*
+        - (NSString *)prefix;
+    */
+    HRESULT prefix([out, retval] BSTR* result);
+
+    /*
+        - (void)setPrefix:(NSString *)prefix;
+    */
+    HRESULT setPrefix([in] BSTR prefix);
+
+    /*
+        - (NSString *)localName;
+    */
+    HRESULT localName([out, retval] BSTR* result);
+
+    /*
+        - (BOOL)hasAttributes;
+    */\r
+    HRESULT hasAttributes([out, retval] BOOL* result);\r
+}\r
+\r
+/*
+    @interface DOMNodeList : DOMObject
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(10A05A96-CBD9-4493-83AD-FAFB952615CE),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMNodeList : IDOMObject\r
+{\r
+    /*\r
+        - (DOMNode *)item:(unsigned)index;
+    */
+    HRESULT item([in] UINT index, [out, retval] IDOMNode** result);
+
+    /*
+        - (unsigned)length;
+    */
+    HRESULT length([out, retval] UINT* result);
+}\r
+\r
+/*\r
+    @interface DOMNamedNodeMap : DOMObject
+*/\r
+[\r
+    local,\r
+    object,\r
+    uuid(E6CBF396-C9F9-431b-A8D6-BCB525067E9F),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMNamedNodeMap : IDOMObject\r
+{\r
+    /*\r
+        - (DOMNode *)getNamedItem:(NSString *)name;
+    */
+    HRESULT getNamedItem([in] BSTR name, [out, retval] IDOMNode** result);
+
+    /*
+        - (DOMNode *)setNamedItem:(DOMNode *)arg;
+    */
+    HRESULT setNamedItem([in] IDOMNode* arg, [out, retval] IDOMNode** result);
+
+    /*
+        - (DOMNode *)removeNamedItem:(NSString *)name;
+    */
+    HRESULT removeNamedItem([in] BSTR name, [out, retval] IDOMNode** result);
+
+    /*
+        - (DOMNode *)item:(unsigned)index;
+    */
+    HRESULT item([in] UINT index, [out, retval] IDOMNode** result);
+
+    /*
+        - (unsigned)length;
+    */
+    HRESULT length([out, retval] UINT* result);
+
+    /*
+        - (DOMNode *)getNamedItemNS:(NSString *)namespaceURI :(NSString *)localName;
+    */
+    HRESULT getNamedItemNS([in] BSTR namespaceURI, [in] BSTR localName, [out, retval] IDOMNode** result);
+
+    /*
+        - (DOMNode *)setNamedItemNS:(DOMNode *)arg;
+    */
+    HRESULT setNamedItemNS([in] IDOMNode* arg, [out, retval] IDOMNode** result);
+
+    /*
+        - (DOMNode *)removeNamedItemNS:(NSString *)namespaceURI :(NSString *)localName;
+    */
+    HRESULT removeNamedItemNS([in] BSTR namespaceURI, [in] BSTR localName, [out, retval] IDOMNode** result);
+}\r
+\r
+/*\r
+    @interface DOMDocument : IDOMNode
+*/\r
+[\r
+    local,\r
+    object,\r
+    uuid(A83C2C44-0BAC-45c7-8E17-6A49975D5CCA),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMDocument : IDOMNode\r
+{\r
+    /*\r
+        - (DOMDocumentType *)doctype;
+    */
+    HRESULT doctype([out, retval] IDOMDocumentType** result);
+
+    /*
+        - (DOMImplementation *)implementation;
+    */
+    HRESULT implementation([out, retval] IDOMImplementation** result);
+
+    /*
+        - (DOMElement *)documentElement;
+    */
+    HRESULT documentElement([out, retval] IDOMElement** result);
+
+    /*
+        - (DOMElement *)createElement:(NSString *)tagName;
+    */
+    HRESULT createElement([in] BSTR tagName, [out, retval] IDOMElement** result);
+
+    /*
+        - (DOMDocumentFragment *)createDocumentFragment;
+    */
+    HRESULT createDocumentFragment([out, retval] IDOMDocumentFragment** result);
+
+    /*
+        - (DOMText *)createTextNode:(NSString *)data;
+    */
+    HRESULT createTextNode([in] BSTR data, [out, retval] IDOMText** result);
+
+    /*
+        - (DOMComment *)createComment:(NSString *)data;
+    */
+    HRESULT createComment([in] BSTR data, [out, retval] IDOMComment** result);
+
+    /*
+        - (DOMCDATASection *)createCDATASection:(NSString *)data;
+    */
+    HRESULT createCDATASection([in] BSTR data, [out, retval] IDOMCDATASection** result);
+
+    /*
+        - (DOMProcessingInstruction *)createProcessingInstruction:(NSString *)target :(NSString *)data;
+    */
+    HRESULT createProcessingInstruction([in] BSTR target, [in] BSTR data, [out, retval] IDOMProcessingInstruction** result);
+
+    /*
+        - (DOMAttr *)createAttribute:(NSString *)name;
+    */
+    HRESULT createAttribute([in] BSTR name, [out, retval] IDOMAttr** result);
+
+    /*
+        - (DOMEntityReference *)createEntityReference:(NSString *)name;
+    */
+    HRESULT createEntityReference([in] BSTR name, [out, retval] IDOMEntityReference** result);
+
+    /*
+        - (DOMNodeList *)getElementsByTagName:(NSString *)tagname;
+    */
+    HRESULT getElementsByTagName([in] BSTR tagName, [out, retval] IDOMNodeList** result);
+
+    /*
+        - (DOMNode *)importNode:(DOMNode *)importedNode :(BOOL)deep;
+    */
+    HRESULT importNode([in] IDOMNode* importedNode, [in] BOOL deep, [out, retval] IDOMNode** result);
+
+    /*
+        - (DOMElement *)createElementNS:(NSString *)namespaceURI :(NSString *)qualifiedName;
+    */
+    HRESULT createElementNS([in] BSTR namespaceURI, [in] BSTR qualifiedName, [out, retval] IDOMElement** result);
+
+    /*
+        - (DOMAttr *)createAttributeNS:(NSString *)namespaceURI :(NSString *)qualifiedName;
+    */
+    HRESULT createAttributeNS([in] BSTR namespaceURI, [in] BSTR qualifiedName, [out, retval] IDOMAttr** result);
+
+    /*
+        - (DOMNodeList *)getElementsByTagNameNS:(NSString *)namespaceURI :(NSString *)localName;
+    */
+    HRESULT getElementsByTagNameNS([in] BSTR namespaceURI, [in] BSTR lcoalName, [out, retval] IDOMNodeList** result);
+
+    /*
+        - (DOMElement *)getElementById:(NSString *)elementId;
+    */
+    HRESULT getElementById([in] BSTR elementId, [out, retval] IDOMElement** result);
+}\r
+\r
+/*\r
+    @interface DOMCharacterData : IDOMNode
+*/\r
+[\r
+    local,\r
+    object,\r
+    uuid(F4DED047-FE61-461a-BDBD-BB87F79DB713),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMCharacterData : IDOMNode\r
+{\r
+    /*\r
+        - (NSString *)data;
+    */
+    HRESULT data([out, retval] BSTR* result);
+
+    /*
+        - (void)setData:(NSString *)data;
+    */
+    HRESULT setData([in] BSTR data);
+
+    /*
+        - (unsigned)length;
+    */
+    HRESULT length([out, retval] UINT* result);
+
+    /*
+        - (NSString *)substringData:(unsigned)offset :(unsigned)count;
+    */
+    HRESULT substringData([in] UINT offset, [in] UINT count, [out, retval] BSTR* result);
+
+    /*
+        - (void)appendData:(NSString *)arg;
+    */
+    HRESULT appendData([in] BSTR arg);
+
+    /*
+        - (void)insertData:(unsigned)offset :(NSString *)arg;
+    */
+    HRESULT insertData([in] UINT offset, [in] BSTR arg);
+
+    /*
+        - (void)deleteData:(unsigned)offset :(unsigned) count;
+    */
+    HRESULT deleteData([in] UINT offset, [in] UINT count);
+
+    /*
+        - (void)replaceData:(unsigned)offset :(unsigned)count :(NSString *)arg;
+    */\r
+    HRESULT replaceData([in] UINT offset, [in] UINT count, [in] BSTR arg);\r
+}\r
+
+/*\r
+    @interface DOMAttr : IDOMNode
+*/\r
+[\r
+    local,\r
+    object,\r
+    uuid(B587E098-8206-4b5a-A7DB-422F218571A0),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMAttr : IDOMNode\r
+{\r
+    /*
+        - (NSString *)name;
+    */
+    HRESULT name([out, retval] BSTR* result);
+
+    /*
+        - (BOOL)specified;
+    */
+    HRESULT specified([out, retval] BOOL* result);
+
+    /*
+        - (NSString *)value;
+    */
+    HRESULT value([out, retval] BSTR* value);
+
+    /*
+        - (void)setValue:(NSString *)value;
+    */
+    HRESULT setValue([in] BSTR value);
+
+    /*
+        - (DOMElement *)ownerElement;
+    */
+    HRESULT ownerElement([out, retval] IDOMElement** result);
+}
+\r
+/*\r
+    @interface DOMElement : IDOMNode
+*/\r
+[\r
+    local,\r
+    object,\r
+    uuid(E053A35B-7775-4859-80EA-C35D02D145A2),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMElement : IDOMNode\r
+{\r
+    /*
+        - (NSString *)tagName;
+    */
+    HRESULT tagName([out, retval] BSTR* result);
+
+    /*
+        - (NSString *)getAttribute:(NSString *)name;
+    */
+    HRESULT getAttribute([in] BSTR name, [out, retval] BSTR* result);
+
+    /*
+        - (void)setAttribute:(NSString *)name :(NSString *)value;
+    */
+    HRESULT setResult([in] BSTR name, [in] BSTR value);
+
+    /*
+        - (void)removeAttribute:(NSString *)name;
+    */
+    HRESULT removeAttribute([in] BSTR name);
+
+    /*
+        - (DOMAttr *)getAttributeNode:(NSString *)name;
+    */
+    HRESULT getAttributeNode([in] BSTR name, [out, retval] IDOMAttr** result);
+
+    /*
+        - (DOMAttr *)setAttributeNode:(DOMAttr *)newAttr;
+    */
+    HRESULT setAttributeNode([in] IDOMAttr* newAttr, [out, retval] IDOMAttr** result);
+
+    /*
+        - (DOMAttr *)removeAttributeNode:(DOMAttr *)oldAttr;
+    */
+    HRESULT removeAttributeNode([in] IDOMAttr* oldAttr, [out, retval] IDOMAttr** result);
+
+    /*
+        - (DOMNodeList *)getElementsByTagName:(NSString *)name;
+    */
+    HRESULT getElementsByTagName([in] BSTR name, [out, retval] IDOMNodeList** result);
+
+    /*
+        - (NSString *)getAttributeNS:(NSString *)namespaceURI :(NSString *)localName;
+    */
+    HRESULT getAttributeNS([in] BSTR namespaceURI, [in] BSTR localName, [out, retval] BSTR* result);
+
+    /*
+        - (void)setAttributeNS:(NSString *)namespaceURI :(NSString *)qualifiedName :(NSString *)value;
+    */
+    HRESULT setAttributeNS([in] BSTR namespaceURI, [in] BSTR qualifiedName, [in] BSTR value);
+
+    /*
+        - (void)removeAttributeNS:(NSString *)namespaceURI :(NSString *)localName;
+    */
+    HRESULT removeAttributeNS([in] BSTR namespaceURI, [in] BSTR localName);
+
+    /*
+        - (DOMAttr *)getAttributeNodeNS:(NSString *)namespaceURI :(NSString *)localName;
+    */
+    HRESULT getAttributeNodeNS([in] BSTR namespaceURI, [in] BSTR localName, [out, retval] IDOMAttr** result);
+
+    /*
+        - (DOMAttr *)setAttributeNodeNS:(DOMAttr *)newAttr;
+    */
+    HRESULT setAttributeNodeNS([in] IDOMAttr* newAttr, [out, retval] IDOMAttr** result);
+
+    /*
+        - (DOMNodeList *)getElementsByTagNameNS:(NSString *)namespaceURI :(NSString *)localName;
+    */
+    HRESULT getElementsByTagNameNS([in] BSTR namespaceURI, [in] BSTR localName, [out, retval] IDOMNodeList** result);
+
+    /*
+        - (BOOL)hasAttribute:(NSString *)name;
+    */
+    HRESULT hasAttribute([in] BSTR name, [out, retval] BOOL* result);
+
+    /*
+        - (BOOL)hasAttributeNS:(NSString *)namespaceURI :(NSString *)localName;
+    */
+    HRESULT hasAttributeNS([in] BSTR namespaceURI, [in] BSTR localName, [out, retval] BOOL* result);
+}
+
+/*\r
+    @interface DOMText : DOMCharacterData
+*/\r
+[\r
+    local,\r
+    object,\r
+    uuid(74638F45-1AA0-4db5-958C-82066E00BD2B),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMText : IDOMCharacterData\r
+{\r
+    /*\r
+        - (DOMText *)splitText:(unsigned)offset;
+    */\r
+    HRESULT splitText([in] UINT offset, [out, retval] IDOMText** result);\r
+}
+
+/*\r
+    @interface DOMComment : DOMCharacterData
+*/\r
+[\r
+    local,\r
+    object,\r
+    uuid(118002E8-847F-4b1a-968C-B25A6AC7B128),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMComment : IDOMCharacterData\r
+{\r
+}\r
+\r
+/*\r
+    @interface DOMCDATASection : DOMText
+*/\r
+[\r
+    local,\r
+    object,\r
+    uuid(31B506C1-45A3-4d72-815A-311B0A897E58),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMCDATASection : IDOMText\r
+{\r
+}\r
+\r
+/*\r
+    @interface DOMDocumentType : IDOMNode
+*/\r
+[\r
+    local,\r
+    object,\r
+    uuid(17FCE6EA-4164-4bd4-9DBF-0395FBF37FD3),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMDocumentType : IDOMNode\r
+{\r
+    /*\r
+        - (NSString *)name;
+    */
+    HRESULT name([out, retval] BSTR* result);
+
+    /*
+        - (DOMNamedNodeMap *)entities;
+    */
+    HRESULT entities([out, retval] IDOMNamedNodeMap** result);
+
+    /*
+        - (DOMNamedNodeMap *)notations;
+    */
+    HRESULT notations([out, retval] IDOMNamedNodeMap** result);
+
+    /*
+        - (NSString *)publicId;
+    */
+    HRESULT publicId([out, retval] BSTR* result);
+
+    /*
+        - (NSString *)systemId;
+    */
+    HRESULT systemId([out, retval] BSTR* result);
+
+    /*
+        - (NSString *)internalSubset;
+    */
+    HRESULT internalSubset([out, retval] BSTR* result);
+}\r
+\r
+/*\r
+    @interface DOMEntityReference : IDOMNode
+*/\r
+[\r
+    local,\r
+    object,\r
+    uuid(0593CE45-15B2-44af-BBD0-5A1654F8240E),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMEntityReference : IDOMNode\r
+{\r
+}\r
+\r
+/*\r
+    @interface DOMProcessingInstruction : IDOMNode
+*/\r
+[\r
+    local,\r
+    object,\r
+    uuid(D99D2F48-ABF3-426a-9339-54681E1AFCA9),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMProcessingInstruction : IDOMNode\r
+{\r
+    /*\r
+        - (NSString *)target;
+    */
+    HRESULT target([out, retval] BSTR* result);
+
+    /*
+        - (NSString *)data;
+    */
+    HRESULT data([out, retval] BSTR* result);
+
+    /*
+        - (void)setData:(NSString *)data;
+    */
+    HRESULT setData([in] BSTR data);
+}\r
+\r
+/*\r
+    @interface DOMDocumentFragment : IDOMNode
+*/\r
+[\r
+    local,\r
+    object,\r
+    uuid(09D35665-8396-4868-949E-8AA2407A6E10),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMDocumentFragment : IDOMNode\r
+{\r
+}\r
diff --git a/WebKit/COM/Interfaces/DOMHTML.idl b/WebKit/COM/Interfaces/DOMHTML.idl
new file mode 100644 (file)
index 0000000..c520f16
--- /dev/null
@@ -0,0 +1,261 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "DOMCore.idl";\r
+\r
+interface IDOMHTMLElement;
+interface IDOMHTMLFormElement;
+interface IDOMHTMLTableCaptionElement;
+interface IDOMHTMLTableSectionElement;
+interface IDOMDocument;
+interface IDOMElement;
+
+/*
+    @interface DOMHTMLCollection : DOMObject
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(DD8E4E33-D1D4-48e7-BB23-6DC3D7CCEC42),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMHTMLCollection : IDOMObject\r
+{
+    /*
+        - (unsigned)length;
+    */
+    HRESULT length([out, retval] UINT* result);
+
+    /*
+        - (DOMNode *)item:(unsigned)index;
+    */
+    HRESULT item([in] UINT index, [out, retval] IDOMNode** node);
+
+    /*
+        - (DOMNode *)namedItem:(NSString *)name;
+    */
+    HRESULT namedItem([in] BSTR name, [out, retval] IDOMNode** node);
+}
+
+/*
+    @interface DOMHTMLDocument : DOMDocument
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(A7DF8485-25B7-4a98-B70C-1E29CAA00597),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMHTMLDocument : IDOMDocument\r
+{\r
+    /*
+        - (NSString *)title;
+    */
+    HRESULT title([out, retval] BSTR* result);
+
+    /*
+        - (void)setTitle:(NSString *)title;
+    */
+    HRESULT setTitle([in] BSTR title);
+
+    /*
+        - (NSString *)referrer;
+    */
+    HRESULT referrer([out, retval] BSTR* result);
+
+    /*
+        - (NSString *)domain;
+    */
+    HRESULT domain([out, retval] BSTR* result);
+
+    /*
+        - (NSString *)URL;
+    */
+    HRESULT URL([out, retval] BSTR* result);
+
+    /*
+        - (DOMHTMLElement *)body;
+    */
+    HRESULT body([out, retval] IDOMHTMLElement* bodyElement);
+
+    /*
+        - (void)setBody:(DOMHTMLElement *)body;
+    */
+    HRESULT setBody([in] IDOMHTMLElement* body);
+
+    /*
+        - (DOMHTMLCollection *)images;
+    */
+    HRESULT images([out, retval] IDOMHTMLCollection** collection);
+
+    /*
+        - (DOMHTMLCollection *)applets;
+    */
+    HRESULT applets([out, retval] IDOMHTMLCollection** collection);
+
+    /*
+        - (DOMHTMLCollection *)links;
+    */
+    HRESULT links([out, retval] IDOMHTMLCollection** collection);
+
+    /*
+        - (DOMHTMLCollection *)forms;
+    */
+    HRESULT forms([out, retval] IDOMHTMLCollection** collection);
+
+    /*
+        - (DOMHTMLCollection *)anchors;
+    */
+    HRESULT anchors([out, retval] IDOMHTMLCollection** collection);
+
+    /*
+        - (NSString *)cookie;
+    */
+    HRESULT cookie([out, retval] BSTR* result);
+
+    /*
+        - (void)setCookie:(NSString *)cookie;
+    */
+    HRESULT setCookie([in] BSTR cookie);
+
+    /*
+        - (void)open;
+    */
+    HRESULT open();
+
+    /*
+        - (void)close;
+    */
+    HRESULT close();
+
+    /*
+        - (void)write:(NSString *)text;
+    */
+    HRESULT write([in] BSTR text);
+
+    /*
+        - (void)writeln:(NSString *)text;
+    */
+    HRESULT writeln([in] BSTR text);
+
+    /*
+        - (DOMElement *)getElementById:(NSString *)elementId;
+    */
+    HRESULT getElementById([in] BSTR elementId, [out, retval] IDOMElement** element);
+
+    /*
+        - (DOMNodeList *)getElementsByName:(NSString *)elementName;
+    */\r
+    HRESULT getElementsByName([in] BSTR elementName, [out, retval] IDOMNodeList** nodeList);\r
+}\r
+\r
+/*\r
+    @interface DOMHTMLElement : DOMElement
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(EBD5F41D-FF65-41d8-97C9-FCE3A3D4CC3E),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMHTMLElement : IDOMElement\r
+{\r
+    /*
+        - (NSString *)idName;
+    */
+    HRESULT idName([out, retval] BSTR* result);
+
+    /*
+        - (void)setIdName:(NSString *)idName;
+    */
+    HRESULT setIdName([in] BSTR idName);
+
+    /*
+        - (NSString *)title;
+    */
+    HRESULT title([out, retval] BSTR* result);
+
+    /*
+        - (void)setTitle:(NSString *)title;
+    */
+    HRESULT setTitle([in] BSTR title);
+
+    /*
+        - (NSString *)lang;
+    */
+    HRESULT lang([out, retval] BSTR* result);
+
+    /*
+        - (void)setLang:(NSString *)lang;
+    */
+    HRESULT setLang([in] BSTR lang);
+
+    /*
+        - (NSString *)dir;
+    */
+    HRESULT dir([out, retval] BSTR* result);
+
+    /*
+        - (void)setDir:(NSString *)dir;
+    */
+    HRESULT setDir([in] BSTR dir);
+
+    /*
+        - (NSString *)className;
+    */
+    HRESULT className([out, retval] BSTR* result);
+
+    /*
+        - (void)setClassName:(NSString *)className;
+    */
+    HRESULT setClassName([in] BSTR className);
+}\r
diff --git a/WebKit/COM/Interfaces/DOMRange.idl b/WebKit/COM/Interfaces/DOMRange.idl
new file mode 100644 (file)
index 0000000..c9903d6
--- /dev/null
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "DOMCore.idl";\r
+\r
+typedef enum _WebSelectionAffinity {\r
+   WebSelectionAffinityUpstream = 0,\r
+   WebSelectionAffinityDownstream = 1\r
+} WebSelectionAffinity;\r
+
+enum {
+    //
+    // DOM range exception codes
+    //
+    DOM_BAD_BOUNDARYPOINTS_ERR        = 1,
+    DOM_INVALID_NODE_TYPE_ERR         = 2,
+};
+
+enum {
+    //
+    // DOM Range comparison codes
+    //
+    DOM_START_TO_START                = 0,
+    DOM_START_TO_END                  = 1,
+    DOM_END_TO_END                    = 2,
+    DOM_END_TO_START                  = 3,
+};
+\r
+/*\r
+    @interface DOMRange : DOMObject
+*/\r
+[\r
+    local,\r
+    object,\r
+    uuid(2F33E42C-0B39-48b3-B7B6-E910CDB325AD),\r
+    pointer_default(unique)\r
+]\r
+interface IDOMRange : IDOMObject\r
+{\r
+    /*\r
+        - (DOMNode *)startContainer;
+    */
+    HRESULT startContainer([out, retval] IDOMNode** node);
+
+    /*
+        - (int)startOffset;
+    */
+    HRESULT startOffset([out, retval] int* offset);
+
+    /*
+        - (DOMNode *)endContainer;
+    */
+    HRESULT endContainer([out, retval] IDOMNode** node);
+
+    /*
+        - (int)endOffset;
+    */
+    HRESULT endOffset([out, retval] int* offset);
+
+    /*
+        - (BOOL)collapsed;
+    */
+    HRESULT collapsed([out, retval] BOOL* result);
+
+    /*
+        - (DOMNode *)commonAncestorContainer;
+    */
+    HRESULT commonAncestorContainer([out, retval] IDOMNode* container);
+
+    /*
+        - (void)setStart:(DOMNode *)refNode :(int)offset;
+    */
+    HRESULT setStart([in] IDOMNode* refNode, [in] int offset);
+
+    /*
+        - (void)setEnd:(DOMNode *)refNode :(int)offset;
+    */
+    HRESULT setEnd([in] IDOMNode* refNode, [in] int offset);
+
+    /*
+        - (void)setStartBefore:(DOMNode *)refNode;
+    */
+    HRESULT setStartBefore([in] IDOMNode* refNode);
+
+    /*
+        - (void)setStartAfter:(DOMNode *)refNode;
+    */
+    HRESULT setStartAfter([in] IDOMNode* refNode);
+
+    /*
+        - (void)setEndBefore:(DOMNode *)refNode;
+    */
+    HRESULT setEndBefore([in] IDOMNode* refNode);
+
+    /*
+        - (void)setEndAfter:(DOMNode *)refNode;
+    */
+    HRESULT setEndAfter([in] IDOMNode* refNode);
+
+    /*
+        - (void)collapse:(BOOL)toStart;
+    */
+    HRESULT collapse([in] BOOL toStart);
+
+    /*
+        - (void)selectNode:(DOMNode *)refNode;
+    */
+    HRESULT selectNode([in] IDOMNode* refNode);
+
+    /*
+        - (void)selectNodeContents:(DOMNode *)refNode;
+    */
+    HRESULT selectNodeContents([in] IDOMNode* refNode);
+
+    /*
+        - (short)compareBoundaryPoints:(unsigned short)how :(DOMRange *)sourceRange;
+    */
+    HRESULT compareBoundaryPoints([in] unsigned short how, [in] IDOMRange* sourceRange);
+
+    /*
+        - (void)deleteContents;
+    */
+    HRESULT deleteContents();
+
+    /*
+        - (DOMDocumentFragment *)extractContents;
+    */
+    HRESULT extractContents([out, retval] IDOMDocumentFragment** fragment);
+
+    /*
+        - (DOMDocumentFragment *)cloneContents;
+    */
+    HRESULT cloneContents([out, retval] IDOMDocumentFragment** fragment);
+
+    /*
+        - (void)insertNode:(DOMNode *)newNode;
+    */
+    HRESULT insertNode([in] IDOMNode* newNode);
+
+    /*
+        - (void)surroundContents:(DOMNode *)newParent;
+    */
+    HRESULT surroundContents([in] IDOMNode* newParent);
+
+    /*
+        - (DOMRange *)cloneRange;
+    */
+    HRESULT cloneRange([out, retval] IDOMRange** range);
+
+    /*
+        - (NSString *)toString;
+    */
+    HRESULT toString([out, retval] BSTR* str);
+
+    /*
+        - (void)detach;\r
+    */
+    HRESULT detach();
+}\r
diff --git a/WebKit/COM/Interfaces/IWebArchive.idl b/WebKit/COM/Interfaces/IWebArchive.idl
new file mode 100644 (file)
index 0000000..78d5e86
--- /dev/null
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "IWebResource.idl";\r
+\r
+interface IWebResource;
+
+/*!
+    @class WebArchive
+    @discussion WebArchive represents a main resource as well as all the subresources and subframes associated with the main resource.
+    The main resource can be an entire web page, a portion of a web page, or some other kind of data such as an image.
+    This class can be used for saving standalone web pages, representing portions of a web page on the pasteboard, or any other
+    application where one class is needed to represent rich web content. 
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(F07D5252-F66E-4a4d-B9DC-33BD11DCC138),\r
+    pointer_default(unique)\r
+]\r
+interface IWebArchive : IUnknown\r
+{\r
+    /*!
+        @method initWithMainResource:subresources:subframeArchives:
+        @abstract The initializer for WebArchive.
+        @param mainResource The main resource of the archive.
+        @param subresources The subresources of the archive (can be nil).
+        @param subframeArchives The archives representing the subframes of the archive (can be nil).
+        @result An initialized WebArchive.
+        - (id)initWithMainResource:(WebResource *)mainResource subresources:(NSArray *)subresources subframeArchives:(NSArray *)subframeArchives;
+    */
+    HRESULT initWithMainResource([in] IWebResource* mainResource, [in, size_is(cSubResources)] IWebResource** subResources, [in] int cSubResources, [in, size_is(cSubFrameArchives)] IWebArchive** subFrameArchives, [in] int cSubFrameArchives);
+
+    /*!
+        @method initWithData:
+        @abstract The initializer for creating a WebArchive from data.
+        @param data The data representing the archive. This can be obtained using WebArchive's data method.
+        @result An initialized WebArchive.
+        - (id)initWithData:(NSData *)data;
+    */
+    HRESULT initWithData([in] IStream* data);
+
+    /*!
+        @method mainResource
+        @result The main resource of the archive.
+        - (WebResource *)mainResource;
+    */
+    HRESULT mainResource([out, retval] IWebResource* resource);
+
+    /*!
+        @method subresources
+        @result The subresource of the archive (can be nil).
+        - (NSArray *)subresources;
+    */
+    HRESULT subResources([out] int* cSubResources, [out, retval] IWebResource*** subResources);
+
+    /*!
+        @method subframeArchives
+        @result The archives representing the subframes of the archive (can be nil).
+        - (NSArray *)subframeArchives;
+    */
+    HRESULT subframeArchives([out] int* cSubFrameArchives, [out, retval] IWebArchive*** subFrameArch);
+
+    /*!
+        @method data
+        @result The data representation of the archive.
+        @discussion The data returned by this method can be used to save a web archive to a file or to place a web archive on the pasteboard
+        using WebArchivePboardType. To create a WebArchive using the returned data, call initWithData:.
+        - (NSData *)data;
+    */
+    HRESULT data([out, retval] IStream** stream);
+}\r
diff --git a/WebKit/COM/Interfaces/IWebAttributedString.idl b/WebKit/COM/Interfaces/IWebAttributedString.idl
new file mode 100644 (file)
index 0000000..cb685eb
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+\r
+typedef struct _WebRange {\r
+   unsigned int location;\r
+   unsigned int length;\r
+} WebRange;\r
+\r
+typedef WebRange *WebRangePointer;\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(B91A5F8C-5137-41ea-BE2C-AC1417E38C4A),\r
+    pointer_default(unique)\r
+]\r
+interface IWebAttributedString : IUnknown\r
+{\r
+    /*\r
+        - (id)attribute:(NSString *)attributeName atIndex:(unsigned int)index effectiveRange:(NSRangePointer)aRange\r
+        - (id)attribute:(NSString *)attributeName atIndex:(unsigned int)index longestEffectiveRange:(NSRangePointer)aRange inRange:(NSRange)rangeLimit\r
+    */\r
+    HRESULT attribute([in] UINT atIndex, [in] WebRangePointer aRange, [in, optional] WebRange rangeLimit, [out, retval] BSTR* result);\r
+\r
+    /*\r
+        - (NSAttributedString *)attributedSubstringFromRange:(NSRange)aRange\r
+    */\r
+    HRESULT attributedSubstringFromRange([in] WebRange aRange, [out, retval] IWebAttributedString** result);\r
+\r
+    /*\r
+        - (NSDictionary *)attributesAtIndex:(unsigned)index effectiveRange:(NSRangePointer)aRange\r
+        - (NSDictionary *)attributesAtIndex:(unsigned)index longestEffectiveRange:(NSRangePointer)aRange inRange:(NSRange)rangeLimit\r
+    */\r
+    HRESULT attributesAtIndex([in] UINT index, [in] WebRangePointer aRange, [in, optional] WebRange rangeLimit, [out, retval] IPropertyBag** result);\r
+\r
+    /*\r
+        - (id)initWithAttributedString:(NSAttributedString *)attributedString\r
+    */\r
+    HRESULT initWithAttributedString([in] IWebAttributedString* attributedString);\r
+\r
+    /*\r
+        - (id)initWithString:(NSString *)aString\r
+    */\r
+    HRESULT initWithString([in] BSTR aString);\r
+\r
+    /*\r
+        - (id)initWithString:(NSString *)aString attributes:(NSDictionary *)attributes\r
+    */\r
+    HRESULT initWithString2([in] BSTR aString, [in] IPropertyBag* attributes);\r
+\r
+    /*\r
+        - (BOOL)isEqualToAttributedString:(NSAttributedString *)otherString\r
+    */\r
+    HRESULT isEqualToAttributedString([in] IWebAttributedString* otherString, [out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (unsigned)length\r
+    */\r
+    HRESULT length([out, retval] UINT* result);\r
+\r
+    /*\r
+        - (NSString *)string\r
+    */\r
+    HRESULT string_([out, retval] BSTR* result);\r
+}\r
diff --git a/WebKit/COM/Interfaces/IWebBackForwardList.idl b/WebKit/COM/Interfaces/IWebBackForwardList.idl
new file mode 100644 (file)
index 0000000..5d3b87b
--- /dev/null
@@ -0,0 +1,214 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "IWebHistoryItem.idl";\r
+
+interface IWebHistoryItem;
+\r
+/*!
+    @class WebBackForwardList
+    WebBackForwardList holds an ordered list of WebHistoryItems that comprises the back and
+    forward lists.
+    
+    Note that the methods which modify instances of this class do not cause
+    navigation to happen in other layers of the stack;  they are only for maintaining this data
+    structure.
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(C278A16D-B502-4131-B551-DCE3F4ED2B36),\r
+    pointer_default(unique)\r
+]\r
+interface IWebBackForwardList : IUnknown\r
+{\r
+    /*!
+        @method addItem:
+        @abstract Adds an entry to the list.
+        @param entry The entry to add.
+        @discussion The added entry is inserted immediately after the current entry.
+        If the current position in the list is not at the end of the list, elements in the
+        forward list will be dropped at this point.  In addition, entries may be dropped to keep
+        the size of the list within the maximum size.
+        - (void)addItem:(WebHistoryItem *)item;
+    */
+    HRESULT addItem([in] IWebHistoryItem* item);
+
+    /*!
+        @method goBack
+        @abstract Move the current pointer back to the entry before the current entry.
+        - (void)goBack;
+    */
+    HRESULT goBack();
+
+    /*!
+        @method goForward
+        @abstract Move the current pointer ahead to the entry after the current entry.
+        - (void)goForward;
+    */
+    HRESULT goForward();
+
+    /*!
+        @method goToItem:
+        @abstract Move the current pointer to the given entry.
+        @param item The history item to move the pointer to
+        - (void)goToItem:(WebHistoryItem *)item;
+    */
+    HRESULT goToItem([in] IWebHistoryItem* item);
+
+    /*!
+        @method backItem
+        @abstract Returns the entry right before the current entry.
+        @result The entry right before the current entry, or nil if there isn't one.
+        - (WebHistoryItem *)backItem;
+    */
+    HRESULT backItem([out, retval] IWebHistoryItem** item);
+
+    /*!
+        @method currentItem
+        @abstract Returns the current entry.
+        @result The current entry.
+        - (WebHistoryItem *)currentItem;
+    */
+    HRESULT currentItem([out, retval] IWebHistoryItem** item);
+
+    /*!
+        @method forwardItem
+        @abstract Returns the entry right after the current entry.
+        @result The entry right after the current entry, or nil if there isn't one.
+        - (WebHistoryItem *)forwardItem;
+    */
+    HRESULT forwardItem([out, retval] IWebHistoryItem** item);
+
+    /*!
+        @method backListWithLimit:
+        @abstract Returns a portion of the list before the current entry.
+        @param limit A cap on the size of the array returned.
+        @result An array of items before the current entry, or nil if there are none.  The entries are in the order that they were originally visited.
+        - (NSArray *)backListWithLimit:(int)limit;
+    */
+    HRESULT backListWithLimit([in] int limit, [out] int* listCount, [out, retval] IWebHistoryItem*** list);
+
+    /*!
+        @method forwardListWithLimit:
+        @abstract Returns a portion of the list after the current entry.
+        @param limit A cap on the size of the array returned.
+        @result An array of items after the current entry, or nil if there are none.  The entries are in the order that they were originally visited.
+        - (NSArray *)forwardListWithLimit:(int)limit;
+    */
+    HRESULT forwardListWithLimit([in] int limit, [out] int* listCount, [out, retval] IWebHistoryItem*** list);
+
+    /*!
+        @method capacity
+        @abstract Returns the list's maximum size.
+        @result The list's maximum size.
+        - (int)capacity;
+    */
+    HRESULT capacity([out, retval] int* result);
+
+    /*!
+        @method setCacpacity
+        @abstract Sets the list's maximum size.
+        @param size The new maximum size for the list.
+        - (void)setCapacity:(int)size;
+    */
+    HRESULT setCapacity([in] int size);
+
+    /*!
+        @method backListCount
+        @abstract Returns the back list's current count.
+        @result The number of items in the list.
+        - (int)backListCount;
+    */
+    HRESULT backListCount([out, retval] int* count);
+
+    /*!
+        @method forwardListCount
+        @abstract Returns the forward list's current count.
+        @result The number of items in the list.
+        - (int)forwardListCount;
+    */
+    HRESULT forwardListCount([out, retval] int* sizecount);
+
+    /*!
+        @method containsItem:
+        @param item The item that will be checked for presence in the WebBackForwardList.
+        @result Returns YES if the item is in the list. 
+        - (BOOL)containsItem:(WebHistoryItem *)item;
+    */
+    HRESULT containsItem([in] IWebHistoryItem* item, [out, retval] BOOL* result);
+
+    /*!
+        @method itemAtIndex:
+        @abstract Returns an entry the given distance from the current entry.
+        @param index Index of the desired list item relative to the current item; 0 is current item, -1 is back item, 1 is forward item, etc.
+        @result The entry the given distance from the current entry. If index exceeds the limits of the list, nil is returned.
+        - (WebHistoryItem *)itemAtIndex:(int)index;
+    */
+    HRESULT itemAtIndex([in] int index, [out, retval] IWebHistoryItem** item);
+
+    /*!
+        @method setPageCacheSize:
+        @abstract Sets the size of the page cache.
+        @param size The number of pages to allow in the page cache.
+        - (void)setPageCacheSize:(unsigned)size;
+    */
+    HRESULT setPageCacheSize([in] UINT size);
+
+    /*!
+        @method pageCacheSize
+        @abstract Returns the number of pages that may be cached.
+        @result The number of pages that may be cached.
+        - (unsigned)pageCacheSize;
+    */
+    HRESULT pageCacheSize([out, retval] UINT* size);
+}\r
diff --git a/WebKit/COM/Interfaces/IWebDataSource.idl b/WebKit/COM/Interfaces/IWebDataSource.idl
new file mode 100644 (file)
index 0000000..30a3290
--- /dev/null
@@ -0,0 +1,226 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "IWebDocument.idl";\r
+import "IWebFrame.idl";\r
+import "IWebMutableURLRequest.idl";\r
+import "IWebURLResponse.idl";\r
+import "IWebArchive.idl";\r
+import "IWebResource.idl";\r
+\r
+interface IWebMutableURLRequest;
+interface IWebURLConnection;
+interface IWebURLRequest;
+interface IWebURLResponse;
+interface IWebArchive;
+interface IWebDataSourcePrivate;
+interface IWebFrame;
+interface IWebResource;
+
+interface IWebDocumentRepresentation;
+\r
+/*!
+    @class WebDataSource
+    @discussion A WebDataSource represents the data associated with a web page.
+    A datasource has a WebDocumentRepresentation which holds an appropriate
+    representation of the data.  WebDataSources manage a hierarchy of WebFrames.
+    WebDataSources are typically related to a view by their containing WebFrame.
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(5221A975-AE09-4a7b-A4DF-E3B1B5F38A21),\r
+    pointer_default(unique)\r
+]\r
+interface IWebDataSource : IUnknown\r
+{
+    /*!
+        @method initWithRequest:
+        @abstract The designated initializer for WebDataSource.
+        @param request The request to use in creating a datasource.
+        @result Returns an initialized WebDataSource.
+        - (id)initWithRequest:(NSURLRequest *)request;
+    */
+    HRESULT initWithRequest([in] IWebURLRequest* request);
+
+    /*!
+        @method data
+        @discussion The data will be incomplete until the datasource has completely loaded.  
+        @result Returns the raw data associated with the datasource.  Returns nil
+        if the datasource hasn't loaded any data.
+        - (NSData *)data;
+    */
+    HRESULT data([out, retval] IStream** stream);
+
+    /*!
+        @method representation
+        @discussion A representation holds a type specific representation
+        of the datasource's data.  The representation class is determined by mapping
+        a MIME type to a class.  The representation is created once the MIME type
+        of the datasource content has been determined.
+        @result Returns the representation associated with this datasource.
+        Returns nil if the datasource hasn't created it's representation.
+        - (id <WebDocumentRepresentation>)representation;
+    */
+    HRESULT representation([out, retval] IWebDocumentRepresentation** rep);
+
+    /*!
+        @method webFrame
+        @result Return the frame that represents this data source.
+        - (WebFrame *)webFrame;
+    */
+    HRESULT webFrame([out, retval] IWebFrame** frame);
+
+    /*!
+        @method initialRequest
+        @result Returns a reference to the original request that created the
+        datasource.  This request will be unmodified by WebKit. 
+        - (NSURLRequest *)initialRequest;
+    */
+    HRESULT initialRequest([out, retval] IWebURLRequest** request);
+
+    /*!
+        @method request
+        @result Returns the request that was used to create this datasource.
+        - (NSMutableURLRequest *)request;
+    */
+    HRESULT request([out, retval] IWebMutableURLRequest** request);
+
+    /*!
+        @method response
+        @result returns the WebResourceResponse for the data source.
+        - (NSURLResponse *)response;
+    */
+    HRESULT response([out, retval] IWebURLResponse** response);
+
+    /*!
+        @method textEncodingName
+        @result Returns either the override encoding, as set on the WebView for this 
+        dataSource or the encoding from the response.
+        - (NSString *)textEncodingName;
+    */
+    HRESULT textEncodingName([out, retval] BSTR* name);
+
+    /*!
+        @method isLoading
+        @discussion Returns YES if there are any pending loads.
+        - (BOOL)isLoading;
+    */
+    HRESULT isLoading([out, retval] BOOL* loading);
+
+    /*!
+        @method pageTitle
+        @result Returns nil or the page title.
+        - (NSString *)pageTitle;
+    */
+    HRESULT pageTitle([out, retval] BSTR* title);
+
+    /*!
+        @method unreachableURL
+        @discussion This will be non-nil only for dataSources created by calls to the 
+        WebFrame method loadAlternateHTMLString:baseURL:forUnreachableURL:.
+        @result returns the unreachableURL for which this dataSource is showing alternate content, or nil
+        - (NSURL *)unreachableURL;
+    */
+    HRESULT unreachableURL([out, retval] BSTR* url);
+
+    /*!
+        @method webArchive
+        @result A WebArchive representing the data source, its subresources and child frames.
+        @description This method constructs a WebArchive using the original downloaded data.
+        In the case of HTML, if the current state of the document is preferred, webArchive should be
+        called on the DOM document instead.
+        - (WebArchive *)webArchive;
+    */
+    HRESULT webArchive([out, retval] IWebArchive* archive);
+
+    /*!
+        @method mainResource
+        @result A WebResource representing the data source.
+        @description This method constructs a WebResource using the original downloaded data.
+        This method can be used to construct a WebArchive in case the archive returned by
+        WebDataSource's webArchive isn't sufficient.
+        - (WebResource *)mainResource;
+    */
+    HRESULT mainResource([out, retval] IWebResource* resource);
+
+    /*!
+        @method subresources
+        @abstract Returns all the subresources associated with the data source.
+        @description The returned array only contains subresources that have fully downloaded.
+        - (NSArray *)subresources;
+    */
+    HRESULT subresources([out] int* resourceCount, [out, retval] IWebResource*** resources);
+
+    /*!
+        method subresourceForURL:
+        @abstract Returns a subresource for a given URL.
+        @param URL The URL of the subresource.
+        @description Returns non-nil if the data source has fully downloaded a subresource with the given URL.
+        - (WebResource *)subresourceForURL:(NSURL *)URL;
+    */
+    HRESULT subresourceForURL([in] BSTR url, [out, retval] IWebResource* resource);
+
+    /*!
+        @method addSubresource:
+        @abstract Adds a subresource to the data source.
+        @param subresource The subresource to be added.
+        @description addSubresource: adds a subresource to the data source's list of subresources.
+        Later, if something causes the data source to load the URL of the subresource, the data source
+        will load the data from the subresource instead of from the network. For example, if one wants to add
+        an image that is already downloaded to a web page, addSubresource: can be called so that the data source
+        uses the downloaded image rather than accessing the network. NOTE: If the data source already has a
+        subresource with the same URL, addSubresource: will replace it.
+        - (void)addSubresource:(WebResource *)subresource;
+    */
+    HRESULT addSubresource([in] IWebResource* subresource);
+}\r
diff --git a/WebKit/COM/Interfaces/IWebDocument.idl b/WebKit/COM/Interfaces/IWebDocument.idl
new file mode 100644 (file)
index 0000000..067f099
--- /dev/null
@@ -0,0 +1,284 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "IWebAttributedString.idl";\r
+import "IWebError.idl";\r
+import "IWebDataSource.idl";\r
+import "IWebError.idl";\r
+
+interface IWebError;
+interface IWebDataSource;
+
+/*!
+    @protocol WebDocumentView
+    @discussion Protocol implemented by the document view of WebFrameView
+
+    @protocol WebDocumentView <NSObject>
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(0A6397A7-90FE-49a0-B9C1-44693DD779F7),\r
+    pointer_default(unique)\r
+]\r
+interface IWebDocumentView : IUnknown\r
+{\r
+    /*!
+        @method setDataSource:
+        @abstract Called when the corresponding data source has been created.
+        @param dataSource The corresponding data source.
+        - (void)setDataSource:(WebDataSource *)dataSource;
+    */
+    HRESULT setDataSource([in] IWebDataSource* dataSource);
+
+    /*!
+        @method dataSourceUpdated:
+        @abstract Called when the corresponding data source has received data.
+        @param dataSource The corresponding data source.
+        - (void)dataSourceUpdated:(WebDataSource *)dataSource;
+    */
+    HRESULT dataSourceUpdated([in] IWebDataSource* dataSource);
+
+    /*!
+        @method setNeedsLayout:
+        @discussion Called when WebKit has determined that the document view needs to layout.
+        This method should simply set a flag and call layout from drawRect if the flag is YES.
+        @param flag YES to cause a layout, no to not cause a layout.
+        - (void)setNeedsLayout:(BOOL)flag;
+    */
+    HRESULT setNeedsLayout([in] BOOL flag);
+
+    /*!
+        @method layout
+        @discussion Called when the document view must immediately layout. For simple views,
+        setting the frame is a sufficient implementation of this method.
+        - (void)layout;
+    */
+    HRESULT layout();
+
+    /*!
+        @method viewWillMoveToHostWindow:
+        @param hostWindow The host window for the document view.
+        @abstract Called before the host window is set on the parent web view.
+        - (void)viewWillMoveToHostWindow:(NSWindow *)hostWindow;
+    */
+    HRESULT viewWillMoveToHostWindow([in] HWND window);
+
+    /*!
+        @method viewDidMoveToHostWindow
+        @abstract Called after the host window is set on the parent web view.
+        - (void)viewDidMoveToHostWindow;\r
+    */
+    HRESULT viewDidMoveToHostWindow();
+}\r
+\r
+/*!
+    @protocol WebDocumentSearching
+    @discussion Optional protocol for searching document view of WebFrameView. 
+    
+    @protocol WebDocumentSearching <NSObject>
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(0213643B-8DF9-4ba4-9534-61D92CB75007),\r
+    pointer_default(unique)\r
+]\r
+interface IWebDocumentSearching : IUnknown\r
+{\r
+    /*!
+        @method searchFor:direction:caseSensitive:wrap:
+        @abstract Searches a document view for a string and highlights the string if it is found.
+        @param string The string to search for.
+        @param forward YES to search forward, NO to seach backwards.
+        @param caseFlag YES to for case-sensitive search, NO for case-insensitive search.
+        @param wrapFlag YES to wrap around, NO to avoid wrapping.
+        @result YES if found, NO if not found.
+        - (BOOL)searchFor:(NSString *)string direction:(BOOL)forward caseSensitive:(BOOL)caseFlag wrap:(BOOL)wrapFlag;
+    */
+    HRESULT searchFor([in] BSTR str, [in] BOOL forwardDirection, [in] BOOL caseSensitive, [in] BOOL wrap, [out, retval] BOOL* result);
+}
+
+/*!
+    @protocol WebDocumentText
+    @discussion Optional protocol for supporting text operations.
+
+    @protocol WebDocumentText <NSObject>
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(B6282B92-6F31-4948-A3A0-89763C56BBBF),\r
+    pointer_default(unique)\r
+]\r
+interface IWebDocumentText : IUnknown\r
+{\r
+    /*!
+        @method supportsTextEncoding
+        @result YES if the document view support text encoding, NO if it doesn't.
+        - (BOOL)supportsTextEncoding;
+    */
+    HRESULT supportsTextEncoding([out, retval] BOOL* result);
+
+    /*!
+        @method string
+        @result String that represents the entire document.
+        - (NSString *)string;
+    */
+    HRESULT string_([out, retval] BSTR* result);
+
+    /*!
+        @method attributedString
+        @result Attributed string that represents the entire document.
+        - (NSAttributedString *)attributedString;
+    */
+    HRESULT attributedString([out, retval] BSTR* result);
+
+    /*!
+        @method selectedString
+        @result String that represents the current selection.
+        - (NSString *)selectedString;
+    */
+    HRESULT selectedString([out, retval] BSTR* result);
+
+    /*!
+        @method selectedAttributedString
+        @result Attributed string that represents the current selection.
+        - (NSAttributedString *)selectedAttributedString;
+    */
+    HRESULT selectedAttributedString([out, retval] IWebAttributedString* result);
+
+    /*!
+        @method selectAll
+        @abstract Selects all the text in the document.
+        - (void)selectAll;
+    */
+    HRESULT selectAll();
+
+    /*!
+        @method deselectText
+        @abstract Causes a text selection to lose its selection.
+        - (void)deselectAll;
+    */
+    HRESULT deselectAll();
+}
+
+/*!
+    @protocol WebDocumentRepresentation
+    @discussion Protocol implemented by the document representation of a data source.
+
+    @protocol WebDocumentRepresentation <NSObject>
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(3C9F6251-CFD8-447a-B429-6B6AE627436C),\r
+    pointer_default(unique)\r
+]\r
+interface IWebDocumentRepresentation : IUnknown\r
+{\r
+    /*!
+        @method setDataSource:
+        @abstract Called soon after the document representation is created.
+        @param dataSource The data source that is set.
+        - (void)setDataSource:(WebDataSource *)dataSource;
+    */
+    HRESULT setDataSource([in] IWebDataSource* dataSource);
+
+    /*!
+        @method receivedData:withDataSource:
+        @abstract Called when the data source has received data.
+        @param data The data that the data source has received.
+        @param dataSource The data source that has received data.
+        - (void)receivedData:(NSData *)data withDataSource:(WebDataSource *)dataSource;
+    */
+    HRESULT receivedData([in] IStream* data, [in] IWebDataSource* dataSource);
+
+    /*!
+        @method receivedError:withDataSource:
+        @abstract Called when the data source has received an error.
+        @param error The error that the data source has received.
+        @param dataSource The data source that has received the error.
+        - (void)receivedError:(NSError *)error withDataSource:(WebDataSource *)dataSource;
+    */
+    HRESULT receivedError([in] IWebError* error, [in] IWebDataSource* dataSource);
+
+    /*!
+        @method finishedLoadingWithDataSource:
+        @abstract Called when the data source has finished loading.
+        @param dataSource The datasource that has finished loading.
+        - (void)finishedLoadingWithDataSource:(WebDataSource *)dataSource;
+    */
+    HRESULT finishedLoadingWithDataSource([in] IWebDataSource* dataSource);
+
+    /*!
+        @method canProvideDocumentSource
+        @result Returns true if the representation can provide document source.
+        - (BOOL)canProvideDocumentSource;
+    */
+    HRESULT canProvideDocumentSource([out, retval] BOOL* result);
+
+    /*!
+        @method documentSource
+        @result Returns the textual source representation of the document.  For HTML documents
+        this is the original HTML source.
+        - (NSString *)documentSource;
+    */
+    HRESULT documentSource([out, retval] BSTR* source);
+
+    /*!
+        @method title
+        @result Return the title for the document.
+        - (NSString *)title;
+    */
+    HRESULT title([out, retval] BSTR* docTitle);
+}
diff --git a/WebKit/COM/Interfaces/IWebDownload.idl b/WebKit/COM/Interfaces/IWebDownload.idl
new file mode 100644 (file)
index 0000000..8789a51
--- /dev/null
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+
+/*!
+    @class WebDownload
+    @discussion A WebDownload works just like an NSURLDownload, with
+    one extra feature: if you do not implement the
+    authentication-related delegate methods, it will automatically
+    prompt for authentication using the standard WebKit authentication
+    panel, as either a sheet or window. It provides no extra methods,
+    but does have one additional delegate method.
+*/
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(65EFE83B-A9E4-4516-8F3B-BAA25DA90FFD),\r
+    pointer_default(unique)\r
+]\r
+interface IWebDownload : IUnknown\r
+{
+    /*
+        + (BOOL)canResumeDownloadDecodedWithEncodingMIMEType:(NSString *)MIMEType
+    */
+    HRESULT canResumeDownloadDecodedWithEncodingMIMEType([in] BSTR mimeType, [out, retval] BOOL* result);
+
+    /*
+        - (void)cancel
+    */
+    HRESULT cancel();
+
+    /*
+        - (BOOL)deletesFileUponFailure
+    */
+    HRESULT deletesFileUponFailure([out, retval] BOOL* result);
+
+    /*
+        - (id)initWithRequest:(NSURLRequest *)request delegate:(id)delegate
+    */
+    HRESULT initWithRequest([in] BSTR request, [in] IUnknown* delegate);
+
+    /*
+        - (id)initWithResumeData:(NSData *)resumeData delegate:(id)delegate path:(NSString *)path
+    */
+    HRESULT initWithResumeData([in] IStream* resumeData, [in] IUnknown* delegate, [in] BSTR path);
+
+    /*
+        - (NSURLRequest *)request
+    */
+    HRESULT request([out, retval] BSTR* request);
+
+    /*
+        - (NSData *)resumeData
+    */
+    HRESULT resumeData([out, retval] IStream** stream);
+
+    /*
+        - (void)setDeletesFileUponFailure:(BOOL)deletesFileUponFailure
+    */
+    HRESULT setDeletesFileUponFailure([in] BOOL deletesFileUponFailure);
+
+    /*
+        - (void)setDestination:(NSString *)path allowOverwrite:(BOOL)allowOverwrite
+    */
+    HRESULT setDestination([in] BSTR path, [in] BOOL allowOverwrite);
+}\r
+\r
+\r
+/*!
+    @protocol WebDownloadDelegate
+    @discussion The WebDownloadDelegate delegate has one extra method used to choose
+    the right window when automatically prompting with a sheet.
+    @interface NSObject (WebDownloadDelegate)
+*/
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(16A32AE6-C862-40cd-9225-2CAF823F40F9),\r
+    pointer_default(unique)\r
+]\r
+interface IWebDownloadDelegate : IUnknown\r
+{
+    /*!
+        @method downloadWindowForAuthenticationSheet:
+        @abstract
+        @param
+        @result
+        - (NSWindow *)downloadWindowForAuthenticationSheet:(WebDownload *)download;
+    */
+    HRESULT downloadWindowForAuthenticationSheet([in] IWebDownload* download, [out, retval] HWND* window);
+}\r
diff --git a/WebKit/COM/Interfaces/IWebEditingDelegate.idl b/WebKit/COM/Interfaces/IWebEditingDelegate.idl
new file mode 100644 (file)
index 0000000..9b71831
--- /dev/null
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "IWebNotification.idl";\r
+import "DOMCore.idl";\r
+import "DOMRange.idl";\r
+import "IWebUndoManager.idl";\r
+
+interface IDOMCSSStyleDeclaration;
+interface IDOMRange;
+interface IWebView;
+interface IWebNotification;
+
+typedef enum _WebViewInsertAction {
+    WebViewInsertActionTyped,
+    WebViewInsertActionPasted,
+    WebViewInsertActionDropped,
+} WebViewInsertAction;
+
+/*
+    @interface NSObject (WebViewEditingDelegate)
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(2C75A1E3-EE9D-45c8-A385-19DE68AC5675),\r
+    pointer_default(unique)\r
+]\r
+interface IWebViewEditingDelegate : IUnknown\r
+{
+    /*
+        - (BOOL)webView:(WebView *)webView shouldBeginEditingInDOMRange:(DOMRange *)range;
+    */
+    HRESULT shouldBeginEditingInDOMRange([in] IWebView* webView, [in] IDOMRange* range, [out, retval] BOOL* result);
+
+    /*
+        - (BOOL)webView:(WebView *)webView shouldEndEditingInDOMRange:(DOMRange *)range;
+    */
+    HRESULT shouldEndEditingInDOMRange([in] IWebView* webView, [in] IDOMRange* range, [out, retval] BOOL* result);
+
+    /*
+        - (BOOL)webView:(WebView *)webView shouldInsertNode:(DOMNode *)node replacingDOMRange:(DOMRange *)range givenAction:(WebViewInsertAction)action;
+    */
+    HRESULT shouldInsertNode([in] IWebView* webView, [in] IDOMNode* node, [in] IDOMRange* range, [in] WebViewInsertAction action);
+
+    /*
+        - (BOOL)webView:(WebView *)webView shouldInsertText:(NSString *)text replacingDOMRange:(DOMRange *)range givenAction:(WebViewInsertAction)action;
+    */
+    HRESULT shouldInsertText([in] IWebView* webView, [in] BSTR text, [in] IDOMRange* range, [in] WebViewInsertAction action, [out, retval] BOOL* result);
+
+    /*
+        - (BOOL)webView:(WebView *)webView shouldDeleteDOMRange:(DOMRange *)range;
+    */
+    HRESULT shouldDeleteDOMRange([in] IWebView* webView, [in] IDOMRange* range, [out, retval] BOOL* result);
+
+    /*
+        - (BOOL)webView:(WebView *)webView shouldChangeSelectedDOMRange:(DOMRange *)currentRange toDOMRange:(DOMRange *)proposedRange affinity:(NSSelectionAffinity)selectionAffinity stillSelecting:(BOOL)flag;
+    */
+    HRESULT shouldChangeSelectedDOMRange([in] IWebView* webView, [in] IDOMRange* currentRange, [in] IDOMRange* proposedRange, [in] WebSelectionAffinity selectionAffinity, [in] BOOL stillSelecting, [out, retval] BOOL* result);
+    /*
+        - (BOOL)webView:(WebView *)webView shouldApplyStyle:(DOMCSSStyleDeclaration *)style toElementsInDOMRange:(DOMRange *)range;
+    */
+    HRESULT shouldApplyStyle([in] IWebView* webView, [in] IDOMCSSStyleDeclaration* style, [in] IDOMRange* range, [out, retval] BOOL* result);
+
+    /*
+        - (BOOL)webView:(WebView *)webView shouldChangeTypingStyle:(DOMCSSStyleDeclaration *)currentStyle toStyle:(DOMCSSStyleDeclaration *)proposedStyle;
+    */
+    HRESULT shouldChangeTypingStyle([in] IWebView* webView, [in] IDOMCSSStyleDeclaration* currentStyle, [in] IDOMCSSStyleDeclaration* proposedStyle, [out, retval] BOOL* result);
+
+    /*
+        - (BOOL)webView:(WebView *)webView doCommandBySelector:(SEL)selector;
+    */
+    HRESULT doCommandBySelector([in] IWebView* webView, [in] UINT selector, [out, retval] BOOL* result);
+
+    /*
+        - (void)webViewDidBeginEditing:(NSNotification *)notification;
+    */
+    HRESULT webViewDidBeginEditing([in] IWebNotification* notification);
+
+    /*
+        - (void)webViewDidChange:(NSNotification *)notification;
+    */
+    HRESULT webViewDidChange([in] IWebNotification* notification);
+
+    /*
+        - (void)webViewDidEndEditing:(NSNotification *)notification;
+    */
+    HRESULT webViewDidEndEditing([in] IWebNotification* notification);
+
+    /*
+        - (void)webViewDidChangeTypingStyle:(NSNotification *)notification;
+    */
+    HRESULT webViewDidChangeTypingStyle([in] IWebNotification* notification);
+
+    /*
+        - (void)webViewDidChangeSelection:(NSNotification *)notification;
+    */
+    HRESULT webViewDidChangeSelection([in] IWebNotification* notification);
+
+    /*
+        - (NSUndoManager *)undoManagerForWebView:(WebView *)webView;
+    */
+    HRESULT undoManagerForWebView([in] IWebView* webView, [out, retval] IWebUndoManager* undoManager);
+}
diff --git a/WebKit/COM/Interfaces/IWebError.idl b/WebKit/COM/Interfaces/IWebError.idl
new file mode 100644 (file)
index 0000000..47bb99a
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(89E3B189-0B60-4d6b-A87A-3F1172CB5538),\r
+    pointer_default(unique)\r
+]\r
+interface IWebError : IUnknown\r
+{\r
+    /*\r
+        + (id)errorWithDomain:(NSString *)domain code:(int)code userInfo:(NSDictionary *)dict\r
+    */\r
+    HRESULT errorWithDomain([in] BSTR domain, [in] int code, [in] IPropertyBag* dict);\r
+\r
+    /*\r
+        - (int)code\r
+    */\r
+    HRESULT code_([out, retval] int* result);\r
+\r
+    /*\r
+        - (NSString *)domain\r
+    */\r
+    HRESULT domain([out, retval] BSTR* result);\r
+\r
+    /*\r
+        - (id)initWithDomain:(NSString *)domain code:(int)code userInfo:(NSDictionary *)dict\r
+    */\r
+    HRESULT initWithDomain([in] BSTR domain, [in] int code, [in] IPropertyBag* dict);\r
+\r
+    /*\r
+        - (NSString *)localizedDescription\r
+    */\r
+    HRESULT localizedDescription([out, retval] BSTR* result);\r
+\r
+    /*\r
+        - (NSString *)localizedFailureReason\r
+    */\r
+    HRESULT localizedFailureReason([out, retval] BSTR* result);\r
+\r
+    /*\r
+        - (NSArray *)localizedRecoveryOptions\r
+    */\r
+    HRESULT localizedRecoveryOptions([out] int* cOptions, [out, retval] BSTR** options);\r
+\r
+    /*\r
+        - (NSString *)localizedRecoverySuggestion\r
+    */\r
+    HRESULT localizedRecoverySuggestion([out, retval] BSTR* result);\r
+    \r
+    /*\r
+        - (id)recoverAttempter\r
+    */\r
+    HRESULT recoverAttempter([out, retval] IUnknown** result);\r
+\r
+    /*\r
+        - (NSDictionary *)userInfo\r
+    */\r
+    HRESULT userInfo([out, retval] IPropertyBag** result);\r
+}\r
diff --git a/WebKit/COM/Interfaces/IWebFrame.idl b/WebKit/COM/Interfaces/IWebFrame.idl
new file mode 100644 (file)
index 0000000..c99b507
--- /dev/null
@@ -0,0 +1,244 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "DOMHTML.idl";\r
+import "IWebArchive.idl";\r
+import "IWebFrameView.idl";\r
+import "IWebView.idl";\r
+import "IWebURLRequest.idl";\r
+import "DOMCore.idl";\r
+\r
+interface IDOMDocument;
+interface IDOMHTMLElement;
+interface IWebURLRequest;
+interface IWebArchive;
+interface IWebDataSource;
+interface IWebFramePrivate;
+interface IWebFrameView;
+interface IWebView;
+\r
+/*!
+    @class WebFrame
+    @discussion Every web page is represented by at least one WebFrame.  A WebFrame
+    has a WebFrameView and a WebDataSource.
+    @interface WebFrame : NSObject
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(B4B22EF7-DD43-4d01-A992-99C4A8B1F845),\r
+    pointer_default(unique)\r
+]\r
+interface IWebFrame : IUnknown\r
+{
+    /*!
+        @method initWithName:webFrameView:webView:
+        @abstract The designated initializer of WebFrame.
+        @discussion WebFrames are normally created for you by the WebView.  You should 
+        not need to invoke this method directly.
+        @param name The name of the frame.
+        @param view The WebFrameView for the frame.
+        @param webView The WebView that manages the frame.
+        @result Returns an initialized WebFrame.
+        - (id)initWithName:(NSString *)name webFrameView:(WebFrameView *)view webView:(WebView *)webView;
+    */
+    HRESULT initWithName([in] BSTR name, [in] IWebFrameView* view, [in] IWebView* webView);
+
+    /*!
+        @method name
+        @result The frame name.
+        - (NSString *)name;
+    */
+    HRESULT name([out, retval] BSTR* frameName);
+
+    /*!
+        @method webView
+        @result Returns the WebView for the document that includes this frame.
+        - (WebView *)webView;
+    */
+    HRESULT webView([out, retval] IWebView* view);
+
+    /*!
+        @method frameView
+        @result The WebFrameView for this frame.
+        - (WebFrameView *)frameView;
+    */
+    HRESULT frameView([out, retval] IWebFrameView* view);
+
+    /*!
+        @method DOMDocument
+        @abstract Returns the DOM document of the frame.
+        @description Returns nil if the frame does not contain a DOM document such as a standalone image.
+        - (DOMDocument *)DOMDocument;
+    */
+    HRESULT DOMDocument([out, retval] IDOMDocument** document);
+
+    /*!
+        @method frameElement
+        @abstract Returns the frame element of the frame.
+        @description The class of the result is either DOMHTMLFrameElement, DOMHTMLIFrameElement or DOMHTMLObjectElement.
+        Returns nil if the frame is the main frame since there is no frame element for the frame in this case.
+        - (DOMHTMLElement *)frameElement;
+    */
+    HRESULT frameElement([out, retval] IDOMHTMLElement* frameElement);
+
+    /*!
+        @method loadRequest:
+        @param request The web request to load.
+        - (void)loadRequest:(NSURLRequest *)request;
+    */
+    HRESULT loadRequest([in] IWebURLRequest* request);
+
+    /*!
+        @method loadData:MIMEType:textEncodingName:baseURL:
+        @param data The data to use for the main page of the document.
+        @param MIMEType The MIME type of the data.
+        @param encodingName The encoding of the data.
+        @param URL The base URL to apply to relative URLs within the document.
+        - (void)loadData:(NSData *)data MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)encodingName baseURL:(NSURL *)URL;
+    */
+    HRESULT loadData([in] IStream* data, [in] BSTR mimeType, [in] BSTR textEncodingName, [in] BSTR url);
+
+    /*!
+        @method loadHTMLString:baseURL:
+        @param string The string to use for the main page of the document.
+        @param URL The base URL to apply to relative URLs within the document.
+        - (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)URL;
+    */
+    HRESULT loadHTMLString([in] BSTR string, [in] BSTR baseURL);
+
+    /*!
+        @method loadAlternateHTMLString:baseURL:forUnreachableURL:
+        @abstract Loads a page to display as a substitute for a URL that could not be reached.
+        @discussion This allows clients to display page-loading errors in the webview itself.
+        This is typically called while processing the WebFrameLoadDelegate method
+        -webView:didFailProvisionalLoadWithError:forFrame: or one of the the WebPolicyDelegate methods
+        -webView:decidePolicyForMIMEType:request:frame:decisionListener: or
+        -webView:unableToImplementPolicyWithError:frame:. If it is called from within one of those
+        three delegate methods then the back/forward list will be maintained appropriately.
+        @param string The string to use for the main page of the document.
+        @param baseURL The baseURL to apply to relative URLs within the document.
+        @param unreachableURL The URL for which this page will serve as alternate content.
+        - (void)loadAlternateHTMLString:(NSString *)string baseURL:(NSURL *)baseURL forUnreachableURL:(NSURL *)unreachableURL;
+    */
+    HRESULT loadAlternateHTMLString([in] BSTR str, [in] BSTR baseURL, [in] BSTR unreachableURL);
+
+    /*!
+        @method loadArchive:
+        @abstract Causes WebFrame to load a WebArchive.
+        @param archive The archive to be loaded.
+        - (void)loadArchive:(WebArchive *)archive;
+    */
+    HRESULT loadArchive([in] IWebArchive* archive);
+
+    /*!
+        @method dataSource
+        @discussion Returns the committed data source.  Will return nil if the
+        provisional data source hasn't yet been loaded.
+        @result The datasource for this frame.
+        - (WebDataSource *)dataSource;
+    */
+    HRESULT dataSource([out, retval] IWebDataSource** source);
+
+    /*!
+        @method provisionalDataSource
+        @discussion Will return the provisional data source.  The provisional data source will
+        be nil if no data source has been set on the frame, or the data source
+        has successfully transitioned to the committed data source.
+        @result The provisional datasource of this frame.
+        - (WebDataSource *)provisionalDataSource;
+    */
+    HRESULT provisionalDataSource([out, retval] IWebDataSource** source);
+
+    /*!
+        @method stopLoading
+        @discussion Stop any pending loads on the frame's data source,
+        and its children.
+        - (void)stopLoading;
+    */
+    HRESULT stopLoading();
+
+    /*!
+        @method reload
+        - (void)reload;
+    */
+    HRESULT reload();
+
+    /*!
+        @method findFrameNamed:
+        @discussion This method returns a frame with the given name. findFrameNamed returns self 
+        for _self and _current, the parent frame for _parent and the main frame for _top. 
+        findFrameNamed returns self for _parent and _top if the receiver is the mainFrame.
+        findFrameNamed first searches from the current frame to all descending frames then the
+        rest of the frames in the WebView. If still not found, findFrameNamed searches the
+        frames of the other WebViews.
+        @param name The name of the frame to find.
+        @result The frame matching the provided name. nil if the frame is not found.
+        - (WebFrame *)findFrameNamed:(NSString *)name;
+    */
+    HRESULT findFrameNamed([in] BSTR name, [out, retval] IWebFrame** frame);
+
+    /*!
+        @method parentFrame
+        @result The frame containing this frame, or nil if this is a top level frame.
+        - (WebFrame *)parentFrame;
+    */
+    HRESULT parentFrame([out, retval] IWebFrame** frame);
+
+    /*!
+        @method childFrames
+        @discussion The frames in the array are associated with a frame set or iframe.
+        @result Returns an array of WebFrame.
+        - (NSArray *)childFrames;
+    */
+    HRESULT childFrames([out] int* frameCount, [out, retval] IWebFrame*** frames);
+}
diff --git a/WebKit/COM/Interfaces/IWebFrameLoadDelegate.idl b/WebKit/COM/Interfaces/IWebFrameLoadDelegate.idl
new file mode 100644 (file)
index 0000000..d4f5c47
--- /dev/null
@@ -0,0 +1,227 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "IWebImage.idl";\r
+import "IWebScriptObject.idl";\r
+import "IWebView.idl";\r
+import "IWebFrame.idl";\r
+
+interface IWebError;
+interface IWebFrame;
+interface IWebScriptObject;
+interface IWebView;
+interface IWebImage;
+\r
+/*!
+    @category WebFrameLoadDelegate
+    @discussion A WebView's WebFrameLoadDelegate tracks the loading progress of its frames.
+    When a data source of a frame starts to load, the data source is considered "provisional".
+    Once at least one byte is received, the data source is considered "committed". This is done
+    so the contents of the frame will not be lost if the new data source fails to successfully load.
+    @interface NSObject (WebFrameLoadDelegate)
+*/
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(4CD809C2-73A5-44ee-B0D7-D1863DFE9F57),\r
+    pointer_default(unique)\r
+]\r
+interface IWebFrameLoadDelegate : IUnknown\r
+{
+    /*!
+        @method webView:didStartProvisionalLoadForFrame:
+        @abstract Notifies the delegate that the provisional load of a frame has started
+        @param webView The WebView sending the message
+        @param frame The frame for which the provisional load has started
+        @discussion This method is called after the provisional data source of a frame
+        has started to load.
+        - (void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame;
+    */
+    HRESULT didStartProvisionalLoadForFrame([in] IWebView* webView, [in] IWebFrame* frame);
+
+    /*!
+        @method webView:didReceiveServerRedirectForProvisionalLoadForFrame:
+        @abstract Notifies the delegate that a server redirect occurred during the provisional load
+        @param webView The WebView sending the message
+        @param frame The frame for which the redirect occurred
+        - (void)webView:(WebView *)sender didReceiveServerRedirectForProvisionalLoadForFrame:(WebFrame *)frame;
+    */
+    HRESULT didReceiveServerRedirectForProvisionalLoadForFrame([in] IWebView* webView, [in] IWebFrame* frame);
+
+    /*!
+        @method webView:didFailProvisionalLoadWithError:forFrame:
+        @abstract Notifies the delegate that the provisional load has failed
+        @param webView The WebView sending the message
+        @param error The error that occurred
+        @param frame The frame for which the error occurred
+        @discussion This method is called after the provisional data source has failed to load.
+        The frame will continue to display the contents of the committed data source if there is one.
+        - (void)webView:(WebView *)sender didFailProvisionalLoadWithError:(NSError *)error forFrame:(WebFrame *)frame;
+    */
+    HRESULT didFailProvisionalLoadWithError([in] IWebView* webView, [in] IWebError* error, [in] IWebFrame* frame);
+
+    /*!
+        @method webView:didCommitLoadForFrame:
+        @abstract Notifies the delegate that the load has changed from provisional to committed
+        @param webView The WebView sending the message
+        @param frame The frame for which the load has committed
+        @discussion This method is called after the provisional data source has become the
+        committed data source.
+
+        In some cases, a single load may be committed more than once. This happens
+        in the case of multipart/x-mixed-replace, also known as "server push". In this case,
+        a single location change leads to multiple documents that are loaded in sequence. When
+        this happens, a new commit will be sent for each document.
+        - (void)webView:(WebView *)sender didCommitLoadForFrame:(WebFrame *)frame;
+    */
+    HRESULT didCommitLoadForFrame([in] IWebView* webView, [in] IWebFrame* frame);
+
+    /*!
+        @method webView:didReceiveTitle:forFrame:
+        @abstract Notifies the delegate that the page title for a frame has been received
+        @param webView The WebView sending the message
+        @param title The new page title
+        @param frame The frame for which the title has been received
+        @discussion The title may update during loading; clients should be prepared for this.
+        - (void)webView:(WebView *)sender didReceiveTitle:(NSString *)title forFrame:(WebFrame *)frame;
+    */
+    HRESULT didReceiveTitle([in] IWebView* webView, [in] BSTR title, [in] IWebFrame* frame);
+
+    /*!
+        @method webView:didReceiveIcon:forFrame:
+        @abstract Notifies the delegate that a page icon image for a frame has been received
+        @param webView The WebView sending the message
+        @param image The icon image. Also known as a "favicon".
+        @param frame The frame for which a page icon has been received
+        - (void)webView:(WebView *)sender didReceiveIcon:(NSImage *)image forFrame:(WebFrame *)frame;
+    */
+    HRESULT didReceiveIcon([in] IWebView* webView, [in] IWebImage* image, [in] IWebFrame* frame);
+
+    /*!
+        @method webView:didFinishLoadForFrame:
+        @abstract Notifies the delegate that the committed load of a frame has completed
+        @param webView The WebView sending the message
+        @param frame The frame that finished loading
+        @discussion This method is called after the committed data source of a frame has successfully loaded
+        and will only be called when all subresources such as images and stylesheets are done loading.
+        Plug-In content and JavaScript-requested loads may occur after this method is called.
+        - (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame;
+    */
+    HRESULT didFinishLoadForFrame([in] IWebView* webView, [in] IWebFrame* frame);
+
+    /*!
+        @method webView:didFailLoadWithError:forFrame:
+        @abstract Notifies the delegate that the committed load of a frame has failed
+        @param webView The WebView sending the message
+        @param error The error that occurred
+        @param frame The frame that failed to load
+        @discussion This method is called after a data source has committed but failed to completely load.
+        - (void)webView:(WebView *)sender didFailLoadWithError:(NSError *)error forFrame:(WebFrame *)frame;
+    */
+    HRESULT didFailLoadWithError([in] IWebView* webView, [in] IWebError* error, [in] IWebFrame* forFrame);
+
+    /*!
+        @method webView:didChangeLocationWithinPageForFrame:
+        @abstract Notifies the delegate that the scroll position in a frame has changed
+        @param webView The WebView sending the message
+        @param frame The frame that scrolled
+        @discussion This method is called when anchors within a page have been clicked.
+        - (void)webView:(WebView *)sender didChangeLocationWithinPageForFrame:(WebFrame *)frame;
+    */
+    HRESULT didChangeLocationWithinPageForFrame([in] IWebView* webView, [in] IWebFrame* frame);
+
+    /*!
+        @method webView:willPerformClientRedirectToURL:delay:fireDate:forFrame:
+        @abstract Notifies the delegate that a frame will perform a client-side redirect
+        @param webView The WebView sending the message
+        @param URL The URL to be redirected to
+        @param seconds Seconds in which the redirect will happen
+        @param date The fire date
+        @param frame The frame on which the redirect will occur
+        @discussion This method can be used to continue progress feedback while a client-side
+        redirect is pending.
+        - (void)webView:(WebView *)sender willPerformClientRedirectToURL:(NSURL *)URL delay:(NSTimeInterval)seconds fireDate:(NSDate *)date forFrame:(WebFrame *)frame;
+    */
+    HRESULT willPerformClientRedirectToURL([in] IWebView* webView, [in] BSTR url, UINT delaySeconds, [in] UINT fireDate, [in] IWebFrame* frame);
+
+    /*!
+        @method webView:didCancelClientRedirectForFrame:
+        @abstract Notifies the delegate that a pending client-side redirect has been cancelled
+        @param webView The WebView sending the message
+        @param frame The frame for which the pending redirect was cancelled
+        @discussion A client-side redirect can be cancelled if a frame changes location before the timeout.
+        - (void)webView:(WebView *)sender didCancelClientRedirectForFrame:(WebFrame *)frame;
+    */
+    HRESULT didCancelClientRedirectForFrame([in] IWebView* webView, [in] IWebFrame* frame);
+
+    /*!
+        @method webView:willCloseFrame:
+        @abstract Notifies the delegate that a frame will be closed
+        @param webView The WebView sending the message
+        @param frame The frame that will be closed
+        @discussion This method is called right before WebKit is done with the frame
+        and the objects that it contains.
+        - (void)webView:(WebView *)sender willCloseFrame:(WebFrame *)frame;
+    */
+    HRESULT willCloseFrame([in] IWebView* webView, [in] IWebFrame* frame);
+
+    /*!
+        @method webView:windowScriptObjectAvailable:
+        @abstract Notifies the delegate that the scripting object for a page is available.  This is called
+        before the page is loaded.  It may be useful to allow delegates to bind native objects to the window.
+        @param webView The webView sending the message.
+        @param windowScriptObject The WebScriptObject for the window in the scripting environment.
+        - (void)webView:(WebView *)webView windowScriptObjectAvailable:(WebScriptObject *)windowScriptObject;
+    */
+    HRESULT windowScriptObjectAvailable([in] IWebView* webView, [in] IWebScriptObject* windowScriptObject);
+}
diff --git a/WebKit/COM/Interfaces/IWebFrameView.idl b/WebKit/COM/Interfaces/IWebFrameView.idl
new file mode 100644 (file)
index 0000000..cf981c5
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "IWebDocument.idl";\r
+
+/*!
+    @class WebFrameView
+    @interface WebFrameView : NSView
+*/
+interface IWebFrame;\r
+interface IWebDocumentView;\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(E23E1B15-78F6-4e89-AD2E-49992A040A35),\r
+    pointer_default(unique)\r
+]\r
+interface IWebFrameView : IUnknown\r
+{\r
+    /*!
+        @method webFrame
+        @abstract Returns the WebFrame associated with this WebFrameView
+        @result The WebFrameView's frame.
+        - (WebFrame *)webFrame;
+   */
+   HRESULT webFrame([out, retval] IWebFrame* frame);
+    /*!
+        @method documentView
+        @abstract Returns the WebFrameView's document subview
+        @result The subview that renders the WebFrameView's contents
+        - (NSView <WebDocumentView> *)documentView;
+    */
+   HRESULT documentView([out, retval] IWebDocumentView* view);
+
+    /*!
+        @method setAllowsScrolling:
+        @abstract Sets whether the WebFrameView allows its document to be scrolled
+        @param flag YES to allow the document to be scrolled, NO to disallow scrolling
+        - (void)setAllowsScrolling:(BOOL)flag;
+    */
+   HRESULT setAllowsScrolling([in] BOOL flag);
+
+    /*!
+        @method allowsScrolling
+        @abstract Returns whether the WebFrameView allows its document to be scrolled
+        @result YES if the document is allowed to scroll, otherwise NO
+        - (BOOL)allowsScrolling;
+    */
+   HRESULT allowsScrolling([out, retval] BOOL* flag);
+}\r
diff --git a/WebKit/COM/Interfaces/IWebHistoryItem.idl b/WebKit/COM/Interfaces/IWebHistoryItem.idl
new file mode 100644 (file)
index 0000000..784f666
--- /dev/null
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "IWebImage.idl";\r
+\r
+/*!
+    @class WebHistoryItem
+    @discussion  WebHistoryItems are created by WebKit to represent pages visited.
+    The WebBackForwardList and WebHistory classes both use WebHistoryItems to represent
+    pages visited.  With the exception of the displayTitle, the properties of 
+    WebHistoryItems are set by WebKit.  WebHistoryItems are normally never created directly.
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(1E2970AE-72B7-4500-A7A0-12B0FFEB91FC),\r
+    pointer_default(unique)\r
+]\r
+interface IWebHistoryItem : IUnknown\r
+{\r
+    /*!
+        @method initWithURLString:title:lastVisitedTimeInterval:
+        @param URLString The URL string for the item.
+        @param title The title to use for the item.  This is normally the <title> of a page.
+        @param time The time used to indicate when the item was used.
+        @abstract Initialize a new WebHistoryItem
+        @discussion WebHistoryItems are normally created for you by the WebKit.
+        You may use this method to prepopulate a WebBackForwardList, or create
+        'artificial' items to add to a WebBackForwardList.  When first initialized
+        the URLString and originalURLString will be the same.
+        - (id)initWithURLString:(NSString *)URLString title:(NSString *)title lastVisitedTimeInterval:(NSTimeInterval)time;
+    */
+    HRESULT initWithURLString([in] BSTR title, [in] UINT time);
+
+    /*!
+        @method originalURLString
+        @abstract The string representation of the originial URL of this item.
+        This value is normally set by the WebKit.
+        @result The string corresponding to the initial URL of this item.
+        - (NSString *)originalURLString;
+    */
+    HRESULT originalURLString([out, retval] BSTR* url);
+
+    /*!
+        @method URLString
+        @abstract The string representation of the URL represented by this item.
+        @discussion The URLString may be different than the originalURLString if the page
+        redirected to a new location.  This value is normally set by the WebKit.
+        @result The string corresponding to the final URL of this item.
+        - (NSString *)URLString;
+    */
+    HRESULT URLString([out, retval] BSTR* url);
+
+
+    /*!
+        @method title
+        @abstract The title of the page represented by this item.
+        @discussion This title cannot be changed by the client.  This value
+        is normally set by the WebKit when a page title for the item is received.
+        @result The title of this item.
+        - (NSString *)title;
+    */
+    HRESULT title([out, retval] BSTR* pageTitle);
+
+    /*!
+        @method lastVisitedTimeInterval
+        @abstract The last time the page represented by this item was visited. The interval
+        is since the reference date as determined by NSDate.  This value is normally set by
+        the WebKit.
+        @result The last time this item was visited.
+        - (NSTimeInterval)lastVisitedTimeInterval;
+    */
+    HRESULT lastVisitedTimeInterval([out, retval] UINT* time);
+
+    /*!
+        @method setAlternateTitle:
+        @param alternateTitle The new display title for this item.
+        @abstract A title that may be used by the client to display this item.
+        - (void)setAlternateTitle:(NSString *)alternateTitle;
+    */
+    HRESULT setAlternateTitle([out, retval] BSTR* title);
+
+    /*
+        @method title
+        @abstract A title that may be used by the client to display this item.
+        @result The alternate title for this item.
+        - (NSString *)alternateTitle;
+    */
+    HRESULT alternateTitle([in] BSTR title);
+
+    /*!
+        @method icon
+        @abstract The favorite icon of the page represented by this item.
+        @discussion This icon returned will be determined by the WebKit.
+        @result The icon associated with this item's URL.
+        - (NSImage *)icon;
+    */\r
+    HRESULT icon([in] IWebImage* image);\r
+}\r
diff --git a/WebKit/COM/Interfaces/IWebIconDatabase.idl b/WebKit/COM/Interfaces/IWebIconDatabase.idl
new file mode 100644 (file)
index 0000000..b0f3e26
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "IWebImage.idl";\r
+
+/*!
+    @class WebIconDatabase
+    @discussion Features:
+        - memory cache icons at different sizes
+        - disk storage
+        - icon update notification
+        
+        Uses:
+        - WebIconLoader to cache icon images
+        - UI elements to retrieve icons that represent site URLs.
+        - Save icons to disk for later use.
+    Every icon in the database has a retain count.  If an icon has a retain count greater than 0, it will be written to disk for later use. If an icon's retain count equals zero it will be removed from disk.  The retain count is not persistent across launches. If the WebKit client wishes to retain an icon it should retain the icon once for every launch.  This is best done at initialization time before the database begins removing icons.  To make sure that the database does not remove unretained icons prematurely, call delayDatabaseCleanup until all desired icons are retained.  Once all are retained, call allowDatabaseCleanup.
+    
+    Note that an icon can be retained after the database clean-up has begun. This just has to be done before the icon is removed. Icons are removed from the database whenever new icons are added to it.
+    
+    Retention methods can be called for icons that are not yet in the database.
+
+    @interface WebIconDatabase : NSObject
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(E93F2616-2560-47d9-BD4D-6E2F1E1D3174),\r
+    pointer_default(unique)\r
+]\r
+interface IWebIconDatabase : IUnknown\r
+{\r
+    /*!
+        @method sharedIconDatabase
+        @abstract Returns a shared instance of the icon database
+        + (WebIconDatabase *)sharedIconDatabase;
+    */
+    HRESULT sharedIconDatabase([out, retval] IWebIconDatabase* result);
+
+    /*!
+        @method iconForURL:withSize:
+        @discussion Calls iconForURL:withSize:cache: with YES for cache.
+        @param URL
+        @param size
+        - (NSImage *)iconForURL:(NSString *)URL withSize:(NSSize)size;
+    */
+    /*!
+        @method iconForURL:withSize:cache:
+        @discussion Returns an icon for a web site URL from memory or disk. nil if none is found.
+        Usually called by a UI element to determine if a site URL has an associated icon.
+        Often called by the observer of WebIconChangedNotification after the notification is sent.
+        @param URL
+        @param size
+        @param cache If yes, caches the returned image in memory if not already cached
+        - (NSImage *)iconForURL:(NSString *)URL withSize:(NSSize)size cache:(BOOL)cache;
+    */
+    /*!
+        @method iconURLForURL:withSize:cache:
+        @discussion Returns an icon URL for a web site URL from memory or disk. nil if none is found.
+        @param URL
+        - (NSString *)iconURLForURL:(NSString *)URL;
+    */
+    HRESULT iconForURL([in] BSTR url, [in, optional] LPSIZE size, [in, optional] BOOL cache, [out, retval] IWebImage** image);
+
+    /*!
+        @method defaultIconWithSize:
+        @param size
+        - (NSImage *)defaultIconWithSize:(NSSize)size;
+    */
+    HRESULT defaultIconWithSize([in] LPSIZE size, [out, retval] IWebImage** result);
+
+    /*!
+        @method retainIconForURL:
+        @abstract Increments the retain count of the icon.
+        @param URL
+        - (void)retainIconForURL:(NSString *)URL;
+    */
+    HRESULT retainIconForURL([in] BSTR url);
+
+    /*!
+        @method releaseIconForURL:
+        @abstract Decrements the retain count of the icon.
+        @param URL
+        - (void)releaseIconForURL:(NSString *)URL;
+    */
+    HRESULT releaseIconForURL([in] BSTR url);
+
+    /*!
+        @method delayDatabaseCleanup:
+        @discussion Only effective if called before the database begins removing icons.
+        delayDatabaseCleanUp increments an internal counter that when 0 begins the database clean-up.
+        The counter equals 0 at initialization.
+        - (void)delayDatabaseCleanup;
+    */
+    HRESULT delayDatabaseCleanup();
+
+    /*!
+        @method allowDatabaseCleanup:
+        @discussion Informs the database that it now can begin removing icons.
+        allowDatabaseCleanup decrements an internal counter that when 0 begins the database clean-up.
+        The counter equals 0 at initialization.
+        - (void)allowDatabaseCleanup;
+    */\r
+    HRESULT allowDatabaseCleanup();\r
+}\r
diff --git a/WebKit/COM/Interfaces/IWebImage.idl b/WebKit/COM/Interfaces/IWebImage.idl
new file mode 100644 (file)
index 0000000..ccd4cc4
--- /dev/null
@@ -0,0 +1,614 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+\r
+interface WebImageRep;\r
+interface WebImageDelegate;\r
+\r
+typedef enum {\r
+    WebImageCacheDefault,\r
+    WebImageCacheAlways,\r
+    WebImageCacheBySize,\r
+    WebImageCacheNever\r
+} WebImageCacheMode;\r
+\r
+typedef enum _WebCompositingOperation {\r
+    WebCompositeClear = 0,\r
+    WebCompositeCopy = 1,\r
+    WebCompositeSourceOver = 2,\r
+    WebCompositeSourceIn = 3,\r
+    WebCompositeSourceOut = 4,\r
+    WebCompositeSourceAtop = 5,\r
+    WebCompositeDestinationOver = 6,\r
+    WebCompositeDestinationIn = 7,\r
+    WebCompositeDestinationOut = 8,\r
+    WebCompositeDestinationAtop = 9,\r
+    WebCompositeXOR = 10,\r
+    WebCompositePlusDarker = 11,\r
+    WebCompositeHighlight = 12,\r
+    WebCompositePlusLighter = 13\r
+} WebCompositingOperation;\r
+\r
+typedef enum _WebTIFFCompression {\r
+    WebTIFFCompressionNone = 1,\r
+    WebTIFFCompressionCCITTFAX3 = 3,\r
+    WebTIFFCompressionCCITTFAX4 = 4,\r
+    WebTIFFCompressionLZW = 5,\r
+    WebTIFFCompressionJPEG = 6,\r
+    WebTIFFCompressionNEXT = 32766,\r
+    WebTIFFCompressionPackBits = 32773,\r
+    WebTIFFCompressionOldJPEG = 32865\r
+} WebTIFFCompression;\r
+\r
+typedef enum {\r
+    WebImageLoadStatusCompleted,\r
+    WebImageLoadStatusCancelled,\r
+    WebImageLoadStatusInvalidData,\r
+    WebImageLoadStatusUnexpectedEOF,\r
+    WebImageLoadStatusReadError\r
+} WebImageLoadStatus;\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(95BA7FC9-7D12-4f5c-B8CB-8CB28D0EE47E),\r
+    pointer_default(unique)\r
+]\r
+interface IWebImage : IUnknown\r
+{\r
+    /*\r
+        + (BOOL)canInitWithPasteboard:(NSPasteboard *)pasteboard\r
+    */\r
+    HRESULT canInitWithPasteboard([in] IDataObject* pasteboard, [out, retval] BOOL* result);\r
+\r
+    /*\r
+        + (NSArray *)imageFileTypes\r
+    */\r
+    HRESULT imageFileTypes([out] int* cTypes, [out, retval] BSTR** types);\r
+\r
+    /*\r
+        + (id)imageNamed:(NSString *)name\r
+    */\r
+    HRESULT imageNamed([in] BSTR name, [out, retval] IUnknown* result);\r
+\r
+    /*\r
+        + (NSArray *)imagePasteboardTypes\r
+    */\r
+    HRESULT imagePasteboardTypes([out] int* cTypes, [out, retval] BSTR** types);\r
+\r
+    /*\r
+        + (NSArray *)imageUnfilteredFileTypes\r
+    */\r
+    HRESULT imageUnfilteredFileTypes([out] int* cTypes, [out, retval] BSTR** types);\r
+\r
+    /*\r
+        + (NSArray *)imageUnfilteredPasteboardTypes\r
+    */\r
+    HRESULT imageUnfilteredPasteboardTypes([out] int* cTypes, [out, retval] BSTR** types);\r
+\r
+    /*\r
+        - (void)addRepresentation:(NSImageRep *)imageRep\r
+    */\r
+    HRESULT addRepresentation([in] WebImageRep* imageRep);\r
+\r
+    /*\r
+        - (void)addRepresentations:(NSArray *)imageReps\r
+    */\r
+    HRESULT addRepresentations([in] int cImageReps, [in, size_is(cImageReps)] WebImageRep** imageReps);\r
+\r
+    /*\r
+        - (NSColor *)backgroundColor\r
+    */\r
+    HRESULT backgroundColor([out, retval] COLORREF* result);\r
+\r
+    /*\r
+        - (NSImageRep *)bestRepresentationForDevice:(NSDictionary *)deviceDescription\r
+    */\r
+    HRESULT bestRepresentationForDevice([in] IPropertyBag* deviceDescription, [out, retval] WebImageRep** result);\r
+\r
+    /*\r
+        - (BOOL)cacheDepthMatchesImageDepth\r
+    */\r
+    HRESULT cacheDepthMatchesImageDepth([out, retval] BOOL* result);\r
+\r
+    /*\r
+        -(NSImageCacheMode)cacheMode\r
+    */\r
+    HRESULT cacheMode([out, retval] WebImageCacheMode* result);\r
+\r
+    /*\r
+        - (void)cancelIncrementalLoad\r
+    */\r
+    HRESULT cancelIncrementalLoad();\r
+\r
+    /*\r
+        - (void)compositeToPoint:(NSPoint)aPoint fromRect:(NSRect)srcRect operation:(NSCompositingOperation)op\r
+        - (void)compositeToPoint:(NSPoint)aPoint fromRect:(NSRect)srcRect operation:(NSCompositingOperation)op fraction:(float)delta\r
+        - (void)compositeToPoint:(NSPoint)aPoint operation:(NSCompositingOperation)op\r
+        - (void)compositeToPoint:(NSPoint)aPoint operation:(NSCompositingOperation)op fraction:(float)delta\r
+    */\r
+    HRESULT compositeToPoint([in, optional] LPPOINT aPoint, [in, optional] LPRECT srcRect, [in, optional] WebCompositingOperation op, [in, optional] float delta);\r
+\r
+    /*\r
+        - (id)delegate\r
+    */\r
+    HRESULT delegate([in] WebImageDelegate* d);\r
+\r
+    /*\r
+        - (void)dissolveToPoint:(NSPoint)aPoint fraction:(float)delta\r
+        - (void)dissolveToPoint:(NSPoint)aPoint fromRect:(NSRect)srcRect fraction:(float)delta\r
+    */\r
+    HRESULT dissolveToPoint([in] LPPOINT aPoint, [in] float delta, [in, optional] LPRECT srcRect);\r
+\r
+    /*\r
+        - (void)drawAtPoint:(NSPoint)point fromRect:(NSRect)srcRect operation:(NSCompositingOperation)op fraction:(float)delta\r
+    */\r
+    HRESULT drawAtPoint([in] LPPOINT point, [in] LPRECT srcRect, [in] WebCompositingOperation op, [in] float delta);\r
+\r
+    /*\r
+        - (void)drawInRect:(NSRect)dstRect fromRect:(NSRect)srcRect operation:(NSCompositingOperation)op fraction:(float)delta\r
+    */\r
+    HRESULT drawInRect([in] LPRECT dstRect, [in] LPRECT srcRect, [in] WebCompositingOperation op, [in] float delta);\r
+\r
+    /*\r
+        - (BOOL)drawRepresentation:(NSImageRep *)imageRep inRect:(NSRect)dstRect\r
+    */\r
+    HRESULT drawRepresentation([in] WebImageRep* imageRep, [in] LPRECT dstRect, [out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (id)initByReferencingFile:(NSString *)filename\r
+    */\r
+    HRESULT initByReferencingFile([in] BSTR fileName);\r
+\r
+    /*\r
+        - (id)initByReferencingURL:(NSURL *)url\r
+    */\r
+    HRESULT initByReferencingURL([in] BSTR url);\r
+\r
+    /*\r
+        - (id)initWithContentsOfFile:(NSString *)filename\r
+    */\r
+    HRESULT initWithContentsOfFile([in] BSTR filename);\r
+\r
+    /*\r
+        - (id)initWithContentsOfURL:(NSURL *)aURL\r
+    */\r
+    HRESULT initWithContentsOfURL([in] BSTR aURL);\r
+\r
+    /*\r
+        - (id)initWithData:(NSData *)data\r
+    */\r
+    HRESULT initWithData([in] IStream* data);\r
+\r
+    /*\r
+        - (id)initWithPasteboard:(NSPasteboard *)pasteboard\r
+    */\r
+    HRESULT initWithPasteboard([in] IDataObject* pasteboard);\r
+\r
+    /*\r
+        - (id)initWithSize:(NSSize)aSize\r
+    */\r
+    HRESULT initWithSize([in] LPPOINT aSize);\r
+\r
+    /*\r
+        - (BOOL)isCachedSeparately\r
+    */\r
+    HRESULT isCachedSeparately([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (BOOL)isDataRetained\r
+    */\r
+    HRESULT isDataRetained([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (BOOL)isFlipped\r
+    */\r
+    HRESULT isFlipped([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (BOOL)isValid\r
+    */\r
+    HRESULT isValid([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (void)lockFocus\r
+    */\r
+    HRESULT lockFocus();\r
+\r
+    /*\r
+        - (void)lockFocusOnRepresentation:(NSImageRep *)imageRepresentation\r
+    */\r
+    HRESULT lockFocusOnRepresentation([in] WebImageRep* imageRepresentation);\r
+\r
+    /*\r
+        - (BOOL)matchesOnMultipleResolution\r
+    */\r
+    HRESULT matchesOnMultipleResolution([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (NSString *)name\r
+    */\r
+    HRESULT name([out, retval] BSTR* result);\r
+\r
+    /*\r
+        - (BOOL)prefersColorMatch\r
+    */\r
+    HRESULT prefersColorMatch([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (void)recache\r
+    */\r
+    HRESULT recache();\r
+\r
+    /*\r
+        - (void)removeRepresentation:(NSImageRep *)imageRep\r
+    */\r
+    HRESULT removeRepresentation([in] WebImageRep* imageRep);\r
+\r
+    /*\r
+        - (NSArray *)representations\r
+    */\r
+    HRESULT representations([out] int* count, [out, retval] WebImageRep** result);\r
+\r
+    /*\r
+        - (BOOL)scalesWhenResized\r
+    */\r
+    HRESULT scalesWhenResized([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (void)setBackgroundColor:(NSColor *)aColor\r
+    */\r
+    HRESULT setBackgroundColor([in] COLORREF* aColor);\r
+\r
+    /*\r
+        - (void)setCacheDepthMatchesImageDepth:(BOOL)flag\r
+    */\r
+    HRESULT setCacheDepthMatchesImageDepth([in] BOOL flag);\r
+\r
+    /*\r
+        - (void)setCachedSeparately:(BOOL)flag\r
+    */\r
+    HRESULT setCachedSeparately([in] BOOL flag);\r
+\r
+    /*\r
+        -(void)setCacheMode:(NSImageCacheMode)mode\r
+    */\r
+    HRESULT setCacheMode([in] WebImageCacheMode mode);\r
+\r
+    /*\r
+        - (void)setDataRetained:(BOOL)flag\r
+    */\r
+    HRESULT setDataRetained([in] BOOL flag);\r
+\r
+    /*\r
+        - (void)setDelegate:(id)anObject\r
+    */\r
+    HRESULT setDelegate([in] WebImageDelegate* d);\r
+\r
+    /*\r
+        - (void)setFlipped:(BOOL)flag\r
+    */\r
+    HRESULT setFlipped([in] BOOL flag);\r
+\r
+    /*\r
+        - (void)setMatchesOnMultipleResolution:(BOOL)flag\r
+    */\r
+    HRESULT setMatchesOnMultipleResolution([in] BOOL flag);\r
+\r
+    /*\r
+        - (BOOL)setName:(NSString *)aString\r
+    */\r
+    HRESULT setName([in] BSTR aString, [out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (void)setPrefersColorMatch:(BOOL)flag\r
+    */\r
+    HRESULT setPrefersColorMatch([in] BOOL flag);\r
+\r
+    /*\r
+        - (void)setScalesWhenResized:(BOOL)flag\r
+    */\r
+    HRESULT setScalesWhenResized([in] BOOL flag);\r
+\r
+    /*\r
+        - (void)setSize:(NSSize)aSize\r
+    */\r
+    HRESULT setSize([in] LPSIZE size);\r
+\r
+    /*\r
+        - (void)setUsesEPSOnResolutionMismatch:(BOOL)flag\r
+    */\r
+    HRESULT setUsesEPSOnResolutionMismatch([in] BOOL flag);\r
+\r
+    /*\r
+        - (NSSize)size\r
+    */\r
+    HRESULT size([out, retval] LPSIZE* size);\r
+\r
+    /*\r
+        - (NSData *)TIFFRepresentation\r
+    */\r
+    HRESULT TIFFRepresentation([out, retval] IStream** result);\r
+\r
+    /*\r
+        - (NSData *)TIFFRepresentationUsingCompression:(NSTIFFCompression)comp factor:(float)aFloat\r
+    */\r
+    HRESULT TIFFRepresentationUsingCompression([in] WebTIFFCompression comp, [in] float aFloat, [out, retval] IStream** result);\r
+\r
+    /*\r
+        - (void)unlockFocus\r
+    */\r
+    HRESULT unlockFocus();\r
+\r
+    /*\r
+        - (BOOL)usesEPSOnResolutionMismatch\r
+    */\r
+    HRESULT usesEPSOnResolutionMismatch([out, retval] BOOL* result);\r
+}\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(A3FAD4F7-4D02-4285-8E78-6C20BA6134E9),\r
+    pointer_default(unique)\r
+]\r
+interface WebImageDelegate : IUnknown\r
+{\r
+    /*\r
+        - (void)image:(NSImage *)image didLoadRepresentation:(NSImageRep *)rep withStatus:(NSImageLoadStatus)status\r
+    */\r
+    HRESULT didLoadRepresentation([in] IWebImage* image, [in] WebImageRep* rep, [in] WebImageLoadStatus status);\r
+\r
+    /*\r
+        - (void)image:(NSImage *)image didLoadPartOfRepresentation:(NSImageRep *)rep withValidRows:(int)rows\r
+    */\r
+    HRESULT didLoadPartOfRepresentation([in] IWebImage* image, [in] WebImageRep* rep, [in] int rows);\r
+\r
+    /*\r
+        - (void)image:(NSImage *)image didLoadRepresentationHeader:(NSImageRep *)rep\r
+    */\r
+    HRESULT didLoadRepresentationHeader([in] IWebImage* image, [in] WebImageRep* rep);\r
+\r
+    /*\r
+        - (void)image:(NSImage *)image willLoadRepresentation:(NSImageRep *)rep\r
+    */\r
+    HRESULT willLoadRepresentation([in] IWebImage* image, [in] WebImageRep* rep);\r
+\r
+    /*\r
+        - (NSImage *)imageDidNotDraw:(id)sender inRect:(NSRect)aRect\r
+    */\r
+    HRESULT imageDidNotDraw([in] IWebImage* image, [in] LPRECT aRect);\r
+}\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(6FF5CD5A-16C6-4f47-A7B3-0DFDFD9802B9),\r
+    pointer_default(unique)\r
+]\r
+interface WebImageRep : IUnknown\r
+{\r
+    /*\r
+        + (BOOL)canInitWithData:(NSData *)data\r
+    */\r
+    HRESULT canInitWithData([in] IStream* data, [out, retval] BOOL* result);\r
+\r
+    /*\r
+        + (BOOL)canInitWithPasteboard:(NSPasteboard *)pasteboard\r
+    */\r
+    HRESULT canInitWithPasteboard([in] IDataObject* pasteboard, [out, retval] BOOL* result);\r
+\r
+    /*\r
+        + (NSArray *)imageFileTypes\r
+    */\r
+    HRESULT imageFileTypes([out] int* cTypes, [out, retval] BSTR** types);\r
+\r
+    /*\r
+        + (NSArray *)imagePasteboardTypes\r
+    */\r
+    HRESULT imagePasteboardTypes([out] int* cTypes, [out, retval] BSTR** types);\r
+\r
+    /*\r
+        + (Class)imageRepClassForData:(NSData *)data\r
+    */\r
+    HRESULT imageRepClassForData([in] IStream* data);\r
+\r
+    /*\r
+        + (Class)imageRepClassForFileType:(NSString *)type\r
+    */\r
+    HRESULT imageRepClassForFileType([in] BSTR type);\r
+\r
+    /*\r
+        + (Class)imageRepClassForPasteboardType:(NSString *)type\r
+    */\r
+    HRESULT imageRepClassForPasteboardType([in] BSTR type);\r
+\r
+    /*\r
+        + (NSArray *)imageRepsWithContentsOfFile:(NSString *)filename\r
+    */\r
+    HRESULT imageRepsWithContentsOfFile([in] BSTR filename, [out] int* cReps, [out, retval] WebImageRep** reps);\r
+\r
+    /*\r
+        + (NSArray *)imageRepsWithContentsOfURL:(NSURL *)aURL\r
+    */\r
+    HRESULT imageRepsWithContentsOfURL([in] BSTR aURL, [out] int* cReps, [out, retval] WebImageRep** reps);\r
+\r
+    /*\r
+        + (NSArray *)imageRepsWithPasteboard:(NSPasteboard *)pasteboard\r
+    */\r
+    HRESULT imageRepsWithPasteboard([in] IDataObject* pasteboard, [out] int* cReps, [out, retval] WebImageRep** reps);\r
+\r
+    /*\r
+        + (id)imageRepWithContentsOfFile:(NSString *)filename\r
+    */\r
+    HRESULT imageRepWithContentsOfFile([in] BSTR filename);\r
+\r
+    /*\r
+        + (id)imageRepWithContentsOfURL:(NSURL *)aURL\r
+    */\r
+    HRESULT imageRepWithContentsOfURL([in] BSTR aURL);\r
+\r
+    /*\r
+        + (id)imageRepWithPasteboard:(NSPasteboard *)pasteboard\r
+    */\r
+    HRESULT imageRepWithPasteboard([in] IDataObject* pasteboard);\r
+\r
+    /*\r
+        + (NSArray *)imageUnfilteredFileTypes\r
+    */\r
+    HRESULT imageUnfilteredFileTypes([out] int* cTypes, [out, retval] BSTR* types);\r
+\r
+    /*\r
+        + (NSArray *)imageUnfilteredPasteboardTypes\r
+    */\r
+    HRESULT imageUnfilteredPasteboardTypes([out] int* cTypes, [out, retval] BSTR* types);\r
+\r
+    /*\r
+        + (NSArray *)registeredImageRepClasses\r
+    */\r
+    HRESULT registeredImageRepClasses([out] int* cTypes, [out, retval] WebImageRep* types);\r
+\r
+    /*\r
+        + (void)registerImageRepClass:(Class)imageRepClass\r
+    */\r
+    HRESULT registerImageRepClass([in] WebImageRep* repClass);\r
+\r
+    /*\r
+        + (void)unregisterImageRepClass:(Class)imageRepClass\r
+    */\r
+    HRESULT unregisterImageRepClass([in] WebImageRep* repClass);\r
+\r
+    /*\r
+        - (int)bitsPerSample\r
+    */\r
+    HRESULT bitsPerSample([out, retval] int* result);\r
+\r
+    /*\r
+        - (NSString *)colorSpaceName\r
+    */\r
+    HRESULT colorSpaceName([out, retval] BSTR* result);\r
+\r
+    /*\r
+        - (BOOL)draw\r
+    */\r
+    HRESULT draw([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (BOOL)drawAtPoint:(NSPoint)aPoint\r
+    */\r
+    HRESULT drawAtPoint([in] LPPOINT aPoint, [out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (BOOL)drawInRect:(NSRect)rect\r
+    */\r
+    HRESULT drawInRect([in] LPRECT rect, [out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (BOOL)hasAlpha\r
+    */\r
+    HRESULT hasAlpha([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (BOOL)isOpaque\r
+    */\r
+    HRESULT isOpaque([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (int)pixelsHigh\r
+    */\r
+    HRESULT pixelsHigh([out, retval] int* result);\r
+\r
+    /*\r
+        - (int)pixelsWide\r
+    */\r
+    HRESULT pixelsWide([out, retval] int* result);\r
+\r
+    /*\r
+        - (void)setAlpha:(BOOL)flag\r
+    */\r
+    HRESULT setAlpha([in] BOOL flag);\r
+\r
+    /*\r
+        - (void)setBitsPerSample:(int)anInt\r
+    */\r
+    HRESULT setBitsPerSample([in] int anInt);\r
+\r
+    /*\r
+        - (void)setColorSpaceName:(NSString *)string\r
+    */\r
+    HRESULT setColorSpaceName([in] BSTR str);\r
+\r
+    /*\r
+        - (void)setOpaque:(BOOL)flag\r
+    */\r
+    HRESULT setOpaque([in] BOOL flag);\r
+\r
+    /*\r
+        - (void)setPixelsHigh:(int)anInt\r
+    */\r
+    HRESULT setPixelsHigh([in] int anInt);\r
+\r
+    /*\r
+        - (void)setPixelsWide:(int)anInt\r
+    */\r
+    HRESULT setPixelsWide([in] int anInt);\r
+\r
+    /*\r
+        - (void)setSize:(NSSize)aSize\r
+    */\r
+    HRESULT setSize([in] LPSIZE aSize);\r
+\r
+    /*\r
+        - (NSSize)size\r
+    */\r
+    HRESULT size([out, retval] LPSIZE* result);\r
+}\r
diff --git a/WebKit/COM/Interfaces/IWebMutableURLRequest.idl b/WebKit/COM/Interfaces/IWebMutableURLRequest.idl
new file mode 100644 (file)
index 0000000..61fb7a4
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "IWebURLRequest.idl";\r
+\r
+interface IWebURLRequest;\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(C4042773-371F-427e-AFA9-9D4B358A0D93),\r
+    pointer_default(unique)\r
+]\r
+interface IWebMutableURLRequest : IWebURLRequest\r
+{\r
+    /*\r
+        - (void)addValue:(NSString *)value forHTTPHeaderField:(NSString *)field\r
+    */\r
+    HRESULT addValue([in] BSTR value, [in] BSTR field);\r
+\r
+    /*\r
+        - (void)setAllHTTPHeaderFields:(NSDictionary *)headerFields\r
+    */\r
+    HRESULT setAllHTTPHeaderFields([in] IPropertyBag* headerFields);\r
+\r
+    /*\r
+        - (void)setCachePolicy:(NSURLRequestCachePolicy)policy\r
+    */\r
+    HRESULT setCachePolicy([in] WebURLRequestCachePolicy policy);\r
+\r
+    /*\r
+        - (void)setHTTPBody:(NSData *)data\r
+    */\r
+    HRESULT setHTTPBody([in] IStream* data);\r
+\r
+    /*\r
+        - (void)setHTTPBodyStream:(NSInputStream *)inputStream\r
+    */\r
+    HRESULT setHTTPBodyStream([in] IStream* data);\r
+\r
+    /*\r
+        - (void)setHTTPMethod:(NSString *)method\r
+    */\r
+    HRESULT setHTTPMethod([in] BSTR method);\r
+\r
+    /*\r
+        - (void)setHTTPShouldHandleCookies:(BOOL)handleCookies\r
+    */\r
+    HRESULT setHTTPShouldHandleCookies([in] BOOL handleCookies);\r
+\r
+    /*\r
+        - (void)setMainDocumentURL:(NSURL *)theURL\r
+    */\r
+    HRESULT setMainDocumentURL([in] BSTR theURL);\r
+\r
+    /*\r
+        - (void)setTimeoutInterval:(NSTimeInterval)timeoutInterval\r
+    */\r
+    HRESULT setTimeoutInterval([in] UINT timeoutInterval);\r
+\r
+    /*\r
+        - (void)setURL:(NSURL *)theURL\r
+    */\r
+    HRESULT setURL([in] BSTR theURL);\r
+\r
+    /*\r
+        - (void)setValue:(NSString *)value forHTTPHeaderField:(NSString *)field\r
+    */\r
+    HRESULT setValue([in] BSTR value, [in] BSTR field);\r
+}\r
diff --git a/WebKit/COM/Interfaces/IWebNotification.idl b/WebKit/COM/Interfaces/IWebNotification.idl
new file mode 100644 (file)
index 0000000..10311ca
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(93598207-3E34-49ec-97EC-EFA9A1E16335),\r
+    pointer_default(unique)\r
+]\r
+interface IWebNotification : IUnknown\r
+{\r
+    /*\r
+        + (id)notificationWithName:(NSString *)aName object:(id)anObject\r
+        + (id)notificationWithName:(NSString *)aName object:(id)anObject userInfo:(NSDictionary *)userInfo\r
+    */\r
+    HRESULT notificationWithName([in] BSTR aName, [in] IUnknown* anObject, [in, optional] IPropertyBag* userInfo);\r
+\r
+    /*\r
+        - (NSString *)name\r
+    */\r
+    HRESULT name([out, retval] BSTR* result);\r
+\r
+    /*\r
+        - (id)object\r
+    */\r
+    HRESULT object_([out, retval] IUnknown* result);\r
+\r
+    /*\r
+        - (NSDictionary *)userInfo\r
+    */\r
+    HRESULT userInfo([out, retval] IPropertyBag* result);\r
+}\r
diff --git a/WebKit/COM/Interfaces/IWebPolicyDelegate.idl b/WebKit/COM/Interfaces/IWebPolicyDelegate.idl
new file mode 100644 (file)
index 0000000..39eb24e
--- /dev/null
@@ -0,0 +1,241 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+
+interface IWebError;
+interface IWebURLResponse;
+interface IWebURLRequest;
+interface IWebView;
+interface IWebFrame;
+interface IWebPolicyPrivate;
+\r
+/*!
+    @enum WebNavigationType
+    @abstract The type of action that triggered a possible navigation.
+    @constant WebNavigationTypeLinkClicked A link with an href was clicked.
+    @constant WebNavigationTypeFormSubmitted A form was submitted.
+    @constant WebNavigationTypeBackForward The user chose back or forward.
+    @constant WebNavigationTypeReload The User hit the reload button.
+    @constant WebNavigationTypeFormResubmitted A form was resubmitted (by virtue of doing back, forward or reload).
+    @constant WebNavigationTypeOther Navigation is taking place for some other reason.
+*/
+
+typedef enum WebNavigationType {
+    WebNavigationTypeLinkClicked,
+    WebNavigationTypeFormSubmitted,
+    WebNavigationTypeBackForward,
+    WebNavigationTypeReload,
+    WebNavigationTypeFormResubmitted,
+    WebNavigationTypeOther
+} WebNavigationType;
+
+/*
+extern NSString *WebActionNavigationTypeKey; // NSNumber (WebNavigationType)
+extern NSString *WebActionElementKey; // NSDictionary of element info
+extern NSString *WebActionButtonKey;  // NSEventType
+extern NSString *WebActionModifierFlagsKey; // NSNumber (unsigned)
+extern NSString *WebActionOriginalURLKey; // NSURL
+*/
+
+/*!
+    @protocol WebPolicyDecisionListener
+    @discussion This protocol is used to call back with the results of a
+    policy decision. This provides the ability to make these decisions
+    asyncrhonously, which means the decision can be made by prompting
+    with a sheet, for example.
+    @protocol WebPolicyDecisionListener <NSObject>
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(DFCDE523-FD96-4f95-958B-151540FE122A),\r
+    pointer_default(unique)\r
+]\r
+interface IWebPolicyDecisionListener : IUnknown\r
+{
+    /*!
+        @method use
+        @abstract Use the resource
+        @discussion If there remain more policy decisions to be made, then
+        the next policy delegate method gets to decide. This will be
+        either the next navigation policy delegate if there is a redirect,
+        or the content policy delegate. If there are no more policy
+        decisions to be made, the resource will be displayed inline if
+        possible. If there is no view available to display the resource
+        inline, then unableToImplementPolicyWithError:frame: will be
+        called with an appropriate error. 
+
+        <p>If a new window is going to be created for this navigation as a
+        result of frame targetting, then it will be created once you call
+        this method.
+        - (void)use;
+    */
+    HRESULT use();
+
+    /*!
+        @method download
+        @abstract Download the resource instead of displaying it.
+        @discussion This method is more than just a convenience because it
+        allows an in-progress navigation to be converted to a download
+        based on content type, without having to stop and restart the
+        load.
+        - (void)download;
+    */
+    HRESULT download();
+
+    /*!
+        @method ignore
+        @abstract Do nothing (but the client may choose to handle the request itself)
+        @discussion A policy of ignore prevents WebKit from doing anything
+        further with the load, however, the client is still free to handle
+        the request in some other way, such as opening a new window,
+        opening a new window behind the current one, opening the URL in an
+        external app, revealing the location in Finder if a file URL, etc.
+        - (void)ignore;
+    */
+    HRESULT ignore();
+}
+
+/*!
+    @category WebPolicyDelegate
+    @discussion While loading a URL, WebKit asks the WebPolicyDelegate for
+    policies that determine the action of what to do with the URL or the data that
+    the URL represents. Typically, the policy handler methods are called in this order:
+
+    decidePolicyForNewWindowAction:request:newFrameName:decisionListener: (at most once)<BR>
+    decidePolicyForNavigationAction:request:frame:decisionListener: (zero or more times)<BR>
+    decidePolicyForMIMEType:request:frame: (zero or more times)<BR>
+
+    New window policy is always checked. Navigation policy is checked
+    for the initial load and every redirect unless blocked by an
+    earlier policy. Content policy is checked once the content type is
+    known, unless an earlier policy prevented it.
+
+    In rare cases, content policy might be checked more than
+    once. This occurs when loading a "multipart/x-mixed-replace"
+    document, also known as "server push". In this case, multiple
+    documents come in one navigation, with each replacing the last. In
+    this case, conent policy will be checked for each one.
+    @interface NSObject (WebPolicyDelegate)
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(9B0BAE6C-A496-4000-9E22-2E89F0747401),\r
+    pointer_default(unique)\r
+]\r
+interface IWebPolicyDelegate : IUnknown\r
+{
+    /*!
+       @method webView:decidePolicyForNavigationAction:request:frame:decisionListener:
+       @abstract This method is called to decide what to do with a proposed navigation.
+       @param actionInformation Dictionary that describes the action that triggered this navigation.
+       @param request The request for the proposed navigation
+       @param frame The WebFrame in which the navigation is happening
+       @param listener The object to call when the decision is made
+       @discussion This method will be called before loading starts, and
+       on every redirect.
+        - (void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation
+                                                                   request:(NSURLRequest *)request
+                                                                     frame:(WebFrame *)frame
+                                                          decisionListener:(id<WebPolicyDecisionListener>)listener;
+    */
+    HRESULT decidePolicyForNavigationAction([in] IWebView* webView, [in] IPropertyBag* actionInformation, [in] IWebURLRequest* request, [in] IWebFrame* frame, [in] IWebPolicyDecisionListener* listener);
+
+    /*!
+        @method webView:decidePolicyForNewWindowAction:request:newFrameName:decisionListener:
+        @discussion This method is called to decide what to do with an targetted nagivation that would open a new window.
+        @param actionInformation Dictionary that describes the action that triggered this navigation.
+        @param request The request for the proposed navigation
+        @param frame The frame in which the navigation is taking place
+        @param listener The object to call when the decision is made
+        @discussion This method is provided so that modified clicks on a targetted link which
+        opens a new frame can prevent the new window from being opened if they decide to
+        do something else, like download or present the new frame in a specialized way. 
+
+        <p>If this method picks a policy of Use, the new window will be
+        opened, and decidePolicyForNavigationAction:request:frame:decisionListner:
+        will be called with a WebNavigationType of WebNavigationTypeOther
+        in its action. This is to avoid possible confusion about the modifiers.
+        - (void)webView:(WebView *)webView decidePolicyForNewWindowAction:(NSDictionary *)actionInformation
+                                                                  request:(NSURLRequest *)request
+                                                             newFrameName:(NSString *)frameName
+                                                         decisionListener:(id<WebPolicyDecisionListener>)listener;
+    */
+    HRESULT decidePolicyForNewWindowAction([in] IWebView* webView, [in] IPropertyBag* actionInformation, [in] IWebURLRequest* request, [in] BSTR frameName, [in] IWebPolicyDecisionListener* listener);
+
+    /*!
+        @method webView:decidePolicyForMIMEType:request:frame:
+        @discussion Returns the policy for content which has been partially loaded.
+        Sent after webView:didStartProvisionalLoadForFrame: is sent on the WebFrameLoadDelegate.
+        @param type MIME type for the resource.
+        @param request A NSURLRequest for the partially loaded content.
+        @param frame The frame which is loading the URL.
+        @param listener The object to call when the decision is made
+        - (void)webView:(WebView *)webView decidePolicyForMIMEType:(NSString *)type
+                                                           request:(NSURLRequest *)request
+                                                             frame:(WebFrame *)frame
+                                                  decisionListener:(id<IWebPolicyDecisionListener>)listener;
+    */
+    HRESULT decidePolicyForMIMEType([in] IWebView* webView, [in] BSTR type, [in] IWebURLRequest* request, [in] IWebFrame* frame, [in] IWebPolicyDecisionListener* listener);
+
+    /*!
+        @method webView:unableToImplementPolicy:error:forURL:inFrame:
+        @discussion Called when a WebPolicy could not be implemented. It is up to the client to display appropriate feedback.
+        @param policy The policy that could not be implemented.
+        @param error The error that caused the policy to not be implemented.
+        @param URL The URL of the resource for which a particular action was requested but failed.
+        @param frame The frame in which the policy could not be implemented.
+        - (void)webView:(WebView *)webView unableToImplementPolicyWithError:(NSError *)error frame:(WebFrame *)frame;
+    */
+    HRESULT unableToImplementPolicyWithError([in] IWebView* webView, [in] IWebError* error, [in] IWebFrame* frame);
+}
diff --git a/WebKit/COM/Interfaces/IWebPreferences.idl b/WebKit/COM/Interfaces/IWebPreferences.idl
new file mode 100644 (file)
index 0000000..e014ed9
--- /dev/null
@@ -0,0 +1,412 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+\r
+/*!
+    @class WebPreferences
+
+    @interface WebPreferences: NSObject <NSCoding>
+*/\r
+[\r
+    local,\r
+    object,\r
+    uuid(0930D594-A5A3-46e1-858E-AB17A13CD28E),\r
+    pointer_default(unique)\r
+]\r
+interface IWebPreferences : IUnknown\r
+{\r
+    /*!
+        @method standardPreferences
+        + (WebPreferences *)standardPreferences;
+    */
+    HRESULT standardPreferences([out, retval] IWebPreferences* standard);
+
+    /*!
+        @method initWithIdentifier:
+        @param anIdentifier A string used to identify the WebPreferences.
+        @discussion WebViews can share instances of WebPreferences by using an instance of WebPreferences with
+        the same identifier.  Typically, instance are not created directly.  Instead you set the preferences
+        identifier on a WebView.  The identifier is used as a prefix that is added to the user defaults keys
+        for the WebPreferences.
+        @result Returns a new instance of WebPreferences or a previously allocated instance with the same identifier.
+        - (id)initWithIdentifier:(NSString *)anIdentifier;
+    */
+    HRESULT initWithIdentifier([in] BSTR anIdentifier);
+
+    /*!
+        @method identifier
+        @result Returns the identifier for this WebPreferences.
+        - (NSString *)identifier;
+    */
+    HRESULT identifier([out, retval] BSTR* ident);
+
+    /*!
+        @method standardFontFamily
+        - (NSString *)standardFontFamily;
+    */
+    HRESULT standardFontFamily([out, retval] BSTR* family);
+
+    /*!
+        @method setStandardFontFamily:
+        @param family
+        - (void)setStandardFontFamily:(NSString *)family;
+    */
+    HRESULT setStandardFontFamily([in] BSTR family);
+
+    /*!
+        @method fixedFontFamily
+        - (NSString *)fixedFontFamily;
+    */
+    HRESULT fixedFontFamily([out, retval] BSTR* family);
+
+    /*!
+        @method setFixedFontFamily:
+        @param family
+        - (void)setFixedFontFamily:(NSString *)family;
+    */
+    HRESULT setFixedFontFamily([in] BSTR family);
+
+    /*!
+        @method serifFontFamily
+        - (NSString *)serifFontFamily;
+    */
+    HRESULT serifFontFamily([out, retval] BSTR* fontFamily);
+
+    /*!
+        @method setSerifFontFamily:
+        @param family
+        - (void)setSerifFontFamily:(NSString *)family;
+    */
+    HRESULT setSerifFontFamily([in] BSTR family);
+
+    /*!
+        @method sansSerifFontFamily
+        - (NSString *)sansSerifFontFamily;
+    */
+    HRESULT sansSerifFontFamily([out, retval] BSTR* family);
+
+    /*!
+        @method setSansSerifFontFamily:
+        @param family
+        - (void)setSansSerifFontFamily:(NSString *)family;
+    */
+    HRESULT setSansSerifFontFamily([in] BSTR family);
+
+    /*!
+        @method cursiveFontFamily
+        - (NSString *)cursiveFontFamily;
+    */
+    HRESULT cursiveFontFamily([out, retval] BSTR* family);
+
+    /*!
+        @method setCursiveFontFamily:
+        @param family
+        - (void)setCursiveFontFamily:(NSString *)family;
+    */
+    HRESULT setCursiveFontFamily([in] BSTR family);
+
+    /*!
+        @method fantasyFontFamily
+        - (NSString *)fantasyFontFamily;
+    */
+    HRESULT fantasyFontFamily([out, retval] BSTR* family);
+
+    /*!
+        @method setFantasyFontFamily:
+        @param family
+        - (void)setFantasyFontFamily:(NSString *)family;
+    */
+    HRESULT setFantasyFontFamily([in] BSTR family);
+
+    /*!
+        @method defaultFontSize
+        - (int)defaultFontSize;
+    */
+    HRESULT defaultFontSize([out, retval] int* fontSize);
+
+    /*!
+        @method setDefaultFontSize:
+        @param size
+        - (void)setDefaultFontSize:(int)size;
+    */
+    HRESULT setDefaultFontSize([in] int fontSize);
+
+    /*!
+        @method defaultFixedFontSize
+        - (int)defaultFixedFontSize;
+    */
+    HRESULT defaultFixedFontSize([out, retval] int* fontSize);
+
+    /*!
+        @method setDefaultFixedFontSize:
+        @param size
+        - (void)setDefaultFixedFontSize:(int)size;
+    */
+    HRESULT setDefaultFixedFontSize([in] int fontSize);
+
+    /*!
+        @method minimumFontSize
+        - (int)minimumFontSize;
+    */
+    HRESULT minimumFontSize([out, retval] int* fontSize);
+
+    /*!
+        @method setMinimumFontSize:
+        @param size
+        - (void)setMinimumFontSize:(int)size;
+    */
+    HRESULT setMinimumFontSize([in] int fontSize);
+
+    /*!
+        @method minimumLogicalFontSize
+        - (int)minimumLogicalFontSize;
+    */
+    HRESULT minimumLogicalFontSize([out, retval] int* fontSize);
+
+    /*!
+        @method setMinimumLogicalFontSize:
+        @param size
+        - (void)setMinimumLogicalFontSize:(int)size;
+    */
+    HRESULT setMinimumLogicalFontSize([in] int fontSize);
+
+    /*!
+        @method defaultTextEncodingName
+        - (NSString *)defaultTextEncodingName;
+    */
+    HRESULT defaultTextEncodingName([out, retval] BSTR* name);
+
+    /*!
+        @method setDefaultTextEncodingName:
+        @param encoding
+        - (void)setDefaultTextEncodingName:(NSString *)encoding;
+    */
+    HRESULT setDefaultTextEncodingName([in] BSTR name);
+
+    /*!
+        @method userStyleSheetEnabled
+        - (BOOL)userStyleSheetEnabled;
+    */
+    HRESULT userStyleSheetEnabled([out, retval] BOOL* enabled);
+
+    /*!
+        @method setUserStyleSheetEnabled:
+        @param flag
+        - (void)setUserStyleSheetEnabled:(BOOL)flag;
+    */
+    HRESULT setUserStyleSheetEnabled([in] BOOL enabled);
+
+    /*!
+        @method userStyleSheetLocation
+        @discussion The location of the user style sheet.
+        - (NSURL *)userStyleSheetLocation;
+    */
+    HRESULT userStyleSheetLocation([out, retval] BSTR* location);
+
+    /*!
+        @method setUserStyleSheetLocation:
+        @param URL The location of the user style sheet.
+        - (void)setUserStyleSheetLocation:(NSURL *)URL;
+    */
+    HRESULT setUserStyleSheetLocation([in] BSTR location);
+
+    /*!
+        @method isJavaEnabled
+        - (BOOL)isJavaEnabled;
+    */
+    HRESULT isJavaEnabled([out, retval] BOOL* enabled);
+
+    /*!
+        @method setJavaEnabled:
+        @param flag
+        - (void)setJavaEnabled:(BOOL)flag;
+    */
+    HRESULT setJavaEnabled([in] BOOL enabled);
+
+    /*!
+        @method isJavaScriptEnabled
+        - (BOOL)isJavaScriptEnabled;
+    */
+    HRESULT isJavaScriptEnabled([out, retval] BOOL* enabled);
+
+    /*!
+        @method setJavaScriptEnabled:
+        @param flag
+        - (void)setJavaScriptEnabled:(BOOL)flag;
+    */
+    HRESULT setJavaScriptEnabled([in] BOOL enabled);
+
+    /*!
+        @method JavaScriptCanOpenWindowsAutomatically
+        - (BOOL)javaScriptCanOpenWindowsAutomatically;
+    */
+    HRESULT javaScriptCanOpenWindowsAutomatically([out, retval] BOOL* enabled);
+
+    /*!
+        @method setJavaScriptCanOpenWindowsAutomatically:
+        @param flag
+        - (void)setJavaScriptCanOpenWindowsAutomatically:(BOOL)flag;
+    */
+    HRESULT setJavaScriptCanOpenWindowsAutomatically([in] BOOL enabled);
+
+    /*!
+        @method arePlugInsEnabled
+        - (BOOL)arePlugInsEnabled;
+    */
+    HRESULT arePlugInsEnabled([out, retval] BOOL* enabled);
+
+    /*!
+        @method setPlugInsEnabled:
+        @param flag
+        - (void)setPlugInsEnabled:(BOOL)flag;
+    */
+    HRESULT setPlugInsEnabled([in] BOOL enabled);
+
+    /*!
+        @method allowAnimatedImages
+        - (BOOL)allowsAnimatedImages;
+    */
+    HRESULT allowsAnimatedImages([out, retval] BOOL* enabled);
+
+    /*!
+        @method setAllowAnimatedImages:
+        @param flag
+        - (void)setAllowsAnimatedImages:(BOOL)flag;
+    */
+    HRESULT setAllowsAnimatedImages([in] BOOL enabled);
+
+    /*!
+        @method allowAnimatedImageLooping
+        - (BOOL)allowsAnimatedImageLooping;
+    */
+    HRESULT allowAnimatedImageLooping([out, retval] BOOL* enabled);
+
+    /*!
+        @method setAllowAnimatedImageLooping:
+        @param flag
+        - (void)setAllowsAnimatedImageLooping: (BOOL)flag;
+    */
+    HRESULT setAllowAnimatedImageLooping([in] BOOL enabled);
+
+    /*!
+        @method setWillLoadImagesAutomatically:
+        @param flag
+        - (void)setLoadsImagesAutomatically: (BOOL)flag;
+    */
+    HRESULT setLoadsImagesAutomatically([out, retval] BOOL* enabled);
+
+    /*!
+        @method willLoadImagesAutomatically
+        - (BOOL)loadsImagesAutomatically;
+    */
+    HRESULT loadsImagesAutomatically([in] BOOL enabled);
+
+    /*!
+        @method setAutosaves:
+        @param flag 
+        @discussion If autosave preferences is YES the settings represented by
+        WebPreferences will be stored in the user defaults database.
+        - (void)setAutosaves:(BOOL)flag;
+    */
+    HRESULT setAutosaves([out, retval] BOOL* enabled);
+
+    /*!
+        @method autosaves
+        @result The value of the autosave preferences flag.
+        - (BOOL)autosaves;
+    */
+    HRESULT autosaves([in] BOOL enabled);
+
+    /*!
+        @method setShouldPrintBackgrounds:
+        @param flag
+        - (void)setShouldPrintBackgrounds:(BOOL)flag;
+    */
+    HRESULT setShouldPrintBackgrounds([out, retval] BOOL* enabled);
+
+    /*!
+        @method shouldPrintBackgrounds
+        @result The value of the shouldPrintBackgrounds preferences flag
+        - (BOOL)shouldPrintBackgrounds;
+    */
+    HRESULT shouldPrintBackgrounds([in] BOOL enabled);
+
+    /*!
+        @method setPrivateBrowsingEnabled:
+        @param flag 
+        @abstract If private browsing is enabled, WebKit will not store information
+        about sites the user visits.
+        - (void)setPrivateBrowsingEnabled:(BOOL)flag;
+     */
+    HRESULT setPrivateBrowsingEnabled([out, retval] BOOL* enabled);
+
+    /*!
+        @method privateBrowsingEnabled
+        - (BOOL)privateBrowsingEnabled;
+     */
+    HRESULT privateBrowsingEnabled([in] BOOL enabled);
+
+    /*!
+        @method setTabsToLinks:
+        @param flag 
+        @abstract If tabsToLinks is YES, the tab key will focus links and form controls. 
+        The option key temporarily reverses this preference.
+        - (void)setTabsToLinks:(BOOL)flag;
+    */
+    HRESULT setTabsToLinks([out, retval] BOOL* enabled);
+
+    /*!
+        @method tabsToLinks
+        - (BOOL)tabsToLinks;
+    */
+    HRESULT tabsToLinks([in] BOOL enabled);
+}
diff --git a/WebKit/COM/Interfaces/IWebResource.idl b/WebKit/COM/Interfaces/IWebResource.idl
new file mode 100644 (file)
index 0000000..c0ebeaf
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+
+/*!
+    @class WebResource
+    @discussion A WebResource represents a fully downloaded URL. 
+    It includes the data of the resource as well as the metadata associated with the resource.
+    
+    @interface WebResource : NSObject <NSCoding, NSCopying>
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(09567E0E-7859-494a-B0E4-92C13CFE5574),\r
+    pointer_default(unique)\r
+]\r
+interface IWebResource : IUnknown\r
+{\r
+    /*!
+        @method initWithData:URL:MIMEType:textEncodingName:frameName
+        @abstract The initializer for WebResource.
+        @param data The data of the resource.
+        @param URL The URL of the resource.
+        @param MIMEType The MIME type of the resource.
+        @param textEncodingName The text encoding name of the resource (can be nil).
+        @param frameName The frame name of the resource if the resource represents the contents of an entire HTML frame (can be nil).
+        @result An initialized WebResource.
+        - (id)initWithData:(NSData *)data URL:(NSURL *)URL MIMEType:(NSString *)MIMEType textEncodingName:(NSString *)textEncodingName frameName:(NSString *)frameName;
+    */
+    HRESULT initWithData([in] IStream* data, [in] BSTR url, [in] BSTR mimeType, [in] BSTR textEncodingName, [in] BSTR frameName);
+
+    /*!
+        @method data
+        @result The data of the resource.
+        - (NSData *)data;
+    */
+    HRESULT data([out, retval] IStream** data);
+
+    /*!
+        @method URL
+        @result The URL of the resource.
+        - (NSURL *)URL;
+    */
+    HRESULT URL([out, retval] BSTR* url);
+
+    /*!
+        @method MIMEType
+        @result The MIME type of the resource.
+        - (NSString *)MIMEType;
+    */
+    HRESULT MIMEType([out, retval] BSTR* mime);
+
+    /*!
+        @method textEncodingName
+        @result The text encoding name of the resource (can be nil).
+        - (NSString *)textEncodingName;
+    */
+    HRESULT textEncodingName([out, retval] BSTR* encodingName);
+
+    /*!
+        @method frameName
+        @result The frame name of the resource if the resource represents the contents of an entire HTML frame (can be nil).
+        - (NSString *)frameName;
+    */\r
+    HRESULT frameName([out, retval] BSTR* name);\r
+}\r
diff --git a/WebKit/COM/Interfaces/IWebResourceLoadDelegate.idl b/WebKit/COM/Interfaces/IWebResourceLoadDelegate.idl
new file mode 100644 (file)
index 0000000..1fdb7c7
--- /dev/null
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "IWebDataSource.idl";\r
+import "IWebURLResponse.idl";\r
+import "IWebURLAuthenticationChallenge.idl";\r
+import "IWebError.idl";\r
+\r
+interface IWebView;\r
+interface IWebDataSource;\r
+interface IWebURLAuthenticationChallenge;
+interface IWebURLResponse;
+interface IWebURLRequest;
+
+interface IWebError;
+\r
+/*!
+    @category  WebResourceLoadDelegate
+    @discussion Implementors of this protocol will receive messages indicating
+    that a resource is about to be loaded, data has been received for a resource,
+    an error has been received for a resource, and completion of a resource load.
+    Implementors are also given the opportunity to mutate requests before they are sent.
+    The various progress methods of this protocol all receive an identifier as the
+    parameter.  This identifier can be used to track messages associated with a single
+    resource.  For example, a single resource may generate multiple 
+    resource:willSendRequest:redirectResponse:fromDataSource: messages as it's URL is redirected.
+    @interface NSObject (WebResourceLoadDelegate)
+*/
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(AF3289AA-90DB-4ca4-A112-A1E5F0517953),\r
+    pointer_default(unique)\r
+]\r
+interface IWebResourceLoadDelegate : IUnknown\r
+{
+    /*!
+        @method webView:identifierForInitialRequest:fromDataSource:
+        @param webView The WebView sending the message.
+        @param request The request about to be sent.
+        @param dataSource The datasource that initiated the load.
+        @discussion An implementor of WebResourceLoadDelegate should provide an identifier
+        that can be used to track the load of a single resource.  This identifier will be
+        passed as the first argument for all of the other WebResourceLoadDelegate methods.  The
+        identifier is useful to track changes to a resources request, which will be
+        provided by one or more calls to resource:willSendRequest:redirectResponse:fromDataSource:.
+        @result An identifier that will be passed back to the implementor for each callback.
+        The identifier will be retained.
+        - (id)webView:(WebView *)sender identifierForInitialRequest:(NSURLRequest *)request fromDataSource:(WebDataSource *)dataSource;
+    */
+    HRESULT identifierForInitialRequest([in] IWebView* webView, [in] IWebURLRequest* request, [in] IWebDataSource* dataSource, [out, retval] UINT* id);
+
+    /*!
+        @method resource:willSendRequest:redirectResponse:fromDataSource:
+        @discussion This message is sent before a load is initiated.  The request may be modified
+        as necessary by the receiver.
+        @param webView The WebView sending the message.
+        @param identifier An identifier that can be used to track the progress of a resource load across
+        multiple call backs.
+        @param request The request about to be sent.
+        @param redirectResponse If the request is being made in response to a redirect we received,
+        the response that conveyed that redirect.
+        @param dataSource The dataSource that initiated the load.
+        @result Returns the request, which may be mutated by the implementor, although typically
+        will be request.
+        - (NSURLRequest *)webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource;
+    */
+    HRESULT willSendRequest([in] IWebView* webView, [in] UINT identifier, [in] IWebURLRequest* request, [in] IWebURLResponse* redirectResponse, [in] IWebDataSource* dataSource, [out, retval] IWebURLRequest** newRequest);
+
+    /*!
+        @method webView:resource:didReceiveAuthenticationChallenge:fromDataSource:
+        @abstract Start authentication for the resource, providing a challenge
+        @discussion Call useCredential::, continueWithoutCredential or
+        cancel on the challenge when done.
+        @param challenge The NSURLAuthenticationChallenge to start authentication for
+        @discussion If you do not implement this delegate method, WebKit will handle authentication
+        automatically by prompting with a sheet on the window that the WebView is associated with.
+        - (void)webView:(WebView *)sender resource:(id)identifier didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge fromDataSource:(WebDataSource *)dataSource;
+    */
+    HRESULT didReceiveAuthenticationChallenge([in] IWebView* webView,  [in] UINT identifer,[in] IWebURLAuthenticationChallenge* challenge, [in] IWebDataSource* dataSource);
+
+    /*!
+        @method webView:resource:didCancelAuthenticationChallenge:fromDataSource:
+        @abstract Cancel authentication for a given request
+        @param challenge The NSURLAuthenticationChallenge for which to cancel authentication
+        - (void)webView:(WebView *)sender resource:(id)identifier didCancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge fromDataSource:(WebDataSource *)dataSource;
+    */
+    HRESULT didCancelAuthenticationChallenge([in] IWebView* webView, [in] UINT identifer, [in] IWebURLAuthenticationChallenge* challenge, [in] IWebDataSource* dataSource);
+
+    /*!
+        @method webView:resource:didReceiveResponse:fromDataSource:
+        @abstract This message is sent after a response has been received for this load.
+        @param webView The WebView sending the message.
+        @param identifier An identifier that can be used to track the progress of a resource load across
+        multiple call backs.
+        @param response The response for the request.
+        @param dataSource The dataSource that initiated the load.
+        @discussion In some rare cases, multiple responses may be received for a single load.
+        This occurs with multipart/x-mixed-replace, or "server push". In this case, the client
+        should assume that each new response resets progress so far for the resource back to 0,
+        and should check the new response for the expected content length.
+        - (void)webView:(WebView *)sender resource:(id)identifier didReceiveResponse:(NSURLResponse *)response fromDataSource:(WebDataSource *)dataSource;
+    */
+    HRESULT didReceiveResponse([in] IWebView* webView, [in] UINT identifer, [in] IWebURLResponse* response, [in] IWebDataSource* dataSource);
+
+    /*!
+        @method webView:resource:didReceiveContentLength:fromDataSource:
+        @discussion Multiple of these messages may be sent as data arrives.
+        @param webView The WebView sending the message.
+        @param identifier An identifier that can be used to track the progress of a resource load across
+        multiple call backs.
+        @param length The amount of new data received.  This is not the total amount, just the new amount received.
+        @param dataSource The dataSource that initiated the load.
+        - (void)webView:(WebView *)sender resource:(id)identifier didReceiveContentLength:(WebNSInt)length fromDataSource:(WebDataSource *)dataSource;
+    */
+    HRESULT didReceiveContentLength([in] IWebView* webView, [in] UINT identifer, [in] UINT length, [in] IWebDataSource* dataSource);
+
+    /*!
+        @method webView:resource:didFinishLoadingFromDataSource:
+        @discussion This message is sent after a load has successfully completed.
+        @param webView The WebView sending the message.
+        @param identifier An identifier that can be used to track the progress of a resource load across
+        multiple call backs.
+        @param dataSource The dataSource that initiated the load.
+        - (void)webView:(WebView *)sender resource:(id)identifier didFinishLoadingFromDataSource:(WebDataSource *)dataSource;
+    */
+    HRESULT didFinishLoadingFromDataSource([in] IWebView* webView, [in] UINT identifer, [in] IWebDataSource* dataSource);
+
+    /*!
+        @method webView:resource:didFailLoadingWithError:fromDataSource:
+        @discussion This message is sent after a load has failed to load due to an error.
+        @param webView The WebView sending the message.
+        @param identifier An identifier that can be used to track the progress of a resource load across
+        multiple call backs.
+        @param error The error associated with this load.
+        @param dataSource The dataSource that initiated the load.
+        - (void)webView:(WebView *)sender resource:(id)identifier didFailLoadingWithError:(NSError *)error fromDataSource:(WebDataSource *)dataSource;
+    */
+    HRESULT didFailLoadingWithError([in] IWebView* webView, [in] UINT identifer, [in] IWebError* error, [in] IWebDataSource* dataSource);
+
+    /*!
+        @method webView:plugInFailedWithError:dataSource:
+        @discussion Called when a plug-in is not found, fails to load or is not available for some reason.
+        @param webView The WebView sending the message.
+        @param error The plug-in error. In the userInfo dictionary of the error, the object for the
+        NSErrorFailingURLKey key is a URL string of the SRC attribute, the object for the WebKitErrorPlugInNameKey
+        key is a string of the plug-in's name, the object for the WebKitErrorPlugInPageURLStringKey key is a URL string
+        of the PLUGINSPAGE attribute and the object for the WebKitErrorMIMETypeKey key is a string of the TYPE attribute.
+        Some, none or all of the mentioned attributes can be present in the userInfo. The error returns nil for userInfo
+        when none are present.
+        @param dataSource The dataSource that contains the plug-in.
+        - (void)webView:(WebView *)sender plugInFailedWithError:(NSError *)error dataSource:(WebDataSource *)dataSource;
+    */
+    HRESULT plugInFailedWithError([in] IWebView* webView, [in] IWebError* error, [in] IWebDataSource* dataSource);
+}
diff --git a/WebKit/COM/Interfaces/IWebScriptObject.idl b/WebKit/COM/Interfaces/IWebScriptObject.idl
new file mode 100644 (file)
index 0000000..ae0c213
--- /dev/null
@@ -0,0 +1,160 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+\r
+/*!
+    @class WebScriptObject
+    @discussion WebScriptObjects are used to wrap script objects passed from
+    script environments to Objective-C.  WebScriptObjects cannot be created
+    directly.  In normal uses of WebKit, you gain access to the script
+    environment using the "windowScriptObject" method on WebView.
+    
+    The following KVC methods are commonly used to access properties of the
+    WebScriptObject:
+    
+       - (void)setValue:(id)value forKey:(NSString *)key
+       - (id)valueForKey:(NSString *)key
+       
+       As it possible to remove attributes from web script objects the following
+       additional method augments the basic KVC methods:
+       
+       - (void)removeWebScriptKey:(NSString *)name;
+       
+       Also the sparse array access allowed in web script objects doesn't map well to NSArray, so
+       the following methods can be used to access index based properties:
+       
+       - (id)webScriptValueAtIndex:(unsigned int)index;
+       - (void)setWebScriptValueAtIndex:(unsigned int)index value:(id)value;
+
+    @interface WebScriptObject : NSObject
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(7022340A-649C-43fc-9214-85CA7D3BE3C7),\r
+    pointer_default(unique)\r
+]\r
+interface IWebScriptObject : IUnknown\r
+{\r
+    /*!
+        @method throwException:
+        @discussion Throws an exception in the current script execution context.
+        @result Either NO if an exception could not be raised, YES otherwise.
+        + (BOOL)throwException:(NSString *)exceptionMessage;
+    */
+    HRESULT throwException([in] BSTR exceptionMessage, [out, retval] BOOL* result);
+
+    /*!
+        @method callWebScriptMethod:withArguments:
+        @param name The name of the method to call in the script environment.
+        @param args The arguments to pass to the script environment.
+        @discussion Calls the specified method in the script environment using the
+        specified arguments.
+        @result Returns the result of calling the script method.
+        - (id)callWebScriptMethod:(NSString *)name withArguments:(NSArray *)args;
+    */
+    HRESULT callWebScriptMethod([in] BSTR name, [in, size_is(cArgs)] const VARIANT args[], [in] int cArgs, [out, retval] VARIANT* result);
+
+    /*!
+        @method evaluateWebScript:
+        @param script The script to execute in the target script environment.
+        @discussion The script will be executed in the target script environment.  The format
+        of the script is dependent of the target script environment.
+        @result Returns the result of evaluating the script in the script environment.
+        - (id)evaluateWebScript:(NSString *)script;
+    */
+    HRESULT evaluateWebScript([in] BSTR script, [out, retval] VARIANT* result);
+
+    /*!
+        @method removeWebScriptKey:
+        @param name The name of the property to remove.
+        @discussion Removes the property from the object in the script environment.
+        - (void)removeWebScriptKey:(NSString *)name;
+    */
+    HRESULT removeWebScriptKey([in] BSTR name);
+
+    /*!
+        @method toString
+        @discussion Converts the target object to a string representation.  The coercion
+        of non string objects type is dependent on the script environment.
+        @result Returns the string representation of the object.
+        - (NSString *)stringRepresentation;
+    */
+    HRESULT stringRepresentation([out, retval] BSTR stringRepresentation);
+
+    /*!
+        @method propertyAtIndex:
+        @param index The index of the property to return.  Index based access is dependent 
+        @discussion Gets the value of the property at the specified index.
+        @result The value of the property.
+        - (id)webScriptValueAtIndex:(unsigned int)index;
+    */
+    HRESULT webScriptValueAtIndex([in] unsigned int index, [out, retval] VARIANT* result);
+
+    /*!
+        @method setPropertyAtIndex:value:
+        @param index The index of the property to set.
+        @param value The value of the property to set.
+        @discussion Sets the property value at the specified index.
+        - (void)setWebScriptValueAtIndex:(unsigned int)index value:(id)value;
+    */
+    HRESULT setWebScriptValueAtIndex([in] unsigned int index, [in] VARIANT val);
+
+    /*!
+        @method setException:
+        @param description The description of the exception.
+        @discussion Raises an exception in the script environment in the context of the
+        current object.
+        - (void)setException: (NSString *)description;\r
+    */
+    HRESULT setException([in] BSTR description);
+}\r
diff --git a/WebKit/COM/Interfaces/IWebUIDelegate.idl b/WebKit/COM/Interfaces/IWebUIDelegate.idl
new file mode 100644 (file)
index 0000000..cf4ff86
--- /dev/null
@@ -0,0 +1,539 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "IWebURLRequest.idl";\r
+\r
+interface IWebView;\r
+interface IWebURLRequest;\r
+\r
+/*!
+    @enum WebMenuItemTag
+    @discussion Each menu item in the default menu items array passed in
+    contextMenuItemsForElement:defaultMenuItems: has its tag set to one of the WebMenuItemTags.
+    When iterating through the default menu items array, use the tag to differentiate between them.
+*/
+typedef enum WebMenuItemTag {
+    WebMenuItemTagOpenLinkInNewWindow=1,
+    WebMenuItemTagDownloadLinkToDisk,
+    WebMenuItemTagCopyLinkToClipboard,
+    WebMenuItemTagOpenImageInNewWindow,
+    WebMenuItemTagDownloadImageToDisk,
+    WebMenuItemTagCopyImageToClipboard,
+    WebMenuItemTagOpenFrameInNewWindow,
+    WebMenuItemTagCopy,
+    WebMenuItemTagGoBack,
+    WebMenuItemTagGoForward,
+    WebMenuItemTagStop,
+    WebMenuItemTagReload,
+    WebMenuItemTagCut,
+    WebMenuItemTagPaste,
+    WebMenuItemTagSpellingGuess,
+    WebMenuItemTagNoGuessesFound,
+    WebMenuItemTagIgnoreSpelling,
+    WebMenuItemTagLearnSpelling,
+    WebMenuItemTagOther,
+    WebMenuItemTagSearchInSpotlight,
+    WebMenuItemTagSearchWeb,
+    WebMenuItemTagLookUpInDictionary,
+    WebMenuItemTagOpenWithDefaultApplication,
+    WebMenuItemPDFActualSize,
+    WebMenuItemPDFZoomIn,
+    WebMenuItemPDFZoomOut,
+    WebMenuItemPDFAutoSize,
+    WebMenuItemPDFSinglePage,
+    WebMenuItemPDFFacingPages,
+    WebMenuItemPDFContinuous,
+    WebMenuItemPDFNextPage,
+    WebMenuItemPDFPreviousPage
+} WebMenuItemTag;
+\r
+/*!
+    @enum WebDragDestinationAction
+    @abstract Actions that the destination of a drag can perform.
+    @constant WebDragDestinationActionNone No action
+    @constant WebDragDestinationActionDHTML Allows DHTML (such as JavaScript) to handle the drag
+    @constant WebDragDestinationActionEdit Allows editable documents to be edited from the drag
+    @constant WebDragDestinationActionLoad Allows a location change from the drag
+    @constant WebDragDestinationActionAny Allows any of the above to occur
+*/
+typedef enum WebDragDestinationAction {
+    WebDragDestinationActionNone    = 0,
+    WebDragDestinationActionDHTML   = 1,
+    WebDragDestinationActionEdit    = 2,
+    WebDragDestinationActionLoad    = 4,
+    WebDragDestinationActionAny     = (unsigned long)-1
+} WebDragDestinationAction;
+\r
+/*!
+    @enum WebDragSourceAction
+    @abstract Actions that the source of a drag can perform.
+    @constant WebDragSourceActionNone No action
+    @constant WebDragSourceActionDHTML Allows DHTML (such as JavaScript) to start a drag
+    @constant WebDragSourceActionImage Allows an image drag to occur
+    @constant WebDragSourceActionLink Allows a link drag to occur
+    @constant WebDragSourceActionSelection Allows a selection drag to occur
+    @constant WebDragSourceActionAny Allows any of the above to occur
+*/
+typedef enum WebDragSourceAction {
+    WebDragSourceActionNone         = 0,
+    WebDragSourceActionDHTML        = 1,
+    WebDragSourceActionImage        = 2,
+    WebDragSourceActionLink         = 4,
+    WebDragSourceActionSelection    = 8,
+    WebDragSourceActionAny          = (unsigned long)-1
+} WebDragSourceAction;
+\r
+\r
+/*!
+    @protocol WebOpenPanelResultListener
+    @discussion This protocol is used to call back with the results of
+    the file open panel requested by runOpenPanelForFileButtonWithResultListener:
+    @protocol WebOpenPanelResultListener <NSObject>
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(634198C7-9DFC-4aba-9E8C-90AEEA7A4144),\r
+    pointer_default(unique)\r
+]\r
+interface IWebOpenPanelResultListener : IUnknown\r
+{
+    /*!
+        @method chooseFilename:
+        @abstract Call this method to return a filename from the file open panel.
+        @param fileName
+        - (void)chooseFilename:(NSString *)fileName;
+    */
+    HRESULT chooseFilename([out, retval] BSTR* fileName);
+
+    /*!
+        @method cancel
+        @abstract Call this method to indicate that the file open panel was cancelled.
+        - (void)cancel;
+    */
+    HRESULT cancel();
+}\r
+\r
+/*!
+    @category WebUIDelegate
+    @discussion A class that implements WebUIDelegate provides
+    window-related methods that may be used by Javascript, plugins and
+    other aspects of web pages. These methods are used to open new
+    windows and control aspects of existing windows.
+    @interface NSObject (WebUIDelegate)
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(2452A889-A74A-4fbc-9617-326A0A953630),\r
+    pointer_default(unique)\r
+]\r
+interface IWebUIDelegate : IUnknown\r
+{
+    /*!
+        @method webView:createWebViewWithRequest:
+        @abstract Create a new window and begin to load the specified request.
+        @discussion The newly created window is hidden, and the window operations delegate on the
+        new WebViews will get a webViewShow: call.
+        @param sender The WebView sending the delegate method.
+        @param request The request to load.
+        @result The WebView for the new window.
+        - (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request;
+    */
+    HRESULT createWebViewWithRequest([in] IWebView* sender, [in] IWebURLRequest* request, [out, retval] IWebView* newWebView);
+
+    /*!
+        @method webViewShow:
+        @param sender The WebView sending the delegate method.
+        @abstract Show the window that contains the top level view of the WebView,
+        ordering it frontmost.
+        @discussion This will only be called just after createWindowWithRequest:
+        is used to create a new window.
+        - (void)webViewShow:(WebView *)sender;
+    */
+    HRESULT webViewShow([in] IWebView* sender);
+
+    /*!
+        @method webViewClose:
+        @abstract Close the current window. 
+        @param sender The WebView sending the delegate method.
+        @discussion Clients showing multiple views in one window may
+        choose to close only the one corresponding to this
+        WebView. Other clients may choose to ignore this method
+        entirely.
+        - (void)webViewClose:(WebView *)sender;
+    */
+    HRESULT webViewClose([in] IWebView* sender);
+
+    /*!
+        @method webViewFocus:
+        @abstract Focus the current window (i.e. makeKeyAndOrderFront:).
+        @param The WebView sending the delegate method.
+        @discussion Clients showing multiple views in one window may want to
+        also do something to focus the one corresponding to this WebView.
+        - (void)webViewFocus:(WebView *)sender;
+    */
+    HRESULT webViewFocus([in] IWebView* sender);
+
+    /*!
+        @method webViewUnfocus:
+        @abstract Unfocus the current window.
+        @param sender The WebView sending the delegate method.
+        @discussion Clients showing multiple views in one window may want to
+        also do something to unfocus the one corresponding to this WebView.
+        - (void)webViewUnfocus:(WebView *)sender;
+    */
+    HRESULT webViewUnfocus([in] IWebView* sender);
+
+    /*!
+        @method webViewFirstResponder:
+        @abstract Get the first responder for this window.
+        @param sender The WebView sending the delegate method.
+        @discussion This method should return the focused control in the
+        WebView's view, if any. If the view is out of the window
+        hierarchy, this might return something than calling firstResponder
+        on the real NSWindow would. It's OK to return either nil or the
+        real first responder if some control not in the window has focus.
+        - (NSResponder *)webViewFirstResponder:(WebView *)sender;
+    */
+    HRESULT webViewFirstResponder([in] IWebView* sender, [out, retval] HWND* responder);
+
+    /*!
+        @method webView:makeFirstResponder:
+        @abstract Set the first responder for this window.
+        @param sender The WebView sending the delegate method.
+        @param responder The responder to make first (will always be a view)
+        @discussion responder will always be a view that is in the view
+        subhierarchy of the top-level web view for this WebView. If the
+        WebView's top level view is currently out of the view
+        hierarchy, it may be desirable to save the first responder
+        elsewhere, or possibly ignore this call.
+        - (void)webView:(WebView *)sender makeFirstResponder:(NSResponder *)responder;
+    */
+    HRESULT makeFirstResponder([in] IWebView* sender, [in] HWND responder);
+
+    /*!
+        @method webView:setStatusText:
+        @abstract Set the window's status display, if any, to the specified string.
+        @param sender The WebView sending the delegate method.
+        @param text The status text to set
+        - (void)webView:(WebView *)sender setStatusText:(NSString *)text;
+    */
+    HRESULT setStatusText([in] IWebView* sender, [in] BSTR text);
+
+    /*!
+        @method webViewStatusText:
+        @abstract Get the currently displayed status text.
+        @param sender The WebView sending the delegate method.
+        @result The status text
+        - (NSString *)webViewStatusText:(WebView *)sender;
+    */
+    HRESULT webViewStatusText([in] IWebView* sender, [out, retval] BSTR* text);
+
+    /*!
+        @method webViewAreToolbarsVisible:
+        @abstract Determine whether the window's toolbars are currently visible
+        @param sender The WebView sending the delegate method.
+        @discussion This method should return YES if the window has any
+        toolbars that are currently on, besides the status bar. If the app
+        has more than one toolbar per window, for example a regular
+        command toolbar and a favorites bar, it should return YES from
+        this method if at least one is on.
+        @result YES if at least one toolbar is visible, otherwise NO.
+        - (BOOL)webViewAreToolbarsVisible:(WebView *)sender;
+    */
+    HRESULT webViewAreToolbarsVisible([in] IWebView* sender, [out, retval] BOOL* visible);
+
+    /*!
+        @method webView:setToolbarsVisible:
+        @param sender The WebView sending the delegate method.
+        @abstract Set whether the window's toolbars are currently visible.
+        @param visible New value for toolbar visibility
+        @discussion Setting this to YES should turn on all toolbars
+        (except for a possible status bar). Setting it to NO should turn
+        off all toolbars (with the same exception).
+        - (void)webView:(WebView *)sender setToolbarsVisible:(BOOL)visible;
+    */
+    HRESULT setToolbarsVisible([in] IWebView* sender, [in] BOOL visible);
+
+    /*!
+        @method webViewIsStatusBarVisible:
+        @abstract Determine whether the status bar is visible.
+        @param sender The WebView sending the delegate method.
+        @result YES if the status bar is visible, otherwise NO.
+        - (BOOL)webViewIsStatusBarVisible:(WebView *)sender;
+    */
+    HRESULT webViewIsStatusBarVisible([in] IWebView* sender, [out, retval] BOOL* visible);
+
+    /*!
+        @method webView:setStatusBarVisible:
+        @abstract Set whether the status bar is currently visible.
+        @param visible The new visibility value
+        @discussion Setting this to YES should show the status bar,
+        setting it to NO should hide it.
+        - (void)webView:(WebView *)sender setStatusBarVisible:(BOOL)visible;
+    */
+    HRESULT setStatusBarVisible([in] IWebView* sender, [in] BOOL visible);
+
+    /*!
+        @method webViewIsResizable:
+        @abstract Determine whether the window is resizable or not.
+        @param sender The WebView sending the delegate method.
+        @result YES if resizable, NO if not.
+        @discussion If there are multiple views in the same window, they
+        have have their own separate resize controls and this may need to
+        be handled specially.
+        - (BOOL)webViewIsResizable:(WebView *)sender;
+    */
+    HRESULT webViewIsResizable([in] IWebView* sender, [out, retval] BOOL* resizable);
+
+    /*!
+        @method webView:setResizable:
+        @abstract Set the window to resizable or not
+        @param sender The WebView sending the delegate method.
+        @param resizable YES if the window should be made resizable, NO if not.
+        @discussion If there are multiple views in the same window, they
+        have have their own separate resize controls and this may need to
+        be handled specially.
+        - (void)webView:(WebView *)sender setResizable:(BOOL)resizable;
+    */
+    HRESULT setResizable([in] IWebView* sender, [in] BOOL resizable);
+
+    /*!
+        @method webView:setFrame:
+        @abstract Set the window's frame rect
+        @param sender The WebView sending the delegate method.
+        @param frame The new window frame size
+        @discussion Even though a caller could set the frame directly using the NSWindow,
+        this method is provided so implementors of this protocol can do special
+        things on programmatic move/resize, like avoiding autosaving of the size.
+        - (void)webView:(WebView *)sender setFrame:(NSRect)frame;
+    */
+    HRESULT setFrame([in] IWebView* sender, [in] RECT* frame);
+
+    /*!
+        @method webViewFrame:
+        @param sender The WebView sending the delegate method.
+        @abstract REturn the window's frame rect
+        @discussion 
+        - (NSRect)webViewFrame:(WebView *)sender;
+    */
+    HRESULT webViewFrame([in] IWebView* sender, [out, retval] RECT** frame);
+
+    /*!
+        @method webView:setContentRect:
+        @abstract Set the window's content rect
+        @param sender The WebView sending the delegate method.
+        @param frame The new window content rect
+        @discussion Even though a caller could set the content rect
+        directly using the NSWindow, this method is provided so
+        implementors of this protocol can do special things on
+        programmatic move/resize, like avoiding autosaving of the size.
+        - (void)webView:(WebView *)sender setContentRect:(NSRect)contentRect;
+    */
+    HRESULT setContentRect([in] IWebView* sender, [in] RECT* contentRect);
+
+    /*!
+        @method webViewContentRect:
+        @abstract Return the window's content rect
+        @discussion 
+        - (NSRect)webViewContentRect:(WebView *)sender;
+    */
+    HRESULT webViewContentRect([in] IWebView* sender, [out, retval] RECT** contentRect);
+
+    /*!
+        @method webView:runJavaScriptAlertPanelWithMessage:
+        @abstract Display a JavaScript alert panel
+        @param sender The WebView sending the delegate method.
+        @param message The message to display
+        @discussion Clients should visually indicate that this panel comes
+        from JavaScript. The panel should have a single OK button.
+        - (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message;
+    */
+    HRESULT runJavaScriptAlertPanelWithMessage([in] IWebView* sender, [in] BSTR message);
+
+    /*!
+        @method webView:runJavaScriptConfirmPanelWithMessage:
+        @abstract Display a JavaScript confirm panel
+        @param sender The WebView sending the delegate method.
+        @param message The message to display
+        @result YES if the user hit OK, no if the user chose Cancel.
+        @discussion Clients should visually indicate that this panel comes
+        from JavaScript. The panel should have two buttons, e.g. "OK" and
+        "Cancel".
+        - (BOOL)webView:(WebView *)sender runJavaScriptConfirmPanelWithMessage:(NSString *)message;
+    */
+    HRESULT runJavaScriptConfirmPanelWithMessage([in] IWebView* sender, [in] BSTR message, [out, retval] BOOL* result);
+
+    /*!
+        @method webView:runJavaScriptTextInputPanelWithPrompt:defaultText:
+        @abstract Display a JavaScript text input panel
+        @param sender The WebView sending the delegate method.
+        @param message The message to display
+        @param defaultText The initial text for the text entry area.
+        @result The typed text if the user hit OK, otherwise nil.
+        @discussion Clients should visually indicate that this panel comes
+        from JavaScript. The panel should have two buttons, e.g. "OK" and
+        "Cancel", and an area to type text.
+        - (NSString *)webView:(WebView *)sender runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(NSString *)defaultText;
+    */
+    HRESULT runJavaScriptTextInputPanelWithPrompt([in] IWebView* sender, [in] BSTR message, [in] BSTR defaultText, [out, retval] BSTR* result);
+
+    /*!
+        @method webView:runOpenPanelForFileButtonWithResultListener:
+        @abstract Display a file open panel for a file input control.
+        @param sender The WebView sending the delegate method.
+        @param resultListener The object to call back with the results.
+        @discussion This method is passed a callback object instead of giving a return
+        value so that it can be handled with a sheet.
+        - (void)webView:(WebView *)sender runOpenPanelForFileButtonWithResultListener:(id<WebOpenPanelResultListener>)resultListener;
+    */
+    HRESULT runOpenPanelForFileButtonWithResultListener([in] IWebView* sender, [in] IWebOpenPanelResultListener* resultListener);
+
+    /*!
+        @method webView:mouseDidMoveOverElement:modifierFlags:
+        @abstract Update the window's feedback for mousing over links to reflect a new item the mouse is over
+        or new modifier flags.
+        @param sender The WebView sending the delegate method.
+        @param elementInformation Dictionary that describes the element that the mouse is over, or nil.
+        @param modifierFlags The modifier flags as in NSEvent.
+        - (void)webView:(WebView *)sender mouseDidMoveOverElement:(NSDictionary *)elementInformation modifierFlags:(WebNSUInt)modifierFlags;
+    */
+    HRESULT mouseDidMoveOverElement([in] IWebView* sender, [in] IPropertyBag* elementInformation, [in] UINT modifierFlags);
+
+    /*!
+        @method webView:contextMenuItemsForElement:defaultMenuItems:
+        @abstract Returns the menu items to display in an element's contextual menu.
+        @param sender The WebView sending the delegate method.
+        @param element A dictionary representation of the clicked element.
+        @param defaultMenuItems An array of default NSMenuItems to include in all contextual menus.
+        @result An array of NSMenuItems to include in the contextual menu.
+        - (NSArray *)webView:(WebView *)sender contextMenuItemsForElement:(NSDictionary *)element defaultMenuItems:(NSArray *)defaultMenuItems;
+    */
+    HRESULT contextMenuItemsForElement([in] IWebView* sender, [in] IPropertyBag* element, [in] HMENU defaultItems, [out, retval] HMENU* resultMenu);
+
+    /*!
+        @method webView:validateUserInterfaceItem:defaultValidation:
+        @abstract Controls UI validation
+        @param webView The WebView sending the delegate method
+        @param item The user interface item being validated
+        @pararm defaultValidation Whether or not the WebView thinks the item is valid
+        @discussion This method allows the UI delegate to control WebView's validation of user interface items.
+        See WebView.h to see the methods to that WebView can currently validate. See NSUserInterfaceValidations and
+        NSValidatedUserInterfaceItem for information about UI validation.
+        - (BOOL)webView:(WebView *)webView validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)item defaultValidation:(BOOL)defaultValidation;
+    */
+    HRESULT validateUserInterfaceItem([in] IWebView* webView, [in] UINT itemCommandID, [in] BOOL defaultValidation, [out, retval] BOOL* isValid);
+
+    /*!
+        @method webView:shouldPerformAction:fromSender:
+        @abstract Controls actions
+        @param webView The WebView sending the delegate method
+        @param action The action being sent
+        @param sender The sender of the action
+        @discussion This method allows the UI delegate to control WebView's behavior when an action is being sent.
+        For example, if the action is copy:, the delegate can return YES to allow WebView to perform its default
+        copy behavior or return NO and perform copy: in some other way. See WebView.h to see the actions that
+        WebView can perform.
+        - (BOOL)webView:(WebView *)webView shouldPerformAction:(SEL)action fromSender:(id)sender;
+    */
+    HRESULT shouldPerformAction([in] IWebView* webView, [in] UINT itemCommandID, [in] UINT sender);
+
+    /*!
+        @method webView:dragDestinationActionMaskForDraggingInfo:
+        @abstract Controls behavior when dragging to a WebView
+        @param webView The WebView sending the delegate method
+        @param draggingInfo The dragging info of the drag
+        @discussion This method is called periodically as something is dragged over a WebView. The UI delegate can return a mask
+        indicating which drag destination actions can occur, WebDragDestinationActionAny to allow any kind of action or
+        WebDragDestinationActionNone to not accept the drag.
+        - (unsigned)webView:(WebView *)webView dragDestinationActionMaskForDraggingInfo:(id <NSDraggingInfo>)draggingInfo;
+    */
+    HRESULT dragDestinationActionMaskForDraggingInfo([in] IWebView* webView, [in] IDropSource* draggingInfo, [out, retval] WebDragDestinationAction* action);
+
+    /*!
+        @method webView:willPerformDragDestinationAction:forDraggingInfo:
+        @abstract Informs that WebView will perform a drag destination action
+        @param webView The WebView sending the delegate method
+        @param action The drag destination action
+        @param draggingInfo The dragging info of the drag
+        @discussion This method is called after the last call to webView:dragDestinationActionMaskForDraggingInfo: after something is dropped on a WebView.
+        This method informs the UI delegate of the drag destination action that WebView will perform.
+        - (void)webView:(WebView *)webView willPerformDragDestinationAction:(WebDragDestinationAction)action forDraggingInfo:(id <NSDraggingInfo>)draggingInfo;
+    */
+    HRESULT willPerformDragDestinationAction([in] IWebView* webView, [in] IDropSource* draggingInfo);
+
+    /*!
+        @method webView:dragSourceActionMaskForPoint:
+        @abstract Controls behavior when dragging from a WebView
+        @param webView The WebView sending the delegate method
+        @param point The point where the drag started in the coordinates of the WebView
+        @discussion This method is called after the user has begun a drag from a WebView. The UI delegate can return a mask indicating
+        which drag source actions can occur, WebDragSourceActionAny to allow any kind of action or WebDragSourceActionNone to not begin a drag.
+        - (unsigned)webView:(WebView *)webView dragSourceActionMaskForPoint:(NSPoint)point;
+    */
+    HRESULT dragSourceActionMaskForPoint([in] IWebView* webView, [in] LPPOINT point, [out, retval] WebDragSourceAction* action);
+
+    /*!
+        @method webView:willPerformDragSourceAction:fromPoint:withPasteboard:
+        @abstract Informs that a drag a has begun from a WebView
+        @param webView The WebView sending the delegate method
+        @param action The drag source action
+        @param point The point where the drag started in the coordinates of the WebView
+        @param pasteboard The drag pasteboard
+        @discussion This method is called after webView:dragSourceActionMaskForPoint: is called after the user has begun a drag from a WebView.
+        This method informs the UI delegate of the drag source action that will be performed and gives the delegate an opportunity to modify
+        the contents of the dragging pasteboard.
+        - (void)webView:(WebView *)webView willPerformDragSourceAction:(WebDragSourceAction)action fromPoint:(NSPoint)point withPasteboard:(NSPasteboard *)pasteboard;
+    */
+    HRESULT willPerformDragSourceAction([in] IWebView* webView, [in] WebDragSourceAction action, [in] LPPOINT point, [in] IDataObject* pasteboard);
+}\r
diff --git a/WebKit/COM/Interfaces/IWebURLAuthenticationChallenge.idl b/WebKit/COM/Interfaces/IWebURLAuthenticationChallenge.idl
new file mode 100644 (file)
index 0000000..aad1def
--- /dev/null
@@ -0,0 +1,235 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "IWebError.idl";\r
+import "IWebURLResponse.idl";\r
+\r
+interface IWebURLAuthenticationChallengeSender;\r
+interface IWebURLProtectionSpace;\r
+interface IWebURLCredential;\r
+\r
+typedef enum {\r
+    WebURLCredentialPersistenceNone,\r
+    WebURLCredentialPersistenceForSession,\r
+    WebURLCredentialPersistencePermanent\r
+} WebURLCredentialPersistence;\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(5382DABA-C3C3-40c5-AA40-04079F11A844),\r
+    pointer_default(unique)\r
+]\r
+interface IWebURLAuthenticationChallenge : IUnknown\r
+{\r
+    /*\r
+        - (NSError *)error\r
+    */\r
+    HRESULT error([out, retval] IWebError** result);\r
+\r
+    /*\r
+        - (NSURLResponse *)failureResponse\r
+    */\r
+    HRESULT failureResponse([out, retval] IWebURLResponse* result);\r
+\r
+    /*\r
+        - (id)initWithAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge sender:(id<NSURLAuthenticationChallengeSender>)sender\r
+    */\r
+    HRESULT initWithAuthenticationChallenge([in] IWebURLAuthenticationChallenge* challenge, [in] IWebURLAuthenticationChallengeSender* sender);\r
+\r
+    /*\r
+        - (id)initWithProtectionSpace:(NSURLProtectionSpace *)space proposedCredential:(NSURLCredential *)credential previousFailureCount:(int)count failureResponse:(NSURLResponse *)response error:(NSError *)error sender:(id <NSURLAuthenticationChallengeSender>)sender\r
+    */\r
+    HRESULT initWithProtectionSpace([in] IWebURLProtectionSpace* space, [in] IWebURLCredential* proposedCredential, [in] int previousFailureCount, [in] IWebURLResponse* failureResponse, [in] IWebError* error, [in] IWebURLAuthenticationChallengeSender* sender);\r
+\r
+    /*\r
+        -(unsigned)previousFailureCount\r
+    */\r
+    HRESULT previousFailureCount([out, retval] UINT* result);\r
+\r
+    /*\r
+        -(NSURLCredential *)proposedCredential\r
+    */\r
+    HRESULT proposedCredential([out, retval] IWebURLCredential** result);\r
+\r
+    /*\r
+        - (NSURLProtectionSpace *)protectionSpace\r
+    */\r
+    HRESULT protectionSpace([out, retval] IWebURLProtectionSpace** result);\r
+\r
+    /*\r
+        - (id<NSURLAuthenticationChallengeSender>)sender\r
+    */\r
+    HRESULT sender([out, retval] IWebURLAuthenticationChallengeSender** sender);\r
+}\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(9360D6FB-186C-4ff7-AE57-D1B973DA0D1C),\r
+    pointer_default(unique)\r
+]\r
+interface IWebURLAuthenticationChallengeSender : IUnknown\r
+{\r
+    /*\r
+        - (void)cancelAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge\r
+    */\r
+    HRESULT cancelAuthenticationChallenge([in] IWebURLAuthenticationChallenge* challenge);\r
+\r
+    /*\r
+        - (void)continueWithoutCredentialForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge\r
+    */\r
+    HRESULT continueWithoutCredentialForAuthenticationChallenge([in] IWebURLAuthenticationChallenge* challenge);\r
+\r
+    /*\r
+        - (void)useCredential:(NSURLCredential *)credential forAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge\r
+    */\r
+    HRESULT useCredential([in] IWebURLCredential* credential, [in] IWebURLAuthenticationChallenge* challenge);\r
+}\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(71D2622A-3FF2-404b-BD45-C60659C901AF),\r
+    pointer_default(unique)\r
+]\r
+interface IWebURLProtectionSpace : IUnknown\r
+{\r
+    /*\r
+        -(NSString *)authenticationMethod\r
+    */\r
+    HRESULT authenticationMethod([out, retval] BSTR* result);\r
+\r
+    /*\r
+        -(NSString *)host\r
+    */\r
+    HRESULT host([out, retval] BSTR* result);\r
+\r
+    /*\r
+        -(id)initWithHost:(NSString *)host port:(int)port protocol:(NSString *)protocol realm:(NSString *)realm authenticationMethod:(NSString *)authenticationMethod\r
+    */\r
+    HRESULT initWithHost([in] BSTR host, [in] int port, [in] BSTR protocol, [in] BSTR realm, [in] BSTR authenticationMethod);\r
+\r
+    /*\r
+        -(id)initWithProxyHost:(NSString *)host port:(int)port type:(NSString *)proxyType realm:(NSString *)realm authenticationMethod:(NSString *)authenticationMethod\r
+    */\r
+    HRESULT initWithProxyHost([in] BSTR host, [in] int port, [in] BSTR proxyType, [in] BSTR realm, [in] BSTR authenticationMethod);\r
+\r
+    /*\r
+        -(BOOL)isProxy\r
+    */\r
+    HRESULT isProxy([out, retval] BOOL* result);\r
+\r
+    /*\r
+        -(int)port\r
+    */\r
+    HRESULT port([out, retval] int* result);\r
+\r
+    /*\r
+        -(NSString *)protocol\r
+    */\r
+    HRESULT protocol([out, retval] BSTR* result);\r
+\r
+    /*\r
+        -(NSString *)proxyType\r
+    */\r
+    HRESULT proxyType([out, retval] BSTR* result);\r
+\r
+    /*\r
+        -(NSString *)realm\r
+    */\r
+    HRESULT realm([out, retval] BSTR* result);\r
+\r
+    /*\r
+        -(BOOL)receivesCredentialSecurely\r
+    */\r
+    HRESULT receivesCredentialSecurely([out, retval] BOOL* result);\r
+}\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(A1E9D765-FACE-4189-BBE3-AED7EBF65EBD),\r
+    pointer_default(unique)\r
+]\r
+interface IWebURLCredential : IUnknown\r
+{\r
+    /*\r
+        + (NSURLCredential *)credentialWithUser:(NSString *)user password:(NSString *)password persistence:(NSURLCredentialPersistence)persistence\r
+    */\r
+    HRESULT credentialWithUser([in] BSTR user, [in] BSTR password, [in] WebURLCredentialPersistence persistence);\r
+\r
+    /*\r
+        -(BOOL)hasPassword\r
+    */\r
+    HRESULT hasPassword([out, retval] BOOL* result);\r
+\r
+    /*\r
+        -(id)initWithUser:(NSString *)user password:(NSString *)password persistence:(NSURLCredentialPersistence)persistence\r
+    */\r
+    HRESULT initWithuser([in] BSTR user, [in] BSTR password, [in] WebURLCredentialPersistence persistence);\r
+\r
+    /*\r
+        -(NSString *)password\r
+    */\r
+    HRESULT password([out, retval] BSTR* password);\r
+\r
+    /*\r
+        -(NSURLCredentialPersistence)persistence\r
+    */\r
+    HRESULT persistence([out, retval] WebURLCredentialPersistence* result);\r
+\r
+    /*\r
+        -(NSString *)user\r
+    */\r
+    HRESULT user([out, retval] BSTR* result);\r
+}\r
diff --git a/WebKit/COM/Interfaces/IWebURLRequest.idl b/WebKit/COM/Interfaces/IWebURLRequest.idl
new file mode 100644 (file)
index 0000000..3c2f50b
--- /dev/null
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+\r
+typedef enum _WebURLRequestCachePolicy\r
+{\r
+    WebURLRequestUseProtocolCachePolicy,\r
+    WebURLRequestReloadIgnoringCacheData,\r
+    WebURLRequestReturnCacheDataElseLoad,\r
+    WebURLRequestReturnCacheDataDontLoad\r
+} WebURLRequestCachePolicy;\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(F4B85F1D-F3B2-493d-B786-0930E804A3BA),\r
+    pointer_default(unique)\r
+]\r
+interface IWebURLRequest : IUnknown\r
+{\r
+    /*\r
+        + (id)requestWithURL:(NSURL *)theURL\r
+        + (id)requestWithURL:(NSURL *)theURL cachePolicy:(NSURLRequestCachePolicy)cachePolicy timeoutInterval:(NSTimeInterval)timeoutInterval\r
+    */\r
+    HRESULT requestWithURL([in] BSTR theURL, [in, optional] WebURLRequestCachePolicy cachePolicy, [in, optional] UINT timeoutInterval);\r
+\r
+    /*\r
+        - (NSDictionary *)allHTTPHeaderFields\r
+    */\r
+    HRESULT allHTTPHeaderFields([out, retval] IPropertyBag** result);\r
+\r
+    /*\r
+        - (NSURLRequestCachePolicy)cachePolicy\r
+    */\r
+    HRESULT cachePolicy([out, retval] WebURLRequestCachePolicy* result);\r
+\r
+    /*\r
+        - (NSData *)HTTPBody\r
+    */\r
+    HRESULT HTTPBody([out, retval] IStream** result);\r
+\r
+    /*\r
+        - (NSInputStream *)HTTPBodyStream\r
+    */\r
+    HRESULT HTTPBodyStream([out, retval] IStream** result);\r
+\r
+    /*\r
+        - (NSString *)HTTPMethod\r
+    */\r
+    HRESULT HTTPMethod([out, retval] BSTR *result);\r
+\r
+    /*\r
+        - (BOOL)HTTPShouldHandleCookies\r
+    */\r
+    HRESULT HTTPShouldHandleCookies([out, retval] BOOL *result);\r
+\r
+    /*\r
+        - (id)initWithURL:(NSURL *)theURL\r
+        - (id)initWithURL:(NSURL *)theURL cachePolicy:(NSURLRequestCachePolicy)cachePolicy timeoutInterval:(NSTimeInterval)timeoutInterval\r
+    */\r
+    HRESULT initWithURL([in] BSTR url, [in, optional] WebURLRequestCachePolicy cachePolicy, [in, optional] UINT timeoutInterval);\r
+\r
+    /*\r
+        - (NSURL *)mainDocumentURL\r
+    */\r
+    HRESULT mainDocumentURL([out, retval] BSTR* result);\r
+\r
+    /*\r
+        -(NSTimeInterval)timeoutInterval\r
+    */\r
+    HRESULT timeoutInterval([out, retval] UINT* result);\r
+\r
+    /*\r
+        -(NSURL *)URL\r
+    */\r
+    HRESULT URL([out, retval] BSTR* result);\r
+\r
+    /*\r
+        -(NSString *)valueForHTTPHeaderField:(NSString *)field\r
+    */\r
+    HRESULT valueForHTTPHeaderField([in] BSTR field, [out, retval] BSTR* result);\r
+}\r
diff --git a/WebKit/COM/Interfaces/IWebURLResponse.idl b/WebKit/COM/Interfaces/IWebURLResponse.idl
new file mode 100644 (file)
index 0000000..89372ba
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(9814930B-E037-4477-8DF1-4D898B648995),\r
+    pointer_default(unique)\r
+]\r
+\r
+interface IWebURLResponse : IUnknown\r
+{\r
+    /*\r
+        - (long long)expectedContentLength\r
+    */\r
+    HRESULT expectedContentLength([out, retval] long long *result); \r
+\r
+    /*\r
+        - (id)initWithURL:(NSURL *)URL MIMEType:(NSString *)MIMEType expectedContentLength:(int)length textEncodingName:(NSString *)name\r
+    */\r
+    HRESULT initWithURL([in] BSTR url, [in] BSTR mimeType, [in] int expectedContentLength, [in] BSTR textEncodingName);\r
+\r
+    /*\r
+        - (NSString *)MIMEType\r
+    */\r
+    HRESULT MIMEType([out, retval] BSTR* result);\r
+\r
+    /*\r
+        - (NSString *)suggestedFilename\r
+    */\r
+    HRESULT suggestedFilename([out, retval] BSTR* result);\r
+\r
+    /*\r
+        - (NSString *)textEncodingName\r
+    */\r
+    HRESULT textEncodingName([out, retval] BSTR* result);\r
+\r
+    /*\r
+        - (NSURL *)URL\r
+    */\r
+    HRESULT URL([out, retval] BSTR* result);\r
+}\r
diff --git a/WebKit/COM/Interfaces/IWebUndoManager.idl b/WebKit/COM/Interfaces/IWebUndoManager.idl
new file mode 100644 (file)
index 0000000..27fedd6
--- /dev/null
@@ -0,0 +1,337 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+\r
+interface IWebInvocation;\r
+interface IWebMethodSignature;\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(D25D748C-6C1E-478d-9832-FDA26E8F7EE4),\r
+    pointer_default(unique)\r
+]\r
+interface IWebUndoManager : IUnknown\r
+{\r
+    /*\r
+        - (void)beginUndoGrouping\r
+    */\r
+    HRESULT beginUndoGrouping();\r
+\r
+    /*\r
+        - (BOOL)canRedo\r
+    */\r
+    HRESULT canRedo([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (BOOL)canUndo\r
+    */\r
+    HRESULT canUndo([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (void)disableUndoRegistration\r
+    */\r
+    HRESULT disableUndoRegistration();\r
+\r
+    /*\r
+        - (void)enableUndoRegistration\r
+    */\r
+    HRESULT enableUndoRegistration();\r
+\r
+    /*\r
+        - (void)endUndoGrouping\r
+    */\r
+    HRESULT endUndoGrouping();\r
+\r
+    /*\r
+        - (void)forwardInvocation:(NSInvocation *)anInvocation\r
+    */\r
+    HRESULT forwardInvocation([in] IWebInvocation* anInvocation);\r
+\r
+    /*\r
+        - (int)groupingLevel\r
+    */\r
+    HRESULT groupingLevel([out, retval] int* groupingLevel);\r
+\r
+    /*\r
+        - (BOOL)groupsByEvent\r
+    */\r
+    HRESULT groupsByEvent([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (BOOL)isRedoing\r
+    */\r
+    HRESULT isRedoing([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (BOOL)isUndoing\r
+    */\r
+    HRESULT isUndoing([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (BOOL)isUndoRegistrationEnabled\r
+    */\r
+    HRESULT isUndoRegistrationEnabled([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (unsigned)levelsOfUndo\r
+    */\r
+    HRESULT levelsOfUndo([out, retval] UINT* result);\r
+\r
+    /*\r
+        - (id)prepareWithInvocationTarget:(id)target\r
+    */\r
+    HRESULT prepareWithInvocationTarget([in] IUnknown* target, [out, retval] IUnknown** result);\r
+\r
+    /*\r
+        - (void)redo\r
+    */\r
+    HRESULT redo();\r
+\r
+    /*\r
+        - (NSString *)redoActionName\r
+    */\r
+    HRESULT redoActionName([out, retval] BSTR* result);\r
+\r
+    /*\r
+        - (NSString *)redoMenuItemTitle\r
+    */\r
+    HRESULT redoMenuItemTitle([out, retval] BSTR* result);\r
+\r
+    /*\r
+        - (NSString *)redoMenuTitleForUndoActionName:(NSString *)actionName\r
+    */\r
+    HRESULT redoMenuTitleForUndoActionName([in] BSTR actionName, [out, retval] BSTR* result);\r
+\r
+    /*\r
+        - (void)registerUndoWithTarget:(id)target selector:(SEL)aSelector object:(id)anObject\r
+    */\r
+    HRESULT registerUndoWithTarget([in] IUnknown* target, [in] UINT aSelector, [in] IUnknown* anObject);\r
+\r
+    /*\r
+        - (void)removeAllActions\r
+    */\r
+    HRESULT removeAllActions();\r
+\r
+    /*\r
+        - (void)removeAllActionsWithTarget:(id)target\r
+    */\r
+    HRESULT removeAllActionsWithTarget([in] IUnknown* target);\r
+\r
+    /*\r
+        - (NSArray *)runLoopModes\r
+    */\r
+    HRESULT runLoopModes([out] int* cModes, [out, retval] BSTR** modes);\r
+\r
+    /*\r
+        - (void)setActionName:(NSString *)actionName\r
+    */\r
+    HRESULT setActionName([in] BSTR actionName);\r
+\r
+    /*\r
+        - (void)setGroupsByEvent:(BOOL)flag\r
+    */\r
+    HRESULT setGroupsByEvent([in] BOOL flag);\r
+\r
+    /*\r
+        - (void)setLevelsOfUndo:(unsigned)anInt\r
+    */\r
+    HRESULT setLevelsOfUndo([in] UINT anInt);\r
+\r
+    /*\r
+        - (void)setRunLoopModes:(NSArray *)modes\r
+    */\r
+    HRESULT setRunLoopModes([in] int cModes, [in, size_is(cModes)] BSTR* modes);\r
+\r
+    /*\r
+        - (void)undo\r
+    */\r
+    HRESULT undo();\r
+\r
+    /*\r
+        - (NSString *)undoActionName\r
+    */\r
+    HRESULT undoActionName([out, retval] BSTR* result);\r
+\r
+    /*\r
+        - (NSString *)undoMenuItemTitle\r
+    */\r
+    HRESULT undoMenuItemTitle([out, retval] BSTR* result);\r
+\r
+    /*\r
+        - (NSString *)undoMenuTitleForUndoActionName:(NSString *)actionName\r
+    */\r
+    HRESULT undoMenuTitleForUndoActionName([in] BSTR actionName, [out, retval] BSTR* result);\r
+\r
+    /*\r
+        - (void)undoNestedGroup\r
+    */\r
+    HRESULT undoNestedGroup();\r
+}\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(67B067BE-4DE6-45c2-AD39-A91DFA84FF4E),\r
+    pointer_default(unique)\r
+]\r
+interface IWebInvocation : IUnknown\r
+{\r
+    /*\r
+        + (NSInvocation *)invocationWithMethodSignature:(NSMethodSignature *)signature\r
+    */\r
+    HRESULT invocationWithMethodSignature([in] IWebMethodSignature* signature);\r
+\r
+    /*\r
+        - (BOOL)argumentsRetained\r
+    */\r
+    HRESULT argumentsRetained([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (void)getArgument:(void *)buffer atIndex:(int)index\r
+    */\r
+    HRESULT getArgument([in] void* buffer, [in] int index);\r
+\r
+    /*\r
+        - (void)getReturnValue:(void *)buffer\r
+    */\r
+    HRESULT getReturnValue([in] void* buffer);\r
+\r
+    /*\r
+        - (void)invoke\r
+    */\r
+    HRESULT invoke();\r
+\r
+    /*\r
+        - (void)invokeWithTarget:(id)anObject\r
+    */\r
+    HRESULT invokeWithTarget([in] IUnknown* anObject);\r
+\r
+    /*\r
+        - (NSMethodSignature *)methodSignature\r
+    */\r
+    HRESULT methodSignature([out, retval] IWebMethodSignature** result);\r
+\r
+    /*\r
+        - (void)retainArguments\r
+    */\r
+    HRESULT retainArguments();\r
+\r
+    /*\r
+        - (SEL)selector\r
+    */\r
+    HRESULT selector([out, retval] UINT* result);\r
+\r
+    /*\r
+        - (void)setArgument:(void *)buffer atIndex:(int)index\r
+    */\r
+    HRESULT setArgument([in] void* buffer, [in] int atIndex);\r
+\r
+    /*\r
+        - (void)setReturnValue:(void *)buffer\r
+    */\r
+    HRESULT setReturnValue([in] void* buffer);\r
+\r
+    /*\r
+        - (void)setSelector:(SEL)selector\r
+    */\r
+    HRESULT setSelector([in] UINT selector);\r
+\r
+    /*\r
+        - (void)setTarget:(id)anObject\r
+    */\r
+    HRESULT setTarget([in] IUnknown* anObject);\r
+\r
+    /*\r
+        - (id)target\r
+    */\r
+    HRESULT target([out, retval] IUnknown** result);\r
+}\r
+\r
+[\r
+    local,\r
+    object,\r
+    uuid(431DD6B2-56BF-4f48-943B-78CCEAC418E4),\r
+    pointer_default(unique)\r
+]\r
+interface IWebMethodSignature : IUnknown\r
+{\r
+    /*\r
+        - (unsigned)frameLength\r
+    */\r
+    HRESULT frameLength([out, retval] UINT* result);\r
+\r
+    /*\r
+        - (const char *)getArgumentTypeAtIndex:(unsigned)index\r
+    */\r
+    HRESULT getArgumentTypeAtIndex([in] UINT index, [out, retval] const char** result);\r
+\r
+    /*\r
+        - (BOOL)isOneway\r
+    */\r
+    HRESULT isOneway([out, retval] BOOL* result);\r
+\r
+    /*\r
+        - (unsigned)methodReturnLength\r
+    */\r
+    HRESULT methodReturnLength([out, retval] UINT* result);\r
+\r
+    /*\r
+        - (const char *)methodReturnType\r
+    */\r
+    HRESULT methodReturnType([out, retval] const char** result);\r
+\r
+    /*\r
+        - (unsigned)numberOfArguments\r
+    */\r
+    HRESULT numberOfArguments([out, retval] UINT* result);\r
+}\r
diff --git a/WebKit/COM/Interfaces/IWebView.idl b/WebKit/COM/Interfaces/IWebView.idl
new file mode 100644 (file)
index 0000000..dd7adcb
--- /dev/null
@@ -0,0 +1,891 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+import "IWebUIDelegate.idl";\r
+import "IWebResourceLoadDelegate.idl";\r
+import "IWebDownload.idl";\r
+import "IWebFrameLoadDelegate.idl";\r
+import "IWebPolicyDelegate.idl";\r
+import "IWebBackForwardList.idl";\r
+import "IWebHistoryItem.idl";\r
+import "IWebPreferences.idl";\r
+import "DOMCSS.idl";
+import "IWebUndoManager.idl";
+import "IWebEditingDelegate.idl";
+import "DOMRange.idl";
+
+interface IDOMCSSStyleDeclaration;
+interface IDOMDocument;
+interface IDOMElement;
+interface IDOMNode;
+interface IDOMRange;
+
+interface IWebArchive;
+interface IWebBackForwardList;
+interface IWebDataSource;
+interface IWebFrame;
+interface IWebFrameView;
+interface IWebHistoryItem;
+interface IWebPreferences;
+interface IWebScriptObject;
+
+interface IWebUIDelegate;\r
+interface IWebResourceLoadDelegate;\r
+interface IWebDownloadDelegate;\r
+interface IWebFrameLoadDelegate;\r
+interface IWebPolicyDelegate;\r
+interface IWebDocumentView;\r
+interface IWebDocumentRepresentation;\r
+interface IWebUndoManager;\r
+interface IWebViewEditingDelegate;\r
+\r
+/*!
+    @class WebView
+    WebView manages the interaction between WebFrameViews and WebDataSources.  Modification
+    of the policies and behavior of the WebKit is largely managed by WebViews and their
+    delegates.
+    
+    <p>
+    Typical usage:
+    </p>
+    <pre>
+    WebView *webView;
+    WebFrame *mainFrame;
+    
+    webView  = [[WebView alloc] initWithFrame: NSMakeRect (0,0,640,480)];
+    mainFrame = [webView mainFrame];
+    [mainFrame loadRequest:request];
+    </pre>
+    
+    WebViews have the following delegates:  WebUIDelegate, WebResourceLoadDelegate,
+    WebFrameLoadDelegate, and WebPolicyDelegate.
+    
+    WebKit depends on the WebView's WebUIDelegate for all window
+    related management, including opening new windows and controlling the user interface
+    elements in those windows.
+    
+    WebResourceLoadDelegate is used to monitor the progress of resources as they are
+    loaded.  This delegate may be used to present users with a progress monitor.
+    
+    The WebFrameLoadDelegate receives messages when the URL in a WebFrame is
+    changed.
+    
+    WebView's WebPolicyDelegate can make determinations about how
+    content should be handled, based on the resource's URL and MIME type.
+
+    @interface WebView : NSView
+*/\r
+[\r
+    local,\r
+    object,\r
+    uuid(174BBEFD-058E-49c7-91DF-6F110AA4AC28),\r
+    pointer_default(unique)\r
+]\r
+interface IWebView : IUnknown\r
+{\r
+    /*!
+        @method canShowMIMEType:
+        @abstract Checks if the WebKit can show content of a certain MIME type.
+        @param MIMEType The MIME type to check.
+        @result YES if the WebKit can show content with MIMEtype.
+        + (BOOL)canShowMIMEType:(NSString *)MIMEType;
+    */
+    HRESULT canShowMIMEType([in] BSTR mimeType, [out, retval] BOOL* canShow);
+
+    /*!
+        @method canShowMIMETypeAsHTML:
+        @abstract Checks if the the MIME type is a type that the WebKit will interpret as HTML.
+        @param MIMEType The MIME type to check.
+        @result YES if the MIMEtype in an HTML type.
+        + (BOOL)canShowMIMETypeAsHTML:(NSString *)MIMEType;
+    */
+    HRESULT canShowMIMETypeAsHTML([in] BSTR mimeType, [out, retval] BOOL* canShow);
+
+    /*!
+        @method MIMETypesShownAsHTML
+        @result Returns an array of NSStrings that describe the MIME types
+        WebKit will attempt to render as HTML.
+        + (NSArray *)MIMETypesShownAsHTML;
+    */
+    HRESULT MIMETypesShownAsHTML([out] int* count, [out, retval] BSTR** mimeTypes);
+\r
+    /*!
+        @method setMIMETypesShownAsHTML:
+        @discussion Sets the array of NSString MIME types that WebKit will
+        attempt to render as HTML.  Typically you will retrieve the built-in
+        array using MIMETypesShownAsHTML and add additional MIME types to that
+        array.
+        + (void)setMIMETypesShownAsHTML:(NSArray *)MIMETypes;
+    */
+    HRESULT setMIMETypesShownAsHTML([in, size_is(cMimeTypes)] BSTR* mimeTypes, [in] int cMimeTypes);
+
+    /*!
+        @method URLFromPasteboard:
+        @abstract Returns a URL from a pasteboard
+        @param pasteboard The pasteboard with a URL
+        @result A URL if the pasteboard has one. Nil if it does not.
+        @discussion This method differs than NSURL's URLFromPasteboard method in that it tries multiple pasteboard types
+        including NSURLPboardType to find a URL on the pasteboard.
+        + (NSURL *)URLFromPasteboard:(NSPasteboard *)pasteboard;
+    */
+    HRESULT URLFromPasteboard([in] IDataObject* pasteboard, [out, retval] BSTR* url);
+
+    /*!
+        @method URLTitleFromPasteboard:
+        @abstract Returns a URL title from a pasteboard
+        @param pasteboard The pasteboard with a URL title
+        @result A URL title if the pasteboard has one. Nil if it does not.
+        @discussion This method returns a title that refers a URL on the pasteboard. An example of this is the link label
+        which is the text inside the anchor tag.
+        + (NSString *)URLTitleFromPasteboard:(NSPasteboard *)pasteboard;
+    */
+    HRESULT URLTitleFromPasteboard([in] IDataObject* pasteboard, [out, retval] BSTR* urlTitle);
+
+    /*!
+        @method initWithFrame:frameName:groupName:
+        @abstract The designated initializer for WebView.
+        @discussion Initialize a WebView with the supplied parameters. This method will 
+        create a main WebFrame with the view. Passing a top level frame name is useful if you
+        handle a targetted frame navigation that would normally open a window in some other 
+        way that still ends up creating a new WebView.
+        @param frame The frame used to create the view.
+        @param frameName The name to use for the top level frame. May be nil.
+        @param groupName The name of the webView set to which this webView will be added.  May be nil.
+        @result Returns an initialized WebView.
+        - (id)initWithFrame:(NSRect)frame frameName:(NSString *)frameName groupName:(NSString *)groupName;
+    */
+    HRESULT initWithFrame([in] RECT* frame, [in] BSTR frameName, [in] BSTR groupName);
+
+    /*!
+        @method setUIDelegate:
+        @abstract Set the WebView's WebUIDelegate.
+        @param delegate The WebUIDelegate to set as the delegate.
+        - (void)setUIDelegate:(id)delegate;
+    */
+    HRESULT setUIDelegate([in] IWebUIDelegate* d);\r
+
+    /*!
+        @method UIDelegate
+        @abstract Return the WebView's WebUIDelegate.
+        @result The WebView's WebUIDelegate.
+        - (id)UIDelegate;
+    */
+    HRESULT uiDelegate([retval, out] IWebUIDelegate** d);\r
+
+    /*!
+        @method setResourceLoadDelegate:
+        @abstract Set the WebView's WebResourceLoadDelegate load delegate.
+        @param delegate The WebResourceLoadDelegate to set as the load delegate.
+        - (void)setResourceLoadDelegate:(id)delegate;
+    */
+    HRESULT setResourceLoadDelegate([in] IWebResourceLoadDelegate* d);\r
+
+    /*!
+        @method resourceLoadDelegate
+        @result Return the WebView's WebResourceLoadDelegate.
+        - (id)resourceLoadDelegate;
+    */    
+    HRESULT resourceLoadDelegate([retval, out] IWebResourceLoadDelegate** d);\r
+
+    /*!
+        @method setDownloadDelegate:
+        @abstract Set the WebView's WebDownloadDelegate.
+        @discussion The download delegate is retained by WebDownload when any downloads are in progress.
+        @param delegate The WebDownloadDelegate to set as the download delegate.
+        - (void)setDownloadDelegate:(id)delegate;
+    */
+    HRESULT setDownloadDelegate([in] IWebDownloadDelegate* d);\r
+
+    /*!
+        @method downloadDelegate
+        @abstract Return the WebView's WebDownloadDelegate.
+        @result The WebView's WebDownloadDelegate.
+        - (id)downloadDelegate;
+    */    
+    HRESULT downloadDelegate([retval, out] IWebDownloadDelegate** d);\r
+
+    /*!
+        @method setFrameLoadDelegate:
+        @abstract Set the WebView's WebFrameLoadDelegate delegate.
+        @param delegate The WebFrameLoadDelegate to set as the delegate.
+        - (void)setFrameLoadDelegate:(id)delegate;
+    */
+    HRESULT setFrameLoadDelegate([in] IWebFrameLoadDelegate* d);\r
+
+    /*!
+        @method frameLoadDelegate
+        @abstract Return the WebView's WebFrameLoadDelegate delegate.
+        @result The WebView's WebFrameLoadDelegate delegate.
+        - (id)frameLoadDelegate;
+    */    
+    HRESULT frameLoadDelegate([retval, out] IWebFrameLoadDelegate** d);\r
+
+    /*!
+        @method setPolicyDelegate:
+        @abstract Set the WebView's WebPolicyDelegate delegate.
+        @param delegate The WebPolicyDelegate to set as the delegate.
+        - (void)setPolicyDelegate:(id)delegate;
+    */    
+    HRESULT setPolicyDelegate([in] IWebPolicyDelegate* d);\r
+
+    /*!
+        @method policyDelegate
+        @abstract Return the WebView's WebPolicyDelegate.
+        @result The WebView's WebPolicyDelegate.
+        - (id)policyDelegate;
+    */    
+    HRESULT policyDelegate([retval, out] IWebPolicyDelegate** d);\r
+
+    /*!
+        @method mainFrame
+        @abstract Return the top level frame.  
+        @discussion Note that even document that are not framesets will have a
+        mainFrame.
+        @result The main frame.
+        - (WebFrame *)mainFrame;
+    */    
+    HRESULT mainFrame([retval, out] IWebFrame** frame);\r
+
+    /*!
+        @method backForwardList
+        @result The backforward list for this webView.
+        - (WebBackForwardList *)backForwardList;
+    */    
+    HRESULT backForwardList([retval, out] IWebBackForwardList** list);\r
+
+    /*!
+        @method setMaintainsBackForwardList:
+        @abstract Enable or disable the use of a backforward list for this webView.
+        @param flag Turns use of the back forward list on or off
+        - (void)setMaintainsBackForwardList:(BOOL)flag;
+    */    
+    HRESULT setMaintainsBackForwardList([in] BOOL flag);\r
+
+    /*!
+        @method goBack
+        @abstract Go back to the previous URL in the backforward list.
+        @result YES if able to go back in the backforward list, NO otherwise.
+        - (BOOL)goBack;
+    */
+    HRESULT goBack([out, retval] BOOL* succeeded);
+
+    /*!
+        @method goForward
+        @abstract Go forward to the next URL in the backforward list.
+        @result YES if able to go forward in the backforward list, NO otherwise.
+        - (BOOL)goForward;
+    */    
+    HRESULT goForward([out, retval] BOOL* succeeded);
+
+    /*!
+        @method goToBackForwardItem:
+        @abstract Go back or forward to an item in the backforward list.
+        @result YES if able to go to the item, NO otherwise.
+        - (BOOL)goToBackForwardItem:(WebHistoryItem *)item;
+    */    
+    HRESULT goToBackForwardItem([in] IWebHistoryItem* item, [out, retval] BOOL* succeeded);
+
+    /*!
+        @method setTextSizeMultiplier:
+        @abstract Change the size of the text rendering in views managed by this webView.
+        @param multiplier A fractional percentage value, 1.0 is 100%.
+        - (void)setTextSizeMultiplier:(float)multiplier;
+    */
+    HRESULT setTextSizeMultiplier([in] float multiplier);\r
+
+    /*!
+        @method textSizeMultiplier
+        @result The text size multipler.
+        - (float)textSizeMultiplier;
+    */    
+    HRESULT textSizeMultiplier([out, retval] float* multiplier);\r
+
+    /*!
+        @method setApplicationNameForUserAgent:
+        @abstract Set the application name. 
+        @discussion This name will be used in user-agent strings
+        that are chosen for best results in rendering web pages.
+        @param applicationName The application name
+        - (void)setApplicationNameForUserAgent:(NSString *)applicationName;
+    */
+    HRESULT setApplicationNameForUserAgent([in] BSTR applicationName);\r
+
+    /*!
+        @method applicationNameForUserAgent
+        @result The name of the application as used in the user-agent string.
+        - (NSString *)applicationNameForUserAgent;
+    */
+    HRESULT applicationNameForUserAgent([out, retval] BSTR* applicationName);\r
+
+    /*!
+        @method setCustomUserAgent:
+        @abstract Set the user agent. 
+        @discussion Setting this means that the webView should use this user-agent string
+        instead of constructing a user-agent string for each URL. Setting it to nil
+        causes the webView to construct the user-agent string for each URL
+        for best results rendering web pages.
+        @param userAgentString The user agent description
+        - (void)setCustomUserAgent:(NSString *)userAgentString;
+    */
+    HRESULT setCustomUserAgent([in] BSTR userAgentString);\r
+
+    /*!
+        @method customUserAgent
+        @result The custom user-agent string or nil if no custom user-agent string has been set.
+        - (NSString *)customUserAgent;
+    */
+    HRESULT customUserAgent([out, retval] BSTR* userAgentString);\r
+
+    /*!
+        @method userAgentForURL:
+        @abstract Get the appropriate user-agent string for a particular URL.
+        @param URL The URL.
+        @result The user-agent string for the supplied URL.
+        - (NSString *)userAgentForURL:(NSURL *)URL;
+    */
+    HRESULT userAgentForURL([in] BSTR url, [out, retval] BSTR* userAgent);
+
+    /*!
+        @method supportsTextEncoding
+        @abstract Find out if the current web page supports text encodings.
+        @result YES if the document view of the current web page can
+        support different text encodings.
+        - (BOOL)supportsTextEncoding;
+    */
+    HRESULT supportsTextEncoding([out, retval] BOOL* supports);
+
+    /*!
+        @method setCustomTextEncodingName:
+        @discussion Make the page display with a different text encoding; stops any load in progress.
+        The text encoding passed in overrides the normal text encoding smarts including
+        what's specified in a web page's header or HTTP response.
+        The text encoding automatically goes back to the default when the top level frame
+        changes to a new location.
+        Setting the text encoding name to nil makes the webView use default encoding rules.
+        @param encoding The text encoding name to use to display a page or nil.
+        - (void)setCustomTextEncodingName:(NSString *)encodingName;
+    */
+    HRESULT setCustomTextEncodingName([in] BSTR encodingName);\r
+
+    /*!
+        @method customTextEncodingName
+        @result The custom text encoding name or nil if no custom text encoding name has been set.
+        - (NSString *)customTextEncodingName;
+    */
+    HRESULT customTextEncodingName([out, retval] BSTR* encodingName);\r
+
+    /*!
+        @method setMediaStyle:
+        @discussion Set the media style for the WebView.  The mediaStyle will override the normal value
+        of the CSS media property.  Setting the value to nil will restore the normal value.
+        @param mediaStyle The value to use for the CSS media property.
+        - (void)setMediaStyle:(NSString *)mediaStyle;
+    */
+    HRESULT setMediaStyle([in] BSTR media);\r
+
+    /*!
+        @method mediaStyle
+        @result mediaStyle The value to use for the CSS media property, as set by setMediaStyle:.  It
+        will be nil unless set by that method.
+        - (NSString *)mediaStyle;
+    */
+    HRESULT mediaStyle([out, retval] BSTR* media);\r
+
+    /*!
+        @method stringByEvaluatingJavaScriptFromString:
+        @param script The text of the JavaScript.
+        @result The result of the script, converted to a string, or nil for failure.
+        - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;
+    */
+    HRESULT stringByEvaluatingJavaScriptFromString([in] BSTR script, [out, retval] BSTR* result);
+
+    /*!
+        @method windowScriptObject
+        @discussion windowScriptObject return a WebScriptObject that represents the
+        window object from the script environment.
+        @result Returns the window object from the script environment.
+        - (WebScriptObject *)windowScriptObject;
+    */
+    HRESULT windowScriptObject([out, retval] IWebScriptObject* webScriptObject);\r
+
+    /*!
+        @method setPreferences:
+        @param preferences The preferences to use for the webView.
+        @abstract Override the standard setting for the webView. 
+        - (void)setPreferences: (WebPreferences *)prefs;
+    */
+    HRESULT setPreferences([in] IWebPreferences* prefs);\r
+
+    /*!
+        @method preferences
+        @result Returns the preferences used by this webView.
+        @discussion This method will return [WebPreferences standardPreferences] if no
+        other instance of WebPreferences has been set.
+        - (WebPreferences *)preferences;
+    */
+    HRESULT preferences([out, retval] IWebPreferences** prefs);\r
+
+    /*!
+        @method setPreferencesIdentifier:
+        @param anIdentifier The string to use a prefix for storing values for this WebView in the user
+        defaults database.
+        @discussion If the WebPreferences for this WebView are stored in the user defaults database, the
+        string set in this method will be used a key prefix.
+        - (void)setPreferencesIdentifier:(NSString *)anIdentifier;
+    */
+    HRESULT setPreferencesIdentifier([in] BSTR anIdentifier);\r
+
+    /*!
+        @method preferencesIdentifier
+        @result Returns the WebPreferences key prefix.
+        - (NSString *)preferencesIdentifier;
+    */
+    HRESULT preferencesIdentifier([out, retval] BSTR* anIdentifier);
+
+    /*!
+        @method setHostWindow:
+        @param hostWindow The host window for the web view.
+        @discussion Parts of WebKit (such as plug-ins and JavaScript) depend on a window to function
+        properly. Set a host window so these parts continue to function even when the web view is
+        not in an actual window.
+        - (void)setHostWindow:(NSWindow *)hostWindow;
+    */
+    HRESULT setHostWindow([in] HWND window);\r
+
+    /*!
+        @method hostWindow
+        @result The host window for the web view.
+        - (NSWindow *)hostWindow;
+    */
+    HRESULT hostWindow([out, retval] HWND* window);\r
+
+    /*!
+        @method searchFor:direction:caseSensitive:
+        @abstract Searches a document view for a string and highlights the string if it is found.
+        Starts the search from the current selection.  Will search across all frames.
+        @param string The string to search for.
+        @param forward YES to search forward, NO to seach backwards.
+        @param caseFlag YES to for case-sensitive search, NO for case-insensitive search.
+        @result YES if found, NO if not found.
+        - (BOOL)searchFor:(NSString *)string direction:(BOOL)forward caseSensitive:(BOOL)caseFlag wrap:(BOOL)wrapFlag;
+    */
+    HRESULT searchFor([in] BSTR str, [in] BOOL forward, [in] BOOL caseFlag, [in] BOOL wrapFlag, [out, retval] BOOL* found);
+
+    /*!
+        @method registerViewClass:representationClass:forMIMEType:
+        @discussion Register classes that implement WebDocumentView and WebDocumentRepresentation respectively.
+        A document class may register for a primary MIME type by excluding
+        a subtype, i.e. "video/" will match the document class with
+        all video types.  More specific matching takes precedence
+        over general matching.
+        @param viewClass The WebDocumentView class to use to render data for a given MIME type.
+        @param representationClass The WebDocumentRepresentation class to use to represent data of the given MIME type.
+        @param MIMEType The MIME type to represent with an object of the given class.
+        + (void)registerViewClass:(Class)viewClass representationClass:(Class)representationClass forMIMEType:(NSString *)MIMEType;
+    */
+    HRESULT registerViewClass([in] IWebDocumentView* view, [in] IWebDocumentRepresentation* representation, [in] BSTR forMIMEType);
+}\r
+\r
+/*\r
+    @interface WebView (WebIBActions) <NSUserInterfaceValidations>
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(8F0E3A30-B924-44f8-990A-1AE61ED6C632),\r
+    pointer_default(unique)\r
+]\r
+interface IWebIBActions : IUnknown\r
+{\r
+    /*\r
+        - (IBAction)takeStringURLFrom:(id)sender;
+    */
+    HRESULT takeStringURLFrom([in] IUnknown* sender);
+
+    /*
+        - (IBAction)stopLoading:(id)sender;
+    */
+    HRESULT stopLoading([in] IUnknown* sender);
+
+    /*
+        - (IBAction)reload:(id)sender;
+    */
+    HRESULT reload([in] IUnknown* sender);
+
+    /*
+        - (BOOL)canGoBack;
+    */
+    HRESULT canGoBack([in] IUnknown* sender, [out, retval] BOOL* result);
+
+    /*
+        - (IBAction)goBack:(id)sender;
+    */
+    HRESULT goBack([in] IUnknown* sender);
+
+    /*
+        - (BOOL)canGoForward;
+    */
+    HRESULT canGoForward([in] IUnknown* sender, [out, retval] BOOL* result);
+
+    /*
+        - (IBAction)goForward:(id)sender;
+    */
+    HRESULT goForward([in] IUnknown* sender);
+
+    /*
+        - (BOOL)canMakeTextLarger;
+    */
+    HRESULT canMakeTextLarger([in] IUnknown* sender, [out, retval] BOOL* result);
+
+    /*
+        - (IBAction)makeTextLarger:(id)sender;
+    */
+    HRESULT makeTextLarger([in] IUnknown* sender);
+
+    /*
+        - (BOOL)canMakeTextSmaller;
+    */
+    HRESULT canMakeTextSmaller([in] IUnknown* sender, [out, retval] BOOL* result);
+
+    /*
+        - (IBAction)makeTextSmaller:(id)sender;
+    */
+    HRESULT makeTextSmaller([in] IUnknown* sender);
+}
+\r
+/*\r
+    @interface WebView (WebViewCSS)
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(ADF68A8C-336F-405c-A053-3D11A9D5B092),\r
+    pointer_default(unique)\r
+]\r
+interface IWebViewCSS : IUnknown\r
+{
+    /*
+        - (DOMCSSStyleDeclaration *)computedStyleForElement:(DOMElement *)element pseudoElement:(NSString *)pseudoElement;
+    */
+    HRESULT computedStyleForElement([in] IDOMElement* element, [in] BSTR pseudoElement, [out, retval] IDOMCSSStyleDeclaration** style);
+}
+
+/*\r
+    @interface WebView (WebViewEditing)
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(07BDAC9A-19A1-4086-864D-BAD9E0F00D5C),\r
+    pointer_default(unique)\r
+]\r
+interface IWebViewEditing : IUnknown\r
+{
+    /*
+        - (DOMRange *)editableDOMRangeForPoint:(NSPoint)point;
+    */
+    HRESULT editableDOMRangeForPoint([in] LPPOINT point, [out, retval] IDOMRange** range);
+
+    /*
+        - (void)setSelectedDOMRange:(DOMRange *)range affinity:(NSSelectionAffinity)selectionAffinity;
+    */
+    HRESULT setSelectedDOMRange([in] IDOMRange* range, [in] WebSelectionAffinity affinity);
+
+    /*
+        - (DOMRange *)selectedDOMRange;
+    */
+    HRESULT selectedDOMRange([out, retval] IDOMRange** range);
+
+    /*
+        - (NSSelectionAffinity)selectionAffinity;
+    */
+    HRESULT selectionAffinity([out, retval] [out, retval] WebSelectionAffinity* affinity);
+
+    /*
+        - (void)setEditable:(BOOL)flag;
+    */
+    HRESULT setEditable([in] BOOL flag);
+
+    /*
+        - (BOOL)isEditable;
+    */
+    HRESULT isEditable([out, retval] BOOL* isEditable);
+
+    /*
+        - (void)setTypingStyle:(DOMCSSStyleDeclaration *)style;
+    */
+    HRESULT setTypingStyle([in] IDOMCSSStyleDeclaration* style);
+
+    /*
+        - (DOMCSSStyleDeclaration *)typingStyle;
+    */
+    HRESULT typingStyle([out, retval] IDOMCSSStyleDeclaration** style);
+
+    /*
+        - (void)setSmartInsertDeleteEnabled:(BOOL)flag;
+    */
+    HRESULT setSmartInsertDeleteEnabled([in] BOOL flag);
+
+    /*
+        - (BOOL)smartInsertDeleteEnabled;
+    */
+    HRESULT smartInsertDeleteEnabled([in] BOOL enabled);
+
+    /*
+        - (void)setContinuousSpellCheckingEnabled:(BOOL)flag;
+    */
+    HRESULT setContinuousSpellCheckingEnabled([in] BOOL flag);
+
+    /*
+        - (BOOL)isContinuousSpellCheckingEnabled;
+    */
+    HRESULT isContinuousSpellCheckingEnabled([out, retval] BOOL* enabled);
+
+    /*
+        - (WebNSInt)spellCheckerDocumentTag;
+    */
+    HRESULT spellCheckerDocumentTag([out, retval] int* tag);
+
+    /*
+        - (NSUndoManager *)undoManager;
+    */
+    HRESULT undoManager([out, retval] IWebUndoManager* manager);
+
+    /*
+        - (void)setEditingDelegate:(id)delegate;
+    */
+    HRESULT setEditingDelegate([in] IWebViewEditingDelegate* d);
+
+    /*
+        - (id)editingDelegate;
+    */
+    HRESULT editingDelegate([out, retval] IWebViewEditingDelegate** d);
+
+    /*
+        - (DOMCSSStyleDeclaration *)styleDeclarationWithText:(NSString *)text;
+    */
+    HRESULT styleDeclarationWithText([in] BSTR text, [out, retval] IDOMCSSStyleDeclaration** style);
+}
+
+/*\r
+    @interface WebView (WebViewUndoableEditing)
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(639E7121-13C8-4a12-BC18-6E1F3D68F3C3),\r
+    pointer_default(unique)\r
+]\r
+interface IWebViewUndoableEditing : IUnknown\r
+{
+    /*
+        - (void)replaceSelectionWithNode:(DOMNode *)node; 
+    */
+    HRESULT replaceSelectionWithNode([in] IDOMNode* node);
+
+    /*
+        - (void)replaceSelectionWithText:(NSString *)text;    
+    */
+    HRESULT replaceSelectionWithText([in] BSTR text);
+
+    /*
+        - (void)replaceSelectionWithMarkupString:(NSString *)markupString;
+    */
+    HRESULT replaceSelectionWithMarkupString([in] BSTR markupString);
+
+    /*
+        - (void)replaceSelectionWithArchive:(WebArchive *)archive;
+    */
+    HRESULT replaceSelectionWithArchive([in] IWebArchive* archive);
+
+    /*
+        - (void)deleteSelection;    
+    */
+    HRESULT deleteSelection();
+
+    /*
+        - (void)applyStyle:(DOMCSSStyleDeclaration *)style;
+    */
+    HRESULT applyStyle([in] IDOMCSSStyleDeclaration* style);
+}
+
+/*\r
+    @interface WebView (WebViewEditingActions)
+*/
+[\r
+    local,\r
+    object,\r
+    uuid(7E066C42-8E81-4778-888D-D6CC93E27D4C),\r
+    pointer_default(unique)\r
+]\r
+interface IWebViewEditingActions : IUnknown\r
+{
+    /*
+        - (void)copy:(id)sender;
+    */
+    HRESULT copy([in] IUnknown* sender);
+
+    /*
+        - (void)cut:(id)sender;
+    */
+    HRESULT cut([in] IUnknown* sender);
+
+    /*
+        - (void)paste:(id)sender;
+    */
+    HRESULT paste([in] IUnknown* sender);
+
+    /*
+        - (void)copyFont:(id)sender;
+    */
+    HRESULT copyFont([in] IUnknown* sender);
+
+    /*
+        - (void)pasteFont:(id)sender;
+    */
+    HRESULT pasteFont([in] IUnknown* sender);
+
+    /*
+        - (void)delete:(id)sender;
+    */
+    HRESULT delete_([in] IUnknown* sender);
+
+    /*
+        - (void)pasteAsPlainText:(id)sender;
+    */
+    HRESULT pasteAsPlainText([in] IUnknown* sender);
+
+    /*
+        - (void)pasteAsRichText:(id)sender;
+    */
+    HRESULT pasteAsRichText([in] IUnknown* sender);
+
+
+    /*
+        - (void)changeFont:(id)sender;
+    */
+    HRESULT changeFont([in] IUnknown* sender);
+
+    /*
+        - (void)changeAttributes:(id)sender;
+    */
+    HRESULT changeAttributes([in] IUnknown* sender);
+
+    /*
+        - (void)changeDocumentBackgroundColor:(id)sender;
+    */
+    HRESULT changeDocumentBackgroundColor([in] IUnknown* sender);
+
+    /*
+        - (void)changeColor:(id)sender;
+    */
+    HRESULT changeColor([in] IUnknown* sender);
+
+
+    /*
+        - (void)alignCenter:(id)sender;
+    */
+    HRESULT alignCenter([in] IUnknown* sender);
+
+    /*
+        - (void)alignJustified:(id)sender;
+    */
+    HRESULT alignJustified([in] IUnknown* sender);
+
+    /*
+        - (void)alignLeft:(id)sender;
+    */
+    HRESULT alignLeft([in] IUnknown* sender);
+
+    /*
+        - (void)alignRight:(id)sender;
+    */
+    HRESULT alignRight([in] IUnknown* sender);
+
+
+    /*
+        - (void)checkSpelling:(id)sender;
+    */
+    HRESULT checkSpelling([in] IUnknown* sender);
+
+    /*
+        - (void)showGuessPanel:(id)sender;
+    */
+    HRESULT showGuessPanel([in] IUnknown* sender);
+
+    /*
+        - (void)performFindPanelAction:(id)sender;
+    */
+    HRESULT performFindPanelAction([in] IUnknown* sender);
+
+
+    /*
+        - (void)startSpeaking:(id)sender;
+    */
+    HRESULT startSpeaking([in] IUnknown* sender);
+
+    /*
+        - (void)stopSpeaking:(id)sender;
+    */
+    HRESULT stopSpeaking([in] IUnknown* sender);
+}
+
+[\r
+    local,\r
+    object,\r
+    uuid(74C30FE8-C2AB-4fec-A9B1-48153C8AC7D8),\r
+    pointer_default(unique)\r
+]\r
+interface IWebViewExt : IUnknown\r
+{\r
+    HRESULT viewWindow([out, retval] HWND* window);\r
+}\r
diff --git a/WebKit/COM/Interfaces/WebKit.idl b/WebKit/COM/Interfaces/WebKit.idl
new file mode 100644 (file)
index 0000000..6fdc3fd
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+cpp_quote("/*")\r
+cpp_quote(" * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.")\r
+cpp_quote(" *")\r
+cpp_quote(" * Redistribution and use in source and binary forms, with or without")\r
+cpp_quote(" * modification, are permitted provided that the following conditions")\r
+cpp_quote(" * are met:")\r
+cpp_quote(" * 1. Redistributions of source code must retain the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer.")\r
+cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")\r
+cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")\r
+cpp_quote(" *    documentation and/or other materials provided with the distribution.")\r
+cpp_quote(" *")\r
+cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")\r
+cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")\r
+cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")\r
+cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")\r
+cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")\r
+cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")\r
+cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")\r
+cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")\r
+cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")\r
+cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")\r
+cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")\r
+cpp_quote(" */")\r
+\r
+import "oaidl.idl";\r
+import "ocidl.idl";\r
+\r
+import "IWebView.idl";\r
+import "IWebUIDelegate.idl";\r
+import "IWebResourceLoadDelegate.idl";\r
+import "IWebDownload.idl";\r
+import "IWebFrameLoadDelegate.idl";\r
+import "IWebPolicyDelegate.idl";\r
+import "IWebFrame.idl";\r
+import "IWebBackForwardList.idl";\r
+import "IWebHistoryItem.idl";\r
+import "IWebScriptObject.idl";\r
+import "IWebPreferences.idl";\r
+import "IWebDocument.idl";\r
+import "IWebURLRequest.idl";\r
+import "IWebDataSource.idl";\r
+import "IWebURLResponse.idl";\r
+import "IWebURLAuthenticationChallenge.idl";\r
+import "IWebError.idl";\r
+import "IWebMutableURLRequest.idl";\r
+import "IWebArchive.idl";\r
+import "IWebResource.idl";\r
+import "IWebFrameView.idl";\r
+import "DOMHTML.idl";\r
+import "IWebImage.idl";\r
+import "IWebIconDatabase.idl";\r
+\r
+[\r
+    uuid(D3217C21-2D11-450d-9389-06F0BD4D8AD9)\r
+]\r
+library WebKit\r
+{\r
+    [uuid(ED2B13E0-66AB-4cc2-9B9F-5B8F85D9AD1D)]\r
+    coclass WebView {\r
+        interface IWebView;\r
+        interface IWebIBActions;\r
+        interface IWebViewCSS;\r
+        interface IWebViewEditing;\r
+        interface IWebViewUndoableEditing;\r
+        interface IWebViewEditingActions;\r
+    }\r
+\r
+    [uuid(982FE6C0-60BB-4c12-A3D4-0381428CCCB1)]\r
+    coclass WebIconDatabase {\r
+        interface IWebIconDatabase;\r
+    }\r
+\r
+    [uuid(C77FFC11-EE19-4337-92F6-52BF16B0C1A7)]\r
+    coclass WebMutableURLRequest {\r
+        interface IWebMutableURLRequest;\r
+    }\r
+}\r
diff --git a/WebKit/COM/WebBackForwardList.cpp b/WebKit/COM/WebBackForwardList.cpp
new file mode 100644 (file)
index 0000000..92d19bc
--- /dev/null
@@ -0,0 +1,292 @@
+/*
+ * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+\r
+#include "WebKitDLL.h"\r
+#include "WebBackForwardList.h"\r
+\r
+// WebBackForwardList ----------------------------------------------------------------\r
+\r
+WebBackForwardList::WebBackForwardList()\r
+: m_refCount(0)\r
+, m_position(-1)\r
+, m_maximumSize(100) // typically set by browser app\r
+{\r
+    gClassCount++;\r
+}\r
+\r
+WebBackForwardList::~WebBackForwardList()\r
+{\r
+    Vector<WebHistoryItem*>::iterator end = m_list.end();
+    for (Vector<WebHistoryItem*>::iterator it = m_list.begin(); it != end; ++it)
+        (*it)->Release();
+\r
+    gClassCount--;\r
+}\r
+\r
+WebBackForwardList* WebBackForwardList::createInstance()\r
+{\r
+    WebBackForwardList* instance = new WebBackForwardList();\r
+    instance->AddRef();\r
+    return instance;\r
+}\r
+\r
+// IUnknown -------------------------------------------------------------------\r
+\r
+HRESULT STDMETHODCALLTYPE WebBackForwardList::QueryInterface(REFIID riid, void** ppvObject)\r
+{\r
+    *ppvObject = 0;\r
+    if (IsEqualGUID(riid, IID_IUnknown))\r
+        *ppvObject = static_cast<IWebBackForwardList*>(this);\r
+    else if (IsEqualGUID(riid, IID_IWebBackForwardList))\r
+        *ppvObject = static_cast<IWebBackForwardList*>(this);\r
+    else\r
+        return E_NOINTERFACE;\r
+\r
+    AddRef();\r
+    return S_OK;\r
+}\r
+\r
+ULONG STDMETHODCALLTYPE WebBackForwardList::AddRef(void)\r
+{\r
+    return ++m_refCount;\r
+}\r
+\r
+ULONG STDMETHODCALLTYPE WebBackForwardList::Release(void)\r
+{\r
+    ULONG newRef = --m_refCount;\r
+    if (!newRef)\r
+        delete(this);\r
+\r
+    return newRef;\r
+}\r
+\r
+// IWebBackForwardList ---------------------------------------------------------\r
+\r
+HRESULT STDMETHODCALLTYPE WebBackForwardList::addItem( \r
+    /* [in] */ IWebHistoryItem* item)\r
+{\r
+    if (!m_maximumSize)\r
+        return S_FALSE;\r
+\r
+    if (!item)\r
+        return E_FAIL;\r
+\r
+    // Toss anything in the forward list
+    unsigned int end = (unsigned int) m_list.size();
+    unsigned int clearItem = m_position + 1;
+    if (clearItem < end) {
+        Vector<WebHistoryItem*>::iterator it = &m_list.at(clearItem);
+        for (unsigned int i=clearItem; i<end; i++) {\r
+            (*it)->Release();\r
+            m_list.remove(clearItem);\r
+        }\r
+    }
+
+    // Toss the first item if the list is getting too big, as long as we're not using it
+    if (m_list.size() == m_maximumSize && m_position != 0) {
+        m_list.remove(0);
+        m_position--;
+    }
+\r
+    m_position++;\r
+    m_list.append(static_cast<WebHistoryItem*>(item));\r
+    item->AddRef();\r
+    return S_OK;\r
+}\r
+\r
+HRESULT STDMETHODCALLTYPE WebBackForwardList::goBack( void)\r
+{\r
+    if (m_position < 1)\r
+        return E_FAIL;\r
+\r
+    m_position--;\r
+\r
+    return S_OK;\r
+}\r
+\r
+HRESULT STDMETHODCALLTYPE WebBackForwardList::goForward( void)\r
+{\r
+    if (m_position >= (int)m_list.size()-1)\r
+        return E_FAIL;\r
+\r
+    m_position++;\r
+\r
+    return S_OK;\r
+}\r
+\r
+HRESULT STDMETHODCALLTYPE WebBackForwardList::goTo