| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef WEBKIT_GLUE_CONTEXT_MENU_H_ |
| #define WEBKIT_GLUE_CONTEXT_MENU_H_ |
| |
| #include <vector> |
| |
| #include "base/basictypes.h" |
| #include "base/string16.h" |
| #include "googleurl/src/gurl.h" |
| #include "webkit/glue/webmenuitem.h" |
| |
| #include "third_party/WebKit/Source/WebKit/chromium/public/WebContextMenuData.h" |
| |
| namespace webkit_glue { |
| |
| struct CustomContextMenuContext { |
| bool is_pepper_menu; |
| int request_id; |
| // The routing ID of the render widget on which the context menu is shown. |
| // It could also be |kCurrentRenderWidget|, which means the render widget that |
| // the corresponding ViewHostMsg_ContextMenu is sent to. |
| int32 render_widget_id; |
| static const int32 kCurrentRenderWidget; |
| |
| CustomContextMenuContext(); |
| }; |
| |
| } // namespace webkit_glue |
| |
| // TODO(viettrungluu): Put this in the webkit_glue namespace. |
| // Parameters structure for ViewHostMsg_ContextMenu. |
| // FIXME(beng): This would be more useful in the future and more efficient |
| // if the parameters here weren't so literally mapped to what |
| // they contain for the ContextMenu task. It might be better |
| // to make the string fields more generic so that this object |
| // could be used for more contextual actions. |
| struct ContextMenuParams { |
| // This is the type of Context Node that the context menu was invoked on. |
| WebKit::WebContextMenuData::MediaType media_type; |
| |
| // These values represent the coordinates of the mouse when the context menu |
| // was invoked. Coords are relative to the associated RenderView's origin. |
| int x; |
| int y; |
| |
| // This is the URL of the link that encloses the node the context menu was |
| // invoked on. |
| GURL link_url; |
| |
| // The link URL to be used ONLY for "copy link address". We don't validate |
| // this field in the frontend process. |
| GURL unfiltered_link_url; |
| |
| // This is the source URL for the element that the context menu was |
| // invoked on. Example of elements with source URLs are img, audio, and |
| // video. |
| GURL src_url; |
| |
| // This is true if the context menu was invoked on a blocked image. |
| bool is_image_blocked; |
| |
| // This is the URL of the top level page that the context menu was invoked |
| // on. |
| GURL page_url; |
| |
| // This is the URL of the subframe that the context menu was invoked on. |
| GURL frame_url; |
| |
| // This is the history item state of the subframe that the context menu was |
| // invoked on. |
| std::string frame_content_state; |
| |
| // These are the parameters for the media element that the context menu |
| // was invoked on. |
| int media_flags; |
| |
| // This is the text of the selection that the context menu was invoked on. |
| string16 selection_text; |
| |
| // The misspelled word under the cursor, if any. Used to generate the |
| // |dictionary_suggestions| list. |
| string16 misspelled_word; |
| |
| // Suggested replacements for a misspelled word under the cursor. |
| // This vector gets populated in the render process host |
| // by intercepting ViewHostMsg_ContextMenu in ResourceMessageFilter |
| // and populating dictionary_suggestions if the type is EDITABLE |
| // and the misspelled_word is not empty. |
| std::vector<string16> dictionary_suggestions; |
| |
| // If editable, flag for whether spell check is enabled or not. |
| bool spellcheck_enabled; |
| |
| // Whether context is editable. |
| bool is_editable; |
| |
| #if defined(OS_MACOSX) |
| // Writing direction menu items. |
| // Currently only used on OS X. |
| int writing_direction_default; |
| int writing_direction_left_to_right; |
| int writing_direction_right_to_left; |
| #endif // OS_MACOSX |
| |
| // These flags indicate to the browser whether the renderer believes it is |
| // able to perform the corresponding action. |
| int edit_flags; |
| |
| // The security info for the resource we are showing the menu on. |
| std::string security_info; |
| |
| // The character encoding of the frame on which the menu is invoked. |
| std::string frame_charset; |
| |
| webkit_glue::CustomContextMenuContext custom_context; |
| std::vector<WebMenuItem> custom_items; |
| |
| ContextMenuParams(); |
| ContextMenuParams(const WebKit::WebContextMenuData& data); |
| ~ContextMenuParams(); |
| }; |
| |
| #endif // WEBKIT_GLUE_CONTEXT_MENU_H_ |