2012-04-19 22:31:46 +02:00
|
|
|
// Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights
|
|
|
|
// reserved. Use of this source code is governed by a BSD-style license that
|
|
|
|
// can be found in the LICENSE file.
|
|
|
|
|
2024-04-30 17:45:07 +02:00
|
|
|
#include "cef/libcef/browser/context_menu_params_impl.h"
|
2012-04-19 22:31:46 +02:00
|
|
|
|
|
|
|
#include "base/logging.h"
|
2021-03-04 23:36:57 +01:00
|
|
|
#include "third_party/blink/public/mojom/context_menu/context_menu.mojom.h"
|
2012-04-19 22:31:46 +02:00
|
|
|
|
|
|
|
CefContextMenuParamsImpl::CefContextMenuParamsImpl(
|
|
|
|
content::ContextMenuParams* value)
|
2017-05-17 11:29:28 +02:00
|
|
|
: CefValueBase<CefContextMenuParams, content::ContextMenuParams>(
|
|
|
|
value,
|
2020-01-15 14:36:24 +01:00
|
|
|
nullptr,
|
2017-05-17 11:29:28 +02:00
|
|
|
kOwnerNoDelete,
|
|
|
|
true,
|
|
|
|
new CefValueControllerNonThreadSafe()) {
|
2012-04-19 22:31:46 +02:00
|
|
|
// Indicate that this object owns the controller.
|
|
|
|
SetOwnsController();
|
|
|
|
}
|
|
|
|
|
|
|
|
int CefContextMenuParamsImpl::GetXCoord() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, 0);
|
|
|
|
return const_value().x;
|
|
|
|
}
|
|
|
|
|
|
|
|
int CefContextMenuParamsImpl::GetYCoord() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, 0);
|
2012-05-22 23:10:00 +02:00
|
|
|
return const_value().y;
|
2012-04-19 22:31:46 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
CefContextMenuParamsImpl::TypeFlags CefContextMenuParamsImpl::GetTypeFlags() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, CM_TYPEFLAG_NONE);
|
|
|
|
const content::ContextMenuParams& params = const_value();
|
|
|
|
int type_flags = CM_TYPEFLAG_NONE;
|
2023-01-02 23:59:03 +01:00
|
|
|
if (!params.page_url.is_empty()) {
|
2012-04-19 22:31:46 +02:00
|
|
|
type_flags |= CM_TYPEFLAG_PAGE;
|
2023-01-02 23:59:03 +01:00
|
|
|
}
|
|
|
|
if (!params.frame_url.is_empty()) {
|
2012-04-19 22:31:46 +02:00
|
|
|
type_flags |= CM_TYPEFLAG_FRAME;
|
2023-01-02 23:59:03 +01:00
|
|
|
}
|
|
|
|
if (!params.link_url.is_empty()) {
|
2012-04-19 22:31:46 +02:00
|
|
|
type_flags |= CM_TYPEFLAG_LINK;
|
2023-01-02 23:59:03 +01:00
|
|
|
}
|
|
|
|
if (params.media_type != blink::mojom::ContextMenuDataMediaType::kNone) {
|
2012-04-19 22:31:46 +02:00
|
|
|
type_flags |= CM_TYPEFLAG_MEDIA;
|
2023-01-02 23:59:03 +01:00
|
|
|
}
|
|
|
|
if (!params.selection_text.empty()) {
|
2012-04-19 22:31:46 +02:00
|
|
|
type_flags |= CM_TYPEFLAG_SELECTION;
|
2023-01-02 23:59:03 +01:00
|
|
|
}
|
|
|
|
if (params.is_editable) {
|
2012-04-19 22:31:46 +02:00
|
|
|
type_flags |= CM_TYPEFLAG_EDITABLE;
|
2023-01-02 23:59:03 +01:00
|
|
|
}
|
2012-04-19 22:31:46 +02:00
|
|
|
return static_cast<TypeFlags>(type_flags);
|
|
|
|
}
|
|
|
|
|
|
|
|
CefString CefContextMenuParamsImpl::GetLinkUrl() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, CefString());
|
|
|
|
return const_value().link_url.spec();
|
|
|
|
}
|
|
|
|
|
|
|
|
CefString CefContextMenuParamsImpl::GetUnfilteredLinkUrl() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, CefString());
|
|
|
|
return const_value().unfiltered_link_url.spec();
|
|
|
|
}
|
|
|
|
|
|
|
|
CefString CefContextMenuParamsImpl::GetSourceUrl() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, CefString());
|
|
|
|
return const_value().src_url.spec();
|
|
|
|
}
|
|
|
|
|
2013-09-03 23:48:12 +02:00
|
|
|
bool CefContextMenuParamsImpl::HasImageContents() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, true);
|
|
|
|
return const_value().has_image_contents;
|
2012-04-19 22:31:46 +02:00
|
|
|
}
|
|
|
|
|
2017-01-17 18:43:49 +01:00
|
|
|
CefString CefContextMenuParamsImpl::GetTitleText() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, CefString());
|
|
|
|
return const_value().title_text;
|
|
|
|
}
|
|
|
|
|
2012-04-19 22:31:46 +02:00
|
|
|
CefString CefContextMenuParamsImpl::GetPageUrl() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, CefString());
|
|
|
|
return const_value().page_url.spec();
|
|
|
|
}
|
|
|
|
|
|
|
|
CefString CefContextMenuParamsImpl::GetFrameUrl() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, CefString());
|
|
|
|
return const_value().frame_url.spec();
|
|
|
|
}
|
|
|
|
|
|
|
|
CefString CefContextMenuParamsImpl::GetFrameCharset() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, CefString());
|
|
|
|
return const_value().frame_charset;
|
|
|
|
}
|
|
|
|
|
|
|
|
CefContextMenuParamsImpl::MediaType CefContextMenuParamsImpl::GetMediaType() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, CM_MEDIATYPE_NONE);
|
|
|
|
return static_cast<MediaType>(const_value().media_type);
|
|
|
|
}
|
|
|
|
|
|
|
|
CefContextMenuParamsImpl::MediaStateFlags
|
2017-05-17 11:29:28 +02:00
|
|
|
CefContextMenuParamsImpl::GetMediaStateFlags() {
|
2012-04-19 22:31:46 +02:00
|
|
|
CEF_VALUE_VERIFY_RETURN(false, CM_MEDIAFLAG_NONE);
|
|
|
|
return static_cast<MediaStateFlags>(const_value().media_flags);
|
|
|
|
}
|
|
|
|
|
|
|
|
CefString CefContextMenuParamsImpl::GetSelectionText() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, CefString());
|
|
|
|
return const_value().selection_text;
|
|
|
|
}
|
|
|
|
|
2014-10-07 22:44:33 +02:00
|
|
|
CefString CefContextMenuParamsImpl::GetMisspelledWord() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, CefString());
|
|
|
|
return const_value().misspelled_word;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool CefContextMenuParamsImpl::GetDictionarySuggestions(
|
|
|
|
std::vector<CefString>& suggestions) {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, false);
|
|
|
|
|
2023-01-02 23:59:03 +01:00
|
|
|
if (!suggestions.empty()) {
|
2014-10-07 22:44:33 +02:00
|
|
|
suggestions.clear();
|
2023-01-02 23:59:03 +01:00
|
|
|
}
|
2014-10-07 22:44:33 +02:00
|
|
|
|
2023-01-02 23:59:03 +01:00
|
|
|
if (const_value().dictionary_suggestions.empty()) {
|
2014-10-07 22:44:33 +02:00
|
|
|
return false;
|
2023-01-02 23:59:03 +01:00
|
|
|
}
|
2014-10-07 22:44:33 +02:00
|
|
|
|
2021-04-21 00:52:34 +02:00
|
|
|
std::vector<std::u16string>::const_iterator it =
|
2014-10-07 22:44:33 +02:00
|
|
|
const_value().dictionary_suggestions.begin();
|
2023-01-02 23:59:03 +01:00
|
|
|
for (; it != const_value().dictionary_suggestions.end(); ++it) {
|
2014-10-07 22:44:33 +02:00
|
|
|
suggestions.push_back(*it);
|
2023-01-02 23:59:03 +01:00
|
|
|
}
|
2014-10-07 22:44:33 +02:00
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2012-04-19 22:31:46 +02:00
|
|
|
bool CefContextMenuParamsImpl::IsEditable() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, false);
|
|
|
|
return const_value().is_editable;
|
|
|
|
}
|
|
|
|
|
2014-10-07 22:44:33 +02:00
|
|
|
bool CefContextMenuParamsImpl::IsSpellCheckEnabled() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, false);
|
|
|
|
return const_value().spellcheck_enabled;
|
|
|
|
}
|
|
|
|
|
2012-04-19 22:31:46 +02:00
|
|
|
CefContextMenuParamsImpl::EditStateFlags
|
2017-05-17 11:29:28 +02:00
|
|
|
CefContextMenuParamsImpl::GetEditStateFlags() {
|
2012-04-19 22:31:46 +02:00
|
|
|
CEF_VALUE_VERIFY_RETURN(false, CM_EDITFLAG_NONE);
|
|
|
|
return static_cast<EditStateFlags>(const_value().edit_flags);
|
|
|
|
}
|
2015-09-09 16:05:39 +02:00
|
|
|
|
|
|
|
bool CefContextMenuParamsImpl::IsCustomMenu() {
|
|
|
|
CEF_VALUE_VERIFY_RETURN(false, false);
|
|
|
|
return !const_value().custom_items.empty();
|
|
|
|
}
|