• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Embedded Framework Authors. All rights
2 // reserved. Use of this source code is governed by a BSD-style license that
3 // can be found in the LICENSE file.
4 
5 #include "libcef/browser/context_menu_params_impl.h"
6 
7 #include "base/logging.h"
8 #include "third_party/blink/public/mojom/context_menu/context_menu.mojom.h"
9 
CefContextMenuParamsImpl(content::ContextMenuParams * value)10 CefContextMenuParamsImpl::CefContextMenuParamsImpl(
11     content::ContextMenuParams* value)
12     : CefValueBase<CefContextMenuParams, content::ContextMenuParams>(
13           value,
14           nullptr,
15           kOwnerNoDelete,
16           true,
17           new CefValueControllerNonThreadSafe()) {
18   // Indicate that this object owns the controller.
19   SetOwnsController();
20 }
21 
GetXCoord()22 int CefContextMenuParamsImpl::GetXCoord() {
23   CEF_VALUE_VERIFY_RETURN(false, 0);
24   return const_value().x;
25 }
26 
GetYCoord()27 int CefContextMenuParamsImpl::GetYCoord() {
28   CEF_VALUE_VERIFY_RETURN(false, 0);
29   return const_value().y;
30 }
31 
GetTypeFlags()32 CefContextMenuParamsImpl::TypeFlags CefContextMenuParamsImpl::GetTypeFlags() {
33   CEF_VALUE_VERIFY_RETURN(false, CM_TYPEFLAG_NONE);
34   const content::ContextMenuParams& params = const_value();
35   int type_flags = CM_TYPEFLAG_NONE;
36   if (!params.page_url.is_empty())
37     type_flags |= CM_TYPEFLAG_PAGE;
38   if (!params.frame_url.is_empty())
39     type_flags |= CM_TYPEFLAG_FRAME;
40   if (!params.link_url.is_empty())
41     type_flags |= CM_TYPEFLAG_LINK;
42   if (params.media_type != blink::mojom::ContextMenuDataMediaType::kNone)
43     type_flags |= CM_TYPEFLAG_MEDIA;
44   if (!params.selection_text.empty())
45     type_flags |= CM_TYPEFLAG_SELECTION;
46   if (params.is_editable)
47     type_flags |= CM_TYPEFLAG_EDITABLE;
48   return static_cast<TypeFlags>(type_flags);
49 }
50 
GetLinkUrl()51 CefString CefContextMenuParamsImpl::GetLinkUrl() {
52   CEF_VALUE_VERIFY_RETURN(false, CefString());
53   return const_value().link_url.spec();
54 }
55 
GetUnfilteredLinkUrl()56 CefString CefContextMenuParamsImpl::GetUnfilteredLinkUrl() {
57   CEF_VALUE_VERIFY_RETURN(false, CefString());
58   return const_value().unfiltered_link_url.spec();
59 }
60 
GetSourceUrl()61 CefString CefContextMenuParamsImpl::GetSourceUrl() {
62   CEF_VALUE_VERIFY_RETURN(false, CefString());
63   return const_value().src_url.spec();
64 }
65 
HasImageContents()66 bool CefContextMenuParamsImpl::HasImageContents() {
67   CEF_VALUE_VERIFY_RETURN(false, true);
68   return const_value().has_image_contents;
69 }
70 
GetTitleText()71 CefString CefContextMenuParamsImpl::GetTitleText() {
72   CEF_VALUE_VERIFY_RETURN(false, CefString());
73   return const_value().title_text;
74 }
75 
GetPageUrl()76 CefString CefContextMenuParamsImpl::GetPageUrl() {
77   CEF_VALUE_VERIFY_RETURN(false, CefString());
78   return const_value().page_url.spec();
79 }
80 
GetFrameUrl()81 CefString CefContextMenuParamsImpl::GetFrameUrl() {
82   CEF_VALUE_VERIFY_RETURN(false, CefString());
83   return const_value().frame_url.spec();
84 }
85 
GetFrameCharset()86 CefString CefContextMenuParamsImpl::GetFrameCharset() {
87   CEF_VALUE_VERIFY_RETURN(false, CefString());
88   return const_value().frame_charset;
89 }
90 
GetMediaType()91 CefContextMenuParamsImpl::MediaType CefContextMenuParamsImpl::GetMediaType() {
92   CEF_VALUE_VERIFY_RETURN(false, CM_MEDIATYPE_NONE);
93   return static_cast<MediaType>(const_value().media_type);
94 }
95 
96 CefContextMenuParamsImpl::MediaStateFlags
GetMediaStateFlags()97 CefContextMenuParamsImpl::GetMediaStateFlags() {
98   CEF_VALUE_VERIFY_RETURN(false, CM_MEDIAFLAG_NONE);
99   return static_cast<MediaStateFlags>(const_value().media_flags);
100 }
101 
GetSelectionText()102 CefString CefContextMenuParamsImpl::GetSelectionText() {
103   CEF_VALUE_VERIFY_RETURN(false, CefString());
104   return const_value().selection_text;
105 }
106 
GetMisspelledWord()107 CefString CefContextMenuParamsImpl::GetMisspelledWord() {
108   CEF_VALUE_VERIFY_RETURN(false, CefString());
109   return const_value().misspelled_word;
110 }
111 
GetDictionarySuggestions(std::vector<CefString> & suggestions)112 bool CefContextMenuParamsImpl::GetDictionarySuggestions(
113     std::vector<CefString>& suggestions) {
114   CEF_VALUE_VERIFY_RETURN(false, false);
115 
116   if (!suggestions.empty())
117     suggestions.clear();
118 
119   if (const_value().dictionary_suggestions.empty())
120     return false;
121 
122   std::vector<std::u16string>::const_iterator it =
123       const_value().dictionary_suggestions.begin();
124   for (; it != const_value().dictionary_suggestions.end(); ++it)
125     suggestions.push_back(*it);
126 
127   return true;
128 }
129 
IsEditable()130 bool CefContextMenuParamsImpl::IsEditable() {
131   CEF_VALUE_VERIFY_RETURN(false, false);
132   return const_value().is_editable;
133 }
134 
IsSpellCheckEnabled()135 bool CefContextMenuParamsImpl::IsSpellCheckEnabled() {
136   CEF_VALUE_VERIFY_RETURN(false, false);
137   return const_value().spellcheck_enabled;
138 }
139 
140 CefContextMenuParamsImpl::EditStateFlags
GetEditStateFlags()141 CefContextMenuParamsImpl::GetEditStateFlags() {
142   CEF_VALUE_VERIFY_RETURN(false, CM_EDITFLAG_NONE);
143   return static_cast<EditStateFlags>(const_value().edit_flags);
144 }
145 
IsCustomMenu()146 bool CefContextMenuParamsImpl::IsCustomMenu() {
147   CEF_VALUE_VERIFY_RETURN(false, false);
148   return !const_value().custom_items.empty();
149 }
150