1e0dac50fSopenharmony_ci/* 2e0dac50fSopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd. 3e0dac50fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4e0dac50fSopenharmony_ci * you may not use this file except in compliance with the License. 5e0dac50fSopenharmony_ci * You may obtain a copy of the License at 6e0dac50fSopenharmony_ci * 7e0dac50fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8e0dac50fSopenharmony_ci * 9e0dac50fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10e0dac50fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11e0dac50fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12e0dac50fSopenharmony_ci * See the License for the specific language governing permissions and 13e0dac50fSopenharmony_ci * limitations under the License. 14e0dac50fSopenharmony_ci */ 15e0dac50fSopenharmony_ci 16e0dac50fSopenharmony_ci#ifndef WINDOW_EXTENSION_H 17e0dac50fSopenharmony_ci#define WINDOW_EXTENSION_H 18e0dac50fSopenharmony_ci 19e0dac50fSopenharmony_ci#include <extension_base.h> 20e0dac50fSopenharmony_ci#include <service_extension.h> 21e0dac50fSopenharmony_ci 22e0dac50fSopenharmony_cinamespace OHOS { 23e0dac50fSopenharmony_cinamespace Rosen { 24e0dac50fSopenharmony_ciclass WindowExtensionContext; 25e0dac50fSopenharmony_ci 26e0dac50fSopenharmony_ciclass WindowExtension : public AbilityRuntime::ExtensionBase<WindowExtensionContext> { 27e0dac50fSopenharmony_cipublic: 28e0dac50fSopenharmony_ci WindowExtension() = default; 29e0dac50fSopenharmony_ci virtual ~WindowExtension() = default; 30e0dac50fSopenharmony_ci 31e0dac50fSopenharmony_ci /** 32e0dac50fSopenharmony_ci * @brief Create and init context. 33e0dac50fSopenharmony_ci * 34e0dac50fSopenharmony_ci * @param record the extension record. 35e0dac50fSopenharmony_ci * @param application the application info. 36e0dac50fSopenharmony_ci * @param handler the extension handler. 37e0dac50fSopenharmony_ci * @param token the remote token. 38e0dac50fSopenharmony_ci * @return The created context. 39e0dac50fSopenharmony_ci */ 40e0dac50fSopenharmony_ci virtual std::shared_ptr<WindowExtensionContext> CreateAndInitContext( 41e0dac50fSopenharmony_ci const std::shared_ptr<AbilityRuntime::AbilityLocalRecord>& record, 42e0dac50fSopenharmony_ci const std::shared_ptr<AbilityRuntime::OHOSApplication>& application, 43e0dac50fSopenharmony_ci std::shared_ptr<AbilityRuntime::AbilityHandler>& handler, 44e0dac50fSopenharmony_ci const sptr<IRemoteObject>& token) override; 45e0dac50fSopenharmony_ci 46e0dac50fSopenharmony_ci /** 47e0dac50fSopenharmony_ci * @brief Init the extension. 48e0dac50fSopenharmony_ci * 49e0dac50fSopenharmony_ci * @param record the extension record. 50e0dac50fSopenharmony_ci * @param application the application info. 51e0dac50fSopenharmony_ci * @param handler the extension handler. 52e0dac50fSopenharmony_ci * @param token the remote token. 53e0dac50fSopenharmony_ci */ 54e0dac50fSopenharmony_ci virtual void Init(const std::shared_ptr<AbilityRuntime::AbilityLocalRecord>& record, 55e0dac50fSopenharmony_ci const std::shared_ptr<AbilityRuntime::OHOSApplication>& application, 56e0dac50fSopenharmony_ci std::shared_ptr<AbilityRuntime::AbilityHandler>& handler, 57e0dac50fSopenharmony_ci const sptr<IRemoteObject>& token) override; 58e0dac50fSopenharmony_ci 59e0dac50fSopenharmony_ci /** 60e0dac50fSopenharmony_ci * @brief Create Extension. 61e0dac50fSopenharmony_ci * 62e0dac50fSopenharmony_ci * @param runtime The runtime. 63e0dac50fSopenharmony_ci * @return The WindowExtension instance. 64e0dac50fSopenharmony_ci */ 65e0dac50fSopenharmony_ci static WindowExtension* Create(const std::unique_ptr<AbilityRuntime::Runtime>& runtime); 66e0dac50fSopenharmony_ci}; 67e0dac50fSopenharmony_ci} // namespace Rosen 68e0dac50fSopenharmony_ci} // namespace OHOS 69e0dac50fSopenharmony_ci#endif