1 /* 2 * Copyright (c) 2022 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef OHOS_NWEB_NWEB_C_API_H 17 #define OHOS_NWEB_NWEB_C_API_H 18 19 #include <stddef.h> 20 #include <stdint.h> 21 #include <memory> 22 #include <string> 23 24 #ifdef __cplusplus 25 extern "C" { 26 #endif // __cplusplus 27 28 #define NWEB_EXPORT __attribute__((visibility("default"))) 29 30 enum NWebDownloadItemState { 31 IN_PROGRESS = 0, 32 COMPLETE, 33 CANCELED, 34 INTERRUPTED, 35 PENDING, 36 PAUSED, 37 MAX_DOWNLOAD_STATE, 38 }; 39 40 41 typedef struct NWebDownloadDelegateCallback WebDownloadDelegateCallback; 42 typedef struct NWebBeforeDownloadCallbackWrapper WebBeforeDownloadCallbackWrapper; 43 typedef struct NWebDownloadItemCallbackWrapper WebDownloadItemCallbackWrapper; 44 typedef struct NWebDownloadItem NWebDownloadItem; 45 46 typedef void (*OnDownloadBeforeStart)(NWebDownloadItem *downloadItem, WebBeforeDownloadCallbackWrapper *wrapper); 47 typedef void (*OnDownloadDidUpdate)(NWebDownloadItem *downloadItem, WebDownloadItemCallbackWrapper *wrapper); 48 49 // / WebDownloader functions. 50 NWEB_EXPORT void WebDownloadManager_PutDownloadCallback(WebDownloadDelegateCallback *callback); 51 52 NWEB_EXPORT void WebDownloader_StartDownload(int32_t nwebId, const char* url); 53 54 NWEB_EXPORT void WebDownloader_SetDownloadBeforeStart(WebDownloadDelegateCallback *callback, OnDownloadBeforeStart fun); 55 56 NWEB_EXPORT void WebDownloader_SetDownloadDidUpdate(WebDownloadDelegateCallback *callback, OnDownloadDidUpdate fun); 57 58 NWEB_EXPORT void WebDownloader_ResumeDownloadStatic(const NWebDownloadItem *downloadItem); 59 60 NWEB_EXPORT void WebDownloader_CreateDownloadDelegateCallback(WebDownloadDelegateCallback **callback); 61 62 NWEB_EXPORT void WebDownload_Continue(const WebBeforeDownloadCallbackWrapper *wrapper, const char *downloadPath); 63 64 NWEB_EXPORT void WebDownload_CancelBeforeDownload(const WebBeforeDownloadCallbackWrapper *wrapper); 65 66 NWEB_EXPORT void WebDownload_PauseBeforeDownload(const WebBeforeDownloadCallbackWrapper *wrapper); 67 68 NWEB_EXPORT void WebDownload_ResumeBeforeDownload(const WebBeforeDownloadCallbackWrapper *wrapper); 69 70 NWEB_EXPORT void WebDownload_Cancel(const WebDownloadItemCallbackWrapper *wrapper); 71 72 NWEB_EXPORT void WebDownload_Pause(const WebDownloadItemCallbackWrapper *wrapper); 73 74 NWEB_EXPORT void WebDownload_Resume(const WebDownloadItemCallbackWrapper *wrapper); 75 76 NWEB_EXPORT NWebDownloadItemState WebDownload_GetItemState(int32_t nwebId, long downloadItemId); 77 78 NWEB_EXPORT NWebDownloadItemState WebDownload_GetItemStateByGuid(const std::string& guid); 79 80 NWEB_EXPORT void WebDownloadItem_CreateWebDownloadItem(NWebDownloadItem **downloadItem); 81 82 NWEB_EXPORT void WebDownloadItem_Destroy(NWebDownloadItem *downloadItem); 83 84 NWEB_EXPORT void WebDownloadItem_SetFullPath(NWebDownloadItem *downloadItem, const char *fullPath); 85 86 NWEB_EXPORT void WebDownloadItem_SetReceivedBytes(NWebDownloadItem *downloadItem, int64_t receivedBytes); 87 88 NWEB_EXPORT void WebDownloadItem_SetTotalBytes(NWebDownloadItem *downloadItem, int64_t totalBytes); 89 90 NWEB_EXPORT void WebDownloadItem_SetETag(NWebDownloadItem *downloadItem, const char *etag); 91 92 NWEB_EXPORT void WebDownloadItem_SetLastModified(NWebDownloadItem *downloadItem, const char *lastModified); 93 94 NWEB_EXPORT void WebDownloadItem_SetMimeType(NWebDownloadItem *downloadItem, const char *mimeType); 95 96 NWEB_EXPORT void WebDownloadItem_SetUrl(NWebDownloadItem *downloadItem, const char *url); 97 98 NWEB_EXPORT void WebDownloadItem_SetReceivedSlices(NWebDownloadItem *downloadItem, const char *receivedSlices); 99 100 NWEB_EXPORT void WebDownloadItem_SetGuid(NWebDownloadItem *downloadItem, const char *guid); 101 102 NWEB_EXPORT char *WebDownloadItem_Guid(const NWebDownloadItem *downloadItem); 103 104 NWEB_EXPORT long WebDownloadItem_GetDownloadItemId(const NWebDownloadItem *downloadItem); 105 106 NWEB_EXPORT NWebDownloadItemState WebDownloadItem_GetState(const NWebDownloadItem *downloadItem); 107 108 NWEB_EXPORT int WebDownloadItem_CurrentSpeed(const NWebDownloadItem *downloadItem); 109 110 NWEB_EXPORT int WebDownloadItem_PercentComplete(const NWebDownloadItem *downloadItem); 111 112 NWEB_EXPORT int64_t WebDownloadItem_TotalBytes(const NWebDownloadItem *downloadItem); 113 114 NWEB_EXPORT int64_t WebDownloadItem_ReceivedBytes(const NWebDownloadItem *downloadItem); 115 116 NWEB_EXPORT char *WebDownloadItem_FullPath(const NWebDownloadItem *downloadItem); 117 118 NWEB_EXPORT char *WebDownloadItem_Url(const NWebDownloadItem *downloadItem); 119 120 NWEB_EXPORT char *WebDownloadItem_OriginalUrl(const NWebDownloadItem *downloadItem); 121 122 NWEB_EXPORT char *WebDownloadItem_SuggestedFileName(const NWebDownloadItem *downloadItem); 123 124 NWEB_EXPORT char *WebDownloadItem_ContentDisposition(const NWebDownloadItem *downloadItem); 125 126 NWEB_EXPORT char *WebDownloadItem_ETag(const NWebDownloadItem *downloadItem); 127 128 NWEB_EXPORT char *WebDownloadItem_MimeType(const NWebDownloadItem *downloadItem); 129 130 NWEB_EXPORT bool WebDownloadItem_IsPaused(const NWebDownloadItem *downloadItem); 131 132 NWEB_EXPORT char *WebDownloadItem_Method(const NWebDownloadItem *downloadItem); 133 134 NWEB_EXPORT int WebDownloadItem_LastErrorCode(const NWebDownloadItem *downloadItem); 135 136 NWEB_EXPORT char *WebDownloadItem_ReceivedSlices(const NWebDownloadItem *downloadItem); 137 138 NWEB_EXPORT char *WebDownloadItem_LastModified(const NWebDownloadItem *downloadItem); 139 140 NWEB_EXPORT int WebDownloadItem_NWebId(const NWebDownloadItem *downloadItem); 141 142 NWEB_EXPORT void DestroyBeforeDownloadCallbackWrapper(WebBeforeDownloadCallbackWrapper *wrapper); 143 144 NWEB_EXPORT void DestroyDownloadItemCallbackWrapper(WebDownloadItemCallbackWrapper *wrapper); 145 146 #ifdef __cplusplus 147 } 148 #endif // __cplusplus 149 150 #endif // OHOS_NWEB_NWEB_C_API_H 151