10826e83eSopenharmony_ci/* 20826e83eSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 30826e83eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 40826e83eSopenharmony_ci * you may not use this file except in compliance with the License. 50826e83eSopenharmony_ci * You may obtain a copy of the License at 60826e83eSopenharmony_ci * 70826e83eSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 80826e83eSopenharmony_ci * 90826e83eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 100826e83eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 110826e83eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 120826e83eSopenharmony_ci * See the License for the specific language governing permissions and 130826e83eSopenharmony_ci * limitations under the License. 140826e83eSopenharmony_ci */ 150826e83eSopenharmony_ci 160826e83eSopenharmony_ci#ifndef NWEB_NAPI_GEOLOCATION_PERMISSION_H 170826e83eSopenharmony_ci#define NWEB_NAPI_GEOLOCATION_PERMISSION_H 180826e83eSopenharmony_ci 190826e83eSopenharmony_ci#include <cstddef> 200826e83eSopenharmony_ci#include <iosfwd> 210826e83eSopenharmony_ci#include <string> 220826e83eSopenharmony_ci 230826e83eSopenharmony_ci#include "napi/native_api.h" 240826e83eSopenharmony_ci#include "napi/native_node_api.h" 250826e83eSopenharmony_ci 260826e83eSopenharmony_cinamespace OHOS { 270826e83eSopenharmony_cinamespace NWeb { 280826e83eSopenharmony_ciclass NapiGeolocationPermission { 290826e83eSopenharmony_cipublic: 300826e83eSopenharmony_ci NapiGeolocationPermission() {} 310826e83eSopenharmony_ci 320826e83eSopenharmony_ci ~NapiGeolocationPermission() = default; 330826e83eSopenharmony_ci 340826e83eSopenharmony_ci static napi_value Init(napi_env env, napi_value exports); 350826e83eSopenharmony_ci 360826e83eSopenharmony_ciprivate: 370826e83eSopenharmony_ci static napi_value ProcessActionByType(napi_env env, napi_callback_info info, int32_t operationType); 380826e83eSopenharmony_ci 390826e83eSopenharmony_ci static napi_value JsAllowGeolocation(napi_env env, napi_callback_info info); 400826e83eSopenharmony_ci 410826e83eSopenharmony_ci static napi_value JsDeleteGeolocation(napi_env env, napi_callback_info info); 420826e83eSopenharmony_ci 430826e83eSopenharmony_ci static napi_value JsDeleteAllGeolocation(napi_env env, napi_callback_info info); 440826e83eSopenharmony_ci 450826e83eSopenharmony_ci static void GetPermissionStateComplete(napi_env env, napi_status status, void *data); 460826e83eSopenharmony_ci 470826e83eSopenharmony_ci static void GetPermissionStatePromiseComplete(napi_env env, napi_status status, void *data); 480826e83eSopenharmony_ci 490826e83eSopenharmony_ci static void ExecuteGetPermissionState(napi_env env, void *data); 500826e83eSopenharmony_ci 510826e83eSopenharmony_ci static napi_value GetPermissionStateAsync(napi_env env, napi_value *argv, 520826e83eSopenharmony_ci const std::string& origin, bool incognitoMode); 530826e83eSopenharmony_ci 540826e83eSopenharmony_ci static napi_value GetPermissionStatePromise(napi_env env, napi_value *argv, 550826e83eSopenharmony_ci const std::string& origin, bool incognitoMode); 560826e83eSopenharmony_ci 570826e83eSopenharmony_ci static napi_value JsGetAccessibleGeolocation(napi_env env, napi_callback_info info); 580826e83eSopenharmony_ci 590826e83eSopenharmony_ci static void GetOriginComplete(napi_env env, napi_status status, void *data); 600826e83eSopenharmony_ci 610826e83eSopenharmony_ci static void GetOriginsPromiseComplete(napi_env env, napi_status status, void *data); 620826e83eSopenharmony_ci 630826e83eSopenharmony_ci static void ExecuteGetOrigins(napi_env env, void *data); 640826e83eSopenharmony_ci 650826e83eSopenharmony_ci static napi_value GetOriginsAsync(napi_env env, napi_value *argv, 660826e83eSopenharmony_ci bool incognitoMode); 670826e83eSopenharmony_ci 680826e83eSopenharmony_ci static napi_value GetOriginsPromise(napi_env env, bool incognitoMode); 690826e83eSopenharmony_ci 700826e83eSopenharmony_ci static napi_value JsGetStoredGeolocation(napi_env env, napi_callback_info info); 710826e83eSopenharmony_ci 720826e83eSopenharmony_ci static napi_value JsConstructor(napi_env env, napi_callback_info info); 730826e83eSopenharmony_ci 740826e83eSopenharmony_ci static bool GetStringPara(napi_env env, napi_value argv, std::string& outValue); 750826e83eSopenharmony_ci 760826e83eSopenharmony_ci static bool GetBooleanPara(napi_env env, napi_value argv, bool& outValue); 770826e83eSopenharmony_ci}; 780826e83eSopenharmony_ci} // namespace NWeb 790826e83eSopenharmony_ci} // namespace OHOS 800826e83eSopenharmony_ci 810826e83eSopenharmony_ci#endif // NWEB_NAPI_GEOLOCATION_PERMISSION_H 82