/*
 * Copyright (C) 2006, 2007 Apple 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. 
 */

cpp_quote("/*")
cpp_quote(" * Copyright (C) 2006, 2007 Apple Inc.  All rights reserved.")
cpp_quote(" *")
cpp_quote(" * Redistribution and use in source and binary forms, with or without")
cpp_quote(" * modification, are permitted provided that the following conditions")
cpp_quote(" * are met:")
cpp_quote(" * 1. Redistributions of source code must retain the above copyright")
cpp_quote(" *    notice, this list of conditions and the following disclaimer.")
cpp_quote(" * 2. Redistributions in binary form must reproduce the above copyright")
cpp_quote(" *    notice, this list of conditions and the following disclaimer in the")
cpp_quote(" *    documentation and/or other materials provided with the distribution.")
cpp_quote(" *")
cpp_quote(" * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY")
cpp_quote(" * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE")
cpp_quote(" * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR")
cpp_quote(" * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR")
cpp_quote(" * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,")
cpp_quote(" * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,")
cpp_quote(" * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR")
cpp_quote(" * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY")
cpp_quote(" * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT")
cpp_quote(" * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE")
cpp_quote(" * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ")
cpp_quote(" */")

import "oaidl.idl";
import "ocidl.idl";

import "IWebTextRenderer.idl";
import "IWebView.idl";
import "IWebViewPrivate.idl";
import "IWebUIDelegate.idl";
import "IWebResourceLoadDelegate.idl";
import "IWebDatabaseManager.idl";
import "IWebDownload.idl";
import "IWebFrameLoadDelegate.idl";
import "IWebPolicyDelegate.idl";
import "IWebFrame.idl";
import "IWebBackForwardList.idl";
import "IWebHistoryItem.idl";
import "IWebScriptObject.idl";
import "IWebPreferences.idl";
import "IWebDocument.idl";
import "IWebURLRequest.idl";
import "IWebDataSource.idl";
import "IWebCookieManager.idl";
import "IWebURLResponse.idl";
import "IWebURLAuthenticationChallenge.idl";
import "IWebError.idl";
import "IWebMutableURLRequest.idl";
import "IWebArchive.idl";
import "IWebResource.idl";
import "IWebFrameView.idl";
import "DOMHTML.idl";
import "IWebIconDatabase.idl";
import "IWebNotificationCenter.idl";
import "IWebNotificationObserver.idl";
import "IWebHistory.idl";
import "IWebCache.idl";
import "IWebJavaScriptCollector.idl";
import "IWebKitStatistics.idl";
import "IWebScrollBarPrivate.idl";
import "IWebScriptDebugServer.idl";

[
#if __PRODUCTION__
    uuid(2a748656-625d-4207-b29f-40c95bfeb3a9),
    helpstring("WebKit 525.2 Type Library"),
#else
    uuid(76E5F7F0-18FD-48a2-B549-1159435B513B),
    helpstring("OpenSourceWebKit 525.2 Type Library"),
#endif
    version(525.2)
]
#if __PRODUCTION__
library WebKit
#else
library OpenSourceWebKit
#endif
{
    // TLib : OLE Automation : {00020430-0000-0000-C000-000000000046}
    importlib("STDOLE2.TLB");

#if __PRODUCTION__
    [uuid(d6bca079-f61c-4e1e-b453-32a0477d02e3)]
#else
    [uuid(4FF47097-3FEA-4b47-AC0E-90725C546490)]
#endif
    coclass WebView {
        [default] interface IWebView;
        interface IWebIBActions;
        interface IWebViewCSS;
        interface IWebViewEditing;
        interface IWebViewUndoableEditing;
        interface IWebViewEditingActions;
        interface IWebNotificationObserver;
        interface IWebViewPrivate;
    }

#if __PRODUCTION__
    [uuid(66827ec1-3aef-4241-bac5-f776b44f030f)]
#else
    [uuid(BE8EE509-9894-44ba-9E2F-E29780BCB25C)]
#endif
    coclass WebIconDatabase {
        [default] interface IWebIconDatabase;
    }

#if __PRODUCTION__
    [uuid(a062ecc3-bb1b-4694-a569-f59e0ad6be0c)]
#else
    [uuid(97F3EB52-9EAC-4062-82E1-E5C1E7789DEE)]
#endif
    coclass WebMutableURLRequest {
        [default] interface IWebMutableURLRequest;
    }

#if __PRODUCTION__
    [uuid(ba590766-0a6f-46c7-b96e-743490d94cb7)]
#else
    [uuid(99B9D99A-060D-4695-8C8F-3AB53156054C)]
#endif
    coclass WebNotificationCenter {
        [default] interface IWebNotificationCenter;
    }

#if __PRODUCTION__
    [uuid(a4b9b45d-949f-4c8c-9b92-6fbfcc1caaa2)]
#else
    [uuid(4D043991-E844-48b0-8EF7-85FE1AB8829E)]
#endif
    coclass WebHistory {
        [default] interface IWebHistory;
    }

#if __PRODUCTION__
    [uuid(dd653964-4d37-4fb2-9cb6-6a9a97719332)]
#else
    [uuid(97795891-293D-4855-800E-E21987568537)]
#endif
    coclass CFDictionaryPropertyBag {
        [default] interface IPropertyBag;
    }

#if __PRODUCTION__
    [uuid(6be190e9-1725-4e4a-88db-6a9fe242c9e5)]
#else
    [uuid(82F6400A-3CD0-40a3-8EA1-7A23B26D6153)]
#endif
    coclass WebHistoryItem {
        [default] interface IWebHistoryItem;
    }

#if __PRODUCTION__
    [uuid(f71071fd-a51b-4b69-9eb6-44374405e80c)]
#else
    [uuid(CB0111F6-168B-467e-8613-23AB37D0493E)]
#endif
    coclass WebCache {
        [default] interface IWebCache;
    }

#if __PRODUCTION__
    [uuid(1820D883-42FE-4b78-88C8-5456BB19D224)]
#else
    [uuid(5D911A44-4316-4a02-A2B5-BAE7036357B9)]
#endif
    coclass WebJavaScriptCollector {
        [default] interface IWebJavaScriptCollector;
    }

#if __PRODUCTION__
    [uuid(67B89F90-F778-438b-ABBF-34D1ACBF8651)]
#else
    [uuid(CC914F49-2385-4943-9B3F-E17501383F5B)]
#endif
    coclass WebPreferences {
        [default] interface IWebPreferences;
    }

#if __PRODUCTION__
    [uuid(E93AA8D7-F362-4a4a-A95D-325906BEB5F0)]
#else
    [uuid(87689DC6-5F8C-4194-90D5-CE6083837AB5)]
#endif
    coclass WebKitStatistics {
        [default] interface IWebKitStatistics;
    }

#if __PRODUCTION__
    [uuid(6C6AF3F9-36B4-4bf7-8BDE-74DCD4AD75A4)]
#else
    [uuid(319B38AC-2794-47fa-AE18-A14A7576A6D8)]
#endif
    coclass WebError {
        [default] interface IWebError;
    }

#if __PRODUCTION__
    [uuid(7433F53B-7FE9-484a-9432-72909457A646)]
#else
    [uuid(BCF988AF-9A2F-403f-A1D8-BD815C46401D)]
#endif
    coclass WebURLCredential {
        [default] interface IWebURLCredential;
    }

#if __PRODUCTION__
    [uuid(C0F98BD9-3B1C-413d-904A-E2D1453EAF1F)]
#else
    [uuid(3FE547FC-4EC1-4062-9DE2-9FC3DA0A08FF)]
#endif
    coclass WebDownload {
        [default] interface IWebDownload;
    }

#if __PRODUCTION__
    [uuid(2FB5499A-BB5D-4469-8517-789FEC8FD9BA)]
#else
    [uuid(20B9702D-B41F-449b-84FE-3E32DB5D775F)]
#endif
    coclass WebURLRequest {
        [default] interface IWebURLRequest;
    }

#if __PRODUCTION__
    [uuid(F366A6E8-E43C-4fd4-AAB0-8E6E79C73E6E)]
#else
    [uuid(41EFBA9A-63E4-4c49-A012-CCC48694D7A5)]
#endif
    coclass WebURLProtectionSpace {
        [default] interface IWebURLProtectionSpace;
    }

#if __PRODUCTION__
    [uuid(24A53AD5-AA9F-44e6-AA22-2C7C250B661A)]
#else
    [uuid(0F34FB95-301F-4ea1-943E-B5E6E6D94121)]
#endif
    coclass WebScrollBar {
        [default] interface IWebScrollBarPrivate;
    }

#if __PRODUCTION__
    [uuid(715636C4-59E7-4b85-BBC5-B555888787D7)]
#else
    [uuid(5BE39DBA-5887-4a69-9157-EBEE96BA3309)]
#endif
    coclass WebScriptDebugServer {
        [default] interface IWebScriptDebugServer;
    }

#if __PRODUCTION__
    [uuid(AB201196-8DD2-4d45-AEBD-029B6A37AA27)]
#else
    [uuid(EA2FCB14-072B-48b5-B9B5-1BBEFBABC7BC)]
#endif
    coclass WebURLResponse {
        [default] interface IWebURLResponse;
    }

#if __PRODUCTION__
    [uuid(24040cd6-aff4-4a51-9c8b-71539580ee76)]
#else
    [uuid(1fbff564-5ff4-484f-b3d9-217483f9f5fc)]
#endif
    coclass WebTextRenderer {
        [default] interface IWebTextRenderer;
    }

#if __PRODUCTION__
    [uuid(C2A1BFC2-1E7C-49fe-8592-D0C7FB440BC0)]
#else
    [uuid(1F7B8CEE-5D74-4974-8A47-C5733B422644)]
#endif
    coclass WebDatabaseManager {
        [default] interface IWebDatabaseManager;
    }

#if __PRODUCTION__
    [uuid(3F35F332-BB2B-49b3-AEDD-27B317687E07)]
#else
    [uuid(38A38A69-E8C7-480b-9AD3-CB75F7ADDF46)]
#endif
    coclass WebCookieManager{
        [default] interface IWebCookieManager;
    }
}
