05ec26ee36bd0f2f16a49146eca0e4ea67138a43
[WebKit-https.git] / WebKit / win / WebError.h
1 /*
2  * Copyright (C) 2007 Apple Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #ifndef WebError_h
27 #define WebError_h
28
29 #include "IWebError.h"
30
31 #pragma warning(push, 0)
32 #include <WebCore/COMPtr.h>
33 #include <WebCore/ResourceError.h>
34 #pragma warning(pop)
35
36 class WebError : public IWebError {
37 public:
38     static WebError* createInstance(const WebCore::ResourceError&, IPropertyBag* userInfo = 0);
39 protected:
40     WebError(const WebCore::ResourceError&, IPropertyBag* userInfo);
41     ~WebError();
42
43 public:
44     // IUnknown
45     virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
46     virtual ULONG STDMETHODCALLTYPE AddRef(void);
47     virtual ULONG STDMETHODCALLTYPE Release(void);
48
49     // IWebError
50     virtual HRESULT STDMETHODCALLTYPE init( 
51         /* [in] */ BSTR domain,
52         /* [in] */ int code,
53         /* [in] */ BSTR url);
54
55     virtual HRESULT STDMETHODCALLTYPE code( 
56         /* [retval][out] */ int *result);
57         
58     virtual HRESULT STDMETHODCALLTYPE domain( 
59         /* [retval][out] */ BSTR *result);
60         
61     virtual HRESULT STDMETHODCALLTYPE localizedDescription( 
62         /* [retval][out] */ BSTR *result);
63         
64     virtual HRESULT STDMETHODCALLTYPE localizedFailureReason( 
65         /* [retval][out] */ BSTR *result);
66         
67     virtual HRESULT STDMETHODCALLTYPE localizedRecoveryOptions( 
68         /* [retval][out] */ IEnumVARIANT **result);
69         
70     virtual HRESULT STDMETHODCALLTYPE localizedRecoverySuggestion( 
71         /* [retval][out] */ BSTR *result);
72        
73     virtual HRESULT STDMETHODCALLTYPE recoverAttempter( 
74         /* [retval][out] */ IUnknown **result);
75         
76     virtual HRESULT STDMETHODCALLTYPE userInfo( 
77         /* [retval][out] */ IPropertyBag **result);
78
79     virtual HRESULT STDMETHODCALLTYPE failingURL( 
80         /* [retval][out] */ BSTR *result);
81
82     virtual HRESULT STDMETHODCALLTYPE isPolicyChangeError( 
83         /* [retval][out] */ BOOL *result);
84
85     const WebCore::ResourceError& resourceError() const;
86
87 private:
88     ULONG m_refCount;
89     COMPtr<IPropertyBag> m_userInfo;
90     WebCore::ResourceError m_error;
91 };
92
93 #endif