cb9d68e1caf5e90d7d545c637f8e459a5e993364
[WebKit-https.git] / Source / WebKit2 / UIProcess / API / efl / ewk_error.cpp
1 /*
2  * Copyright (C) 2012 Intel Corporation. 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 INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #include "config.h"
27 #include "ewk_error.h"
28
29 #include "ErrorsEfl.h"
30 #include "WKString.h"
31 #include "WKURL.h"
32 #include "ewk_error_private.h"
33 #include <WKAPICast.h>
34 #include <wtf/text/CString.h>
35
36 using namespace WebCore;
37 using namespace WebKit;
38
39 EwkError::EwkError(WKErrorRef errorRef)
40     : m_wkError(errorRef)
41     , m_url(AdoptWK, WKErrorCopyFailingURL(errorRef))
42     , m_description(AdoptWK, WKErrorCopyLocalizedDescription(errorRef))
43 { }
44
45 const char* EwkError::url() const
46 {
47     return m_url;
48 }
49
50 const char* EwkError::description() const
51 {
52     return m_description;
53 }
54
55 String EwkError::domain() const
56 {
57     WKRetainPtr<WKStringRef> wkDomain(AdoptWK, WKErrorCopyDomain(m_wkError.get()));
58     return toWTFString(wkDomain.get());
59 }
60
61 int EwkError::errorCode() const
62 {
63     return WKErrorGetErrorCode(m_wkError.get());
64 }
65
66 bool EwkError::isCancellation() const
67 {
68     return toImpl(m_wkError.get())->platformError().isCancellation();
69 }
70
71 Ewk_Error_Type ewk_error_type_get(const Ewk_Error* error)
72 {
73     EINA_SAFETY_ON_NULL_RETURN_VAL(error, EWK_ERROR_TYPE_NONE);
74
75     String errorDomain = error->domain();
76
77     if (errorDomain == errorDomainNetwork)
78         return EWK_ERROR_TYPE_NETWORK;
79     if (errorDomain == errorDomainPolicy)
80         return EWK_ERROR_TYPE_POLICY;
81     if (errorDomain == errorDomainPlugin)
82         return EWK_ERROR_TYPE_PLUGIN;
83     if (errorDomain == errorDomainDownload)
84         return EWK_ERROR_TYPE_DOWNLOAD;
85     if (errorDomain == errorDomainPrint)
86         return EWK_ERROR_TYPE_PRINT;
87     return EWK_ERROR_TYPE_INTERNAL;
88 }
89
90 const char* ewk_error_url_get(const Ewk_Error* error)
91 {
92     EINA_SAFETY_ON_NULL_RETURN_VAL(error, 0);
93
94     return error->url();
95 }
96
97 int ewk_error_code_get(const Ewk_Error* error)
98 {
99     EINA_SAFETY_ON_NULL_RETURN_VAL(error, 0);
100
101     return error->errorCode();
102 }
103
104 const char* ewk_error_description_get(const Ewk_Error* error)
105 {
106     EINA_SAFETY_ON_NULL_RETURN_VAL(error, 0);
107
108     return error->description();
109 }
110
111 Eina_Bool ewk_error_cancellation_get(const Ewk_Error* error)
112 {
113     EINA_SAFETY_ON_NULL_RETURN_VAL(error, false);
114
115     return error->isCancellation();
116 }