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 SERVICES_INCLUDE_WALLPAPER_SERVICE_STUB_H
17#define SERVICES_INCLUDE_WALLPAPER_SERVICE_STUB_H
18
19#include <map>
20
21#include "i_wallpaper_service.h"
22#include "ipc_skeleton.h"
23#include "iremote_stub.h"
24#include "wallpaper_service_ipc_interface_code.h"
25
26namespace OHOS {
27namespace WallpaperMgrService {
28using WallpaperRequestHandler = std::function<int32_t(MessageParcel &, MessageParcel &)>;
29class WallpaperServiceStub : public IRemoteStub<IWallpaperService> {
30public:
31    int32_t OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option) override;
32    WallpaperServiceStub(bool serialInvokeFlag = true);
33    ~WallpaperServiceStub();
34
35private:
36    int32_t OnSetWallpaper(MessageParcel &data, MessageParcel &reply);
37    int32_t OnSetWallpaperByPixelMap(MessageParcel &data, MessageParcel &reply);
38    int32_t OnGetPixelMap(MessageParcel &data, MessageParcel &reply);
39    int32_t OnGetColors(MessageParcel &data, MessageParcel &reply);
40    int32_t OnGetFile(MessageParcel &data, MessageParcel &reply);
41    int32_t OnGetWallpaperId(MessageParcel &data, MessageParcel &reply);
42    int32_t OnIsChangePermitted(MessageParcel &data, MessageParcel &reply);
43    int32_t OnIsOperationAllowed(MessageParcel &data, MessageParcel &reply);
44    int32_t OnResetWallpaper(MessageParcel &data, MessageParcel &reply);
45    int32_t OnWallpaperOn(MessageParcel &data, MessageParcel &reply);
46    int32_t OnWallpaperOff(MessageParcel &data, MessageParcel &reply);
47    int32_t OnRegisterWallpaperCallback(MessageParcel &data, MessageParcel &reply);
48
49    int32_t OnSetWallpaperV9(MessageParcel &data, MessageParcel &reply);
50    int32_t OnSetWallpaperV9ByPixelMap(MessageParcel &data, MessageParcel &reply);
51    int32_t OnGetPixelMapV9(MessageParcel &data, MessageParcel &reply);
52    int32_t OnGetColorsV9(MessageParcel &data, MessageParcel &reply);
53    int32_t OnResetWallpaperV9(MessageParcel &data, MessageParcel &reply);
54
55    int32_t OnSetWallpaperInner(MessageParcel &data, MessageParcel &reply, bool isSystemApi);
56    int32_t OnSetWallpaperInnerByPixelMap(MessageParcel &data, MessageParcel &reply, bool isSystemApi);
57    int32_t OnGetPixelMapInner(MessageParcel &data, MessageParcel &reply, bool isSystemApi);
58    int32_t OnGetColorsInner(MessageParcel &data, MessageParcel &reply, bool isSystemApi);
59    int32_t OnResetWallpaperInner(MessageParcel &data, MessageParcel &reply, bool isSystemApi);
60    int32_t OnSetVideo(MessageParcel &data, MessageParcel &reply);
61    int32_t OnSetCustomWallpaper(MessageParcel &data, MessageParcel &reply);
62    int32_t OnSendEvent(MessageParcel &data, MessageParcel &reply);
63    int32_t HandleWallpaperRequest(uint32_t code, MessageParcel &data, MessageParcel &reply, MessageOption &option);
64    std::shared_ptr<OHOS::Media::PixelMap> VectorToPixelMap(std::vector<std::uint8_t> value);
65    WallpaperRequestHandler GetWallpaperRequestHandler(uint32_t code);
66    std::unordered_map<uint32_t, WallpaperRequestHandler> requestHandlers;
67};
68} // namespace WallpaperMgrService
69} // namespace OHOS
70#endif // SERVICES_INCLUDE_WALLPAPER_SERVICE_STUB_H