修改循环定时和权限管理

Signed-off-by: guduhanyan <xuyanjun27@163.com>
This commit is contained in:
liulinna
2022-03-10 23:04:22 +08:00
committed by guduhanyan
parent 37ad5c266b
commit 99533db69a
17 changed files with 65 additions and 42 deletions
+1
View File
@@ -20,6 +20,7 @@ group("time_native_packages") {
deps = [
"etc/init:timeservice.cfg",
"interfaces/kits/js/declaration:time",
"interfaces/innerkits:time_client",
"interfaces/kits/js/napi/system_time:systemtime",
"interfaces/kits/js/napi/system_timer:systemtimer",
"profile:miscservices_time_sa_profiles",
+12 -4
View File
@@ -24,13 +24,11 @@
"ram":"1024KB",
"deps": {
"components": [
"ability_base",
"ability_runtime",
"ability_manager",
"aafwk_standard",
"appexecfwk_standard",
"ans_standard",
"ces_standard",
"distributeddatamgr",
"hisysevent_native",
"hiviewdfx_hilog_native",
"ipc",
"permission_standard",
@@ -57,6 +55,16 @@
],
"header_base":"//base/miscservices/time/interfaces/innerkits/include"
}
},
{
"name": "//base/miscservices/time/interfaces/innerkits:time_client",
"header": {
"header_files": [
"itimer_info.h",
"time_service_client.h"
],
"header_base":"//base/miscservices/time/interfaces/innerkits/include"
}
}
],
"test": [
+4 -2
View File
@@ -32,15 +32,17 @@ ohos_shared_library("systemtime") {
deps = [
"//base/miscservices/time/services:time_service",
"//foundation/aafwk/standard/interfaces/innerkits/base:base",
"//foundation/aafwk/standard/interfaces/innerkits/intent:intent",
"//foundation/aafwk/standard/interfaces/innerkits/want:want",
"//foundation/aafwk/standard/frameworks/kits/ability/native:abilitykit_native",
"//foundation/ace/napi/:ace_napi",
"//utils/native/base:utils",
]
external_deps = [
"ability_base:want",
"ability_runtime:runtime",
"ability_runtime:wantagent_innerkits",
"bundle_framework:appexecfwk_base",
"hiviewdfx_hilog_native:libhilog",
"ipc:ipc_core",
]
@@ -50,6 +50,9 @@ ohos_shared_library("systemtimer") {
deps = [
"//base/miscservices/time/services:time_service",
"//foundation/aafwk/standard/interfaces/innerkits/base:base",
"//foundation/aafwk/standard/interfaces/innerkits/intent:intent",
"//foundation/aafwk/standard/interfaces/innerkits/want:want",
"//foundation/aafwk/standard/frameworks/kits/ability/native:abilitykit_native",
"//foundation/aafwk/standard/interfaces/innerkits/base:base",
"//foundation/ace/napi:ace_napi",
@@ -57,9 +60,8 @@ ohos_shared_library("systemtimer") {
]
external_deps = [
"ability_base:want",
"ability_runtime:runtime",
"ability_runtime:wantagent_innerkits",
"bundle_framework:appexecfwk_base",
"hiviewdfx_hilog_native:libhilog",
"ipc:ipc_core",
]
@@ -18,7 +18,7 @@
#include <string>
#include <vector>
#include "timer_type.h"
#include "want_agent.h"
#include "want_agent_helper.h"
#include "securec.h"
#include "system_timer.h"
@@ -739,6 +739,13 @@ napi_value DestroyTimer(napi_env env, napi_callback_info info)
}
}
napi_value CreateNapiNumber(napi_env env, int32_t objName)
{
napi_value prop = nullptr;
napi_create_int32(env, objName, &prop);
return prop;
}
napi_value SystemtimerInit(napi_env env, napi_value exports)
{
napi_property_descriptor desc[] = {
@@ -746,11 +753,13 @@ napi_value SystemtimerInit(napi_env env, napi_value exports)
DECLARE_NAPI_FUNCTION("startTimer", StartTimer),
DECLARE_NAPI_FUNCTION("stopTimer", StopTimer),
DECLARE_NAPI_FUNCTION("destroyTimer", DestroyTimer),
DECLARE_NAPI_PROPERTY("TIMER_TYPE_REALTIME", CreateNapiNumber(env, 1 << TIMER_TYPE_REALTIME)),
DECLARE_NAPI_PROPERTY("TIMER_TYPE_WAKEUP", CreateNapiNumber(env, 1 << TIMER_TYPE_WAKEUP)),
DECLARE_NAPI_PROPERTY("TIMER_TYPE_EXACT", CreateNapiNumber(env, 1 << TIMER_TYPE_EXACT)),
DECLARE_NAPI_PROPERTY("TIMER_TYPE_IDLE", CreateNapiNumber(env, 1 << TIMER_TYPE_IDLE)),
};
NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc));
OHOS::MiscServicesNapi::TimerTypeInit(env, exports);
return exports;
}
} // namespace MiscServicesNapi
+4 -8
View File
@@ -23,8 +23,6 @@ config("time_service_config") {
"//utils/system/safwk/native/include",
"//third_party/json/include",
"//base/hiviewdfx/hilog/interfaces/native/innerkits/include",
"//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_rdb/include/",
"//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_appdatafwk/include/",
]
}
@@ -62,19 +60,17 @@ ohos_shared_library("time_service") {
deps = [
"${time_utils_path}:time_utils",
"//foundation/aafwk/standard/frameworks/kits/ability/native:abilitykit_native",
"//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_appdatafwk:native_appdatafwk",
"//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_preferences:native_preferences",
"//foundation/aafwk/standard/interfaces/innerkits/base:base",
"//foundation/aafwk/standard/interfaces/innerkits/intent:intent",
"//foundation/aafwk/standard/interfaces/innerkits/want:want",
"//third_party/jsoncpp:jsoncpp",
"//utils/native/base:utils",
]
external_deps = [
"ability_base:base",
"ability_base:want",
"ability_runtime:runtime",
"ability_runtime:wantagent_innerkits",
"bundle_framework:appexecfwk_base",
"ces_standard:cesfwk_innerkits",
"eventhandler:libeventhandler",
"hisysevent_native:libhisysevent",
"hiviewdfx_hilog_native:libhilog",
"ipc:ipc_core",
"safwk:system_ability_fwk",
@@ -41,6 +41,7 @@ public:
bool GetTimezone(std::string &timezoneId);
bool SetTimezone(std::string timezoneId);
void Init();
int64_t GetCurrentOffsetMs();
private:
bool InitStorage();
bool SetOffsetToKernel(int offset);
@@ -25,6 +25,7 @@
#include "json/json.h"
#include "time_service.h"
#include "nitz_subscriber.h"
#include "time_zone_info.h"
#include "ntp_update_time.h"
using namespace std::chrono;
@@ -50,7 +51,7 @@ void NtpUpdateTime::Init()
if (!GetAutoTimeInfoFromFile(autoTimeInfo_)) {
autoTimeInfo_.lastUpdateTime = INVALID_TIMES;
autoTimeInfo_.NTP_SERVER = NTP_CN_SERVER;
autoTimeInfo_.status = NETWORK_TIME_STATUS_OFF;
autoTimeInfo_.status = NETWORK_TIME_STATUS_ON;
if (!SaveAutoTimeInfoToFile(autoTimeInfo_)) {
TIME_HILOGE(TIME_MODULE_SERVICE, "end, SaveAutoTimeInfoToFile failed.");
return;
@@ -136,6 +137,8 @@ void NtpUpdateTime::SetSystemTime()
TIME_HILOGD(TIME_MODULE_SERVICE, "current time invalid.");
return;
}
auto timeOffsetMs = DelayedSingleton<TimeZoneInfo>::GetInstance()->GetCurrentOffsetMs();
currentTime = currentTime + timeOffsetMs;
TimeService::GetInstance()->SetTime(currentTime);
autoTimeInfo_.lastUpdateTime = currentTime;
TIME_HILOGD(TIME_MODULE_SERVICE, "Ntp update currentTime: %{public}" PRId64 "", currentTime);
+1 -2
View File
@@ -68,7 +68,6 @@ bool SNTPClient::RequestTime(std::string host)
{
TIME_HILOGD(TIME_MODULE_SERVICE, "start.");
int iResult;
errno_t ret;
struct sockaddr_in RecvAddr;
unsigned short Port = NTP_PORT;
int BufLen = NTP_PACKAGE_SIZE;
@@ -92,7 +91,7 @@ bool SNTPClient::RequestTime(std::string host)
return false;
}
ret = memset_s((char*)& RecvAddr, sizeof(RecvAddr), 0, sizeof(RecvAddr));
errno_t ret = memset_s((char*)& RecvAddr, sizeof(RecvAddr), 0, sizeof(RecvAddr));
if (ret != EOK) {
TIME_HILOGE(TIME_MODULE_SERVICE, "memcpy_s failed, err = %d\n", ret);
return false;
@@ -44,7 +44,7 @@ TimeServiceClient::~TimeServiceClient()
sptr<TimeServiceClient> TimeServiceClient::GetInstance()
{
if (instance_ == nullptr) {
std::lock_guard<std::mutex> autoLock(instanceLock_);
std::lock_guard<std::mutex> lock(instanceLock_);
if (instance_ == nullptr) {
instance_ = new TimeServiceClient;
}
@@ -20,6 +20,7 @@ namespace OHOS {
namespace MiscServices {
namespace {
const std::string TIMEZONE_FILE_PATH = "/data/misc/zoneinfo/timezone.json";
const int64_t HOUR_TO_MILLISECONDS = 3600000;
}
TimeZoneInfo::TimeZoneInfo()
@@ -139,6 +140,13 @@ bool TimeZoneInfo::GetTimezone(std::string &timezoneId)
return true;
}
int64_t TimeZoneInfo::GetCurrentOffsetMs()
{
int offsetHours;
GetOffsetById(curTimezoneId_, offsetHours);
return static_cast<int64_t>(offsetHours) * HOUR_TO_MILLISECONDS;
}
bool TimeZoneInfo::SetOffsetToKernel(int offsetHour)
{
std::stringstream TZstrs;
+6 -9
View File
@@ -33,8 +33,11 @@ ohos_unittest("TimeServiceTest") {
configs = [ ":module_private_config" ]
deps = [
"//base/miscservices/time/services:time_service",
"//foundation/ace/napi:ace_napi",
"//base/miscservices/time/interfaces/innerkits:time_client",
"//foundation/aafwk/standard/interfaces/innerkits/base:base",
"//foundation/aafwk/standard/interfaces/innerkits/intent:intent",
"//foundation/aafwk/standard/interfaces/innerkits/want:want",
"//foundation/appexecfwk/standard/interfaces/innerkits/appexecfwk_core:appexecfwk_core",
"//foundation/distributedschedule/dmsfwk/services/dtbschedmgr:distributedschedsvr",
"//foundation/distributedschedule/safwk/interfaces/innerkits/safwk:system_ability_fwk",
"//foundation/distributedschedule/samgr/interfaces/innerkits/samgr_proxy:samgr_proxy",
@@ -43,14 +46,8 @@ ohos_unittest("TimeServiceTest") {
]
external_deps = [
"ability_base:base",
"ability_base:want",
"ability_runtime:runtime",
"ability_runtime:wantagent_innerkits",
"bundle_framework:appexecfwk_base",
"bundle_framework:appexecfwk_core",
"ces_standard:cesfwk_innerkits",
"eventhandler:libeventhandler",
"hisysevent_native:libhisysevent",
"hiviewdfx_hilog_native:libhilog",
"ipc:ipc_core",
"safwk:system_ability_fwk",
@@ -24,8 +24,6 @@
#include <sys/time.h>
#include <thread>
#include "napi/native_api.h"
#include "napi/native_node_api.h"
#include "time_common.h"
#include "time_service_client.h"
+2 -3
View File
@@ -415,7 +415,7 @@ bool TimerManager::TriggerTimersLocked(std::vector<std::shared_ptr<TimerInfo>> &
auto nextElapsed = alarm->whenElapsed + delta;
SetHandlerLocked(alarm->id, alarm->type, alarm->when + delta, nextElapsed, alarm->windowLength,
MaxTriggerTime(nowElapsed, nextElapsed, alarm->repeatInterval), alarm->repeatInterval,
nullptr, alarm->flags, true, alarm->uid);
alarm->callback, alarm->flags, true, alarm->uid);
}
if (alarm->wakeup) {
hasWakeup = true;
@@ -508,8 +508,7 @@ void TimerManager::DeliverTimersLocked(const std::vector<std::shared_ptr<TimerIn
TIME_HILOGI(TIME_MODULE_SERVICE, "start");
for (const auto &alarm : triggerList) {
if (alarm->callback) {
std::thread startTimerThread(alarm->callback, alarm->id);
startTimerThread.detach();
alarm->callback;
TIME_HILOGI(TIME_MODULE_SERVICE, "Trigger id: %{public}" PRId64 "", alarm->id);
}
}
+2
View File
@@ -18,6 +18,8 @@ kits_path = "${time_root_path}/interfaces/kits"
innerkits_path = "${time_root_path}/interfaces/innerkits"
time_service_path = "${time_root_path}/services"
time_utils_path = "${time_root_path}/utils"
adapter_path = "${time_root_path}/adapter"
+1 -3
View File
@@ -18,7 +18,6 @@ config("utils_config") {
"mock/include",
"native/include",
"//utils/native/base/include",
"/foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_appdatafwk/include/",
]
}
@@ -36,8 +35,6 @@ ohos_source_set("time_utils") {
"//foundation/aafwk/standard/interfaces/innerkits/base:base",
"//foundation/aafwk/standard/interfaces/innerkits/want:want",
"//foundation/appexecfwk/standard/interfaces/innerkits/appexecfwk_core:appexecfwk_core",
"//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_appdatafwk:native_appdatafwk",
"//foundation/distributeddatamgr/appdatamgr/interfaces/innerkits/native_preferences:native_preferences",
"//foundation/distributedschedule/safwk/interfaces/innerkits/safwk:system_ability_fwk",
"//foundation/distributedschedule/samgr/interfaces/innerkits/samgr_proxy:samgr_proxy",
"//utils/native/base:utils",
@@ -45,6 +42,7 @@ ohos_source_set("time_utils") {
external_deps = [
"hiviewdfx_hilog_native:libhilog",
"permission_standard:libpermissionsdk_standard",
"ipc:ipc_core",
]
+2 -2
View File
@@ -13,9 +13,9 @@
* limitations under the License.
*/
#include "permission/permission_kit.h"
#include "time_permission.h"
namespace OHOS {
namespace MiscServices {
namespace {
@@ -52,7 +52,7 @@ bool TimePermission::CheckCallingPermission(int32_t uid, std::string permName)
auto userId = uid / UID_TO_USERID;
TIME_HILOGI(TIME_MODULE_COMMON, "VerifyPermission bundleName: %{public}s, permission: %{public}s",
bundleName.c_str(), permName.c_str());
return MockPermission::VerifyPermission(bundleName, permName, userId);
return OHOS::Security::Permission::PermissionKit::VerifyPermission(bundleName, permName, userId);
}
sptr<AppExecFwk::IBundleMgr> TimePermission::GetBundleManager()