1 /* 2 * Copyright (c) 2024 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 NWEB_NAPI_WEB_SCHEME_HANDLER_REQUEST_H 17 #define NWEB_NAPI_WEB_SCHEME_HANDLER_REQUEST_H 18 19 #include "napi/native_api.h" 20 #include "napi/native_common.h" 21 #include "napi/native_node_api.h" 22 23 namespace OHOS { 24 namespace NWeb { 25 enum class WebResourceType { 26 /* These constants match their equivalents in Chromium's ResourceType and should not be renumbered. */ 27 MAIN_FRAME = 0, 28 SUB_FRAME, 29 STYLE_SHEET, 30 SCRIPT, 31 IMAGE, 32 FONT_RESOURCE, 33 SUB_RESOURCE, 34 OBJECT, 35 MEDIA, 36 WORKER, 37 SHARED_WORKER, 38 PREFETCH, 39 FAVICON, 40 XHR, 41 PING, 42 SERVICE_WORKER, 43 CSP_REPORT, 44 PLUGIN_RESOURCE, 45 NAVIGATION_PRELOAD_MAIN_FRAME = 19, 46 NAVIGATION_PRELOAD_SUB_FRAME = 20 47 }; 48 const std::string WEB_SCHEME_HANDLER = "WebSchemeHandler"; 49 const std::string WEB_SCHEME_HANDLER_REQUEST = "WebSchemeHandlerRequest"; 50 const std::string WEB_SCHEME_HANDLER_RESPONSE = "WebSchemeHandlerResponse"; 51 const std::string WEB_RESOURCE_HANDLER = "WebResourceHandler"; 52 const std::string WEB_HTTP_BODY_STREAM = "WebHttpBodyStream"; 53 const std::string WEB_NET_ERROR_CODE = "WebNetErrorCode"; 54 class NapiWebSchemeHandlerRequest { 55 public: 56 NapiWebSchemeHandlerRequest() = default; 57 ~NapiWebSchemeHandlerRequest() = default; 58 59 static napi_value Init(napi_env env, napi_value exports); 60 static void ExportWebSchemeHandlerRequestClass(napi_env, napi_value* exportsPointer); 61 static napi_status DefineProperties(napi_env env, napi_value* object); 62 63 static napi_value JS_Constructor(napi_env env, napi_callback_info cbinfo); 64 static napi_value JS_GetHeader(napi_env env, napi_callback_info cbinfo); 65 static napi_value JS_GetRequestUrl(napi_env env, napi_callback_info cbinfo); 66 static napi_value JS_GetRequestMethod(napi_env env, napi_callback_info cbinfo); 67 static napi_value JS_GetReferrer(napi_env env, napi_callback_info cbinfo); 68 static napi_value JS_IsRedirect(napi_env env, napi_callback_info cbinfo); 69 static napi_value JS_IsMainFrame(napi_env env, napi_callback_info cbinfo); 70 static napi_value JS_HasGesture(napi_env env, napi_callback_info cbinfo); 71 static napi_value JS_HttpBodyStream(napi_env env, napi_callback_info cbinfo); 72 static napi_value JS_GetRequestResourceType(napi_env env, napi_callback_info cbinfo); 73 static napi_value JS_GetFrameUrl(napi_env env, napi_callback_info cbinfo); 74 75 private: 76 static napi_status ExportEnumWebResourceType(napi_env env, napi_value* value); 77 }; 78 79 class NapiWebSchemeHandlerResponse { 80 public: 81 NapiWebSchemeHandlerResponse() = default; 82 ~NapiWebSchemeHandlerResponse() = default; 83 84 static napi_value Init(napi_env env, napi_value exports); 85 static void ExportWebSchemeHandlerResponseClass(napi_env, napi_value* exportsPointer); 86 87 static napi_value JS_Constructor(napi_env env, napi_callback_info cbinfo); 88 static napi_value JS_GetUrl(napi_env env, napi_callback_info cbinfo); 89 static napi_value JS_SetUrl(napi_env env, napi_callback_info cbinfo); 90 static napi_value JS_GetStatus(napi_env env, napi_callback_info cbinfo); 91 static napi_value JS_SetStatus(napi_env env, napi_callback_info cbinfo); 92 static napi_value JS_GetStatusText(napi_env env, napi_callback_info cbinfo); 93 static napi_value JS_SetStatusText(napi_env env, napi_callback_info cbinfo); 94 static napi_value JS_GetMimeType(napi_env env, napi_callback_info cbinfo); 95 static napi_value JS_SetMimeType(napi_env env, napi_callback_info cbinfo); 96 static napi_value JS_GetEncoding(napi_env env, napi_callback_info cbinfo); 97 static napi_value JS_SetEncoding(napi_env env, napi_callback_info cbinfo); 98 static napi_value JS_GetHeaderByName(napi_env env, napi_callback_info cbinfo); 99 static napi_value JS_SetHeaderByName(napi_env env, napi_callback_info cbinfo); 100 static napi_value JS_GetNetErrorCode(napi_env env, napi_callback_info cbinfo); 101 static napi_value JS_SetNetErrorCode(napi_env env, napi_callback_info cbinfo); 102 }; 103 104 class NapiWebSchemeHandler { 105 public: 106 NapiWebSchemeHandler() = default; 107 ~NapiWebSchemeHandler() = default; 108 109 static napi_value Init(napi_env env, napi_value exports); 110 static napi_value JS_Constructor(napi_env env, napi_callback_info info); 111 static napi_value JS_RequestStart(napi_env env, napi_callback_info info); 112 static napi_value JS_RequestStop(napi_env env, napi_callback_info info); 113 }; 114 115 class NapiWebResourceHandler { 116 public: 117 NapiWebResourceHandler() = default; 118 ~NapiWebResourceHandler() = default; 119 120 static napi_value Init(napi_env env, napi_value exports); 121 static void ExportWebResourceHandlerClass(napi_env, napi_value* exportsPointer); 122 static napi_status DefineProperties(napi_env env, napi_value* object); 123 124 static napi_value JS_Constructor(napi_env env, napi_callback_info info); 125 static napi_value JS_DidReceiveResponse(napi_env env, napi_callback_info info); 126 static napi_value JS_DidReceiveResponseBody(napi_env env, napi_callback_info info); 127 static napi_value JS_DidFinish(napi_env env, napi_callback_info info); 128 static napi_value JS_DidFailWithError(napi_env env, napi_callback_info info); 129 }; 130 131 class NapiWebHttpBodyStream { 132 public: 133 NapiWebHttpBodyStream() = default; 134 ~NapiWebHttpBodyStream() = default; 135 136 static napi_value Init(napi_env env, napi_value exports); 137 static void ExportWebHttpBodyStreamClass(napi_env, napi_value* exportsPointer); 138 static napi_status DefineProperties(napi_env env, napi_value* object); 139 140 static napi_value JS_Constructor(napi_env env, napi_callback_info info); 141 static napi_value JS_Initialize(napi_env env, napi_callback_info info); 142 static napi_value JS_Read(napi_env env, napi_callback_info info); 143 static napi_value JS_GetSize(napi_env env, napi_callback_info info); 144 static napi_value JS_GetPostion(napi_env env, napi_callback_info info); 145 static napi_value JS_IsChunked(napi_env env, napi_callback_info info); 146 static napi_value JS_IsEof(napi_env env, napi_callback_info info); 147 static napi_value JS_IsInMemory(napi_env env, napi_callback_info info); 148 }; 149 } // namespace NWeb 150 } // namespace OHOS 151 152 #endif // NWEB_NAPI_WEB_SCHEME_HANDLER_REQUEST_H 153