* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef NWEB_CONTEXT_MENU_PARAMS_H
#define NWEB_CONTEXT_MENU_PARAMS_H
#include <memory>
#include <string>
#include "nweb_export.h"
#include "nweb_touch_handle_state.h"
namespace OHOS::NWeb {
class OHOS_NWEB_EXPORT NWebContextMenuParams {
public:
enum ContextMenuTypeFlags {
CM_TF_NONE = 0,
CM_TF_PAGE = 1 << 0,
CM_TF_FRAME = 1 << 1,
CM_TF_LINK = 1 << 2,
CM_TF_MEDIA = 1 << 3,
CM_TF_SELECTION = 1 << 4,
CM_TF_EDITABLE = 1 << 5,
};
enum ContextMenuMediaType {
CM_MT_NONE,
CM_MT_IMAGE,
CM_MT_TEXT,
};
enum ContextMenuDataMediaType {
CMD_MT_NONE,
CMD_MT_IMAGE,
CMD_MT_VIDEO,
CMD_MT_AUDIO,
CMD_MT_CANVAS,
};
enum ContextMenuEditStateFlags {
CM_ES_NONE = 0,
CM_ES_CAN_CUT = 1 << 0,
CM_ES_CAN_COPY = 1 << 1,
CM_ES_CAN_PASTE = 1 << 2,
CM_ES_CAN_SELECT_ALL = 1 << 3,
};
enum ContextMenuInputFieldType {
CM_IT_NONE = 0,
CM_IT_PLAINTEXT = 1,
CM_IT_PASSWORD = 2,
CM_IT_NUMBER = 3,
CM_IT_TELEPHONE = 4,
CM_IT_OTHER = 5,
};
enum ContextMenuSourceType {
CM_ST_NONE = 0,
CM_ST_MOUSE = 1,
CM_ST_LONG_PRESS = 2,
CM_ST_LONG_TAP = 3,
};
virtual ~NWebContextMenuParams() = default;
virtual int32_t GetXCoord() = 0;
virtual int32_t GetYCoord() = 0;
virtual int32_t GetContextMenuTypeFlags() = 0;
virtual std::string GetLinkUrl() = 0;
virtual std::string GetUnfilteredLinkUrl() = 0;
virtual std::string GetSourceUrl() = 0;
virtual bool HasImageContents() = 0;
virtual std::string GetTitleText() = 0;
virtual std::string GetPageUrl() = 0;
virtual ContextMenuMediaType GetMediaType() = 0;
virtual bool IsEditable() = 0;
virtual int32_t GetEditStateFlags() = 0;
virtual ContextMenuSourceType GetSourceType() = 0;
virtual ContextMenuInputFieldType GetInputFieldType() = 0;
virtual std::string GetSelectionText() = 0;
virtual void GetImageRect(int& x, int& y, int& w, int& h) {}
virtual bool IsAILink() { return false; }
virtual ContextMenuDataMediaType GetContextMenuMediaType() { return ContextMenuDataMediaType::CMD_MT_NONE; }
};
class OHOS_NWEB_EXPORT NWebQuickMenuParams {
public:
enum QuickMenuEditStateFlags {
QM_EF_NONE = 0,
QM_EF_CAN_ELLIPSIS = 1 << 0,
QM_EF_CAN_CUT = 1 << 1,
QM_EF_CAN_COPY = 1 << 2,
QM_EF_CAN_PASTE = 1 << 3,
QM_EF_CAN_SELECT_ALL = 1 << 4,
QM_EF_CAN_AI_WRITE = 1 << 5,
QM_EF_CAN_AUTOFILL = 1 << 6,
};
virtual ~NWebQuickMenuParams() = default;
virtual int32_t GetXCoord() = 0;
virtual int32_t GetYCoord() = 0;
virtual int32_t GetWidth() = 0;
virtual int32_t GetHeight() = 0;
virtual int32_t GetEditStateFlags() = 0;
virtual int32_t GetSelectX() = 0;
virtual int32_t GetSelectY() = 0;
virtual int32_t GetSelectWidth() = 0;
virtual int32_t GetSelectXHeight() = 0;
virtual std::shared_ptr<NWebTouchHandleState> GetTouchHandleState(NWebTouchHandleState::TouchHandleType type) = 0;
virtual bool GetIsLongPressActived() {
return false;
}
};
enum MenuEventFlags {
EF_NONE = 0,
EF_CAPS_LOCK_ON = 1 << 0,
EF_SHIFT_DOWN = 1 << 1,
EF_CONTROL_DOWN = 1 << 2,
EF_ALT_DOWN = 1 << 3,
EF_LEFT_MOUSE_BUTTON = 1 << 4,
EF_MIDDLE_MOUSE_BUTTON = 1 << 5,
EF_RIGHT_MOUSE_BUTTON = 1 << 6,
};
enum MenuCommandId {
CI_IMAGE_COPY = 0,
CI_COPY = 1,
CI_PASTE = 2,
CI_CUT = 3,
CI_SELECT_ALL = 4,
CI_DELETE = 5,
CI_REDO = 6,
CI_UNDO = 7,
CI_PASTE_AND_MATCH_STYLE = 8,
CI_REQUEST_AUTOFILL = 9,
CI_IMAGE_SAVE = 10,
};
class OHOS_NWEB_EXPORT NWebContextMenuCallback {
public:
virtual ~NWebContextMenuCallback() = default;
virtual void Continue(int32_t commandId, MenuEventFlags flag) = 0;
virtual void Cancel() = 0;
};
class OHOS_NWEB_EXPORT NWebQuickMenuCallback {
public:
virtual ~NWebQuickMenuCallback() = default;
virtual void Continue(int32_t commandId, MenuEventFlags flag) = 0;
virtual void Cancel() = 0;
};
}
#endif