15267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)/* 25267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * Copyright (C) 2009, 2012 Google Inc. All rights reserved. 35267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * 45267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * modification, are permitted provided that the following conditions are 65267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * met: 75267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * 85267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * * Redistributions of source code must retain the above copyright 95267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * notice, this list of conditions and the following disclaimer. 105267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * * Redistributions in binary form must reproduce the above 115267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 125267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * in the documentation and/or other materials provided with the 135267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * distribution. 145267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 155267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * contributors may be used to endorse or promote products derived from 165267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * this software without specific prior written permission. 175267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * 185267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 195267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 205267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 215267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 225267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 235267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 245267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 255267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 265267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 285267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) */ 305267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 315267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#ifndef WebContextMenuData_h 325267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#define WebContextMenuData_h 335267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 345267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "../platform/WebPoint.h" 355267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "../platform/WebReferrerPolicy.h" 365267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "../platform/WebString.h" 375267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "../platform/WebURL.h" 385267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "../platform/WebVector.h" 395267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "WebHistoryItem.h" 405267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "WebMenuItemInfo.h" 415267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "WebNode.h" 425267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 435267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#define WEBCONTEXT_MEDIATYPEFILE_DEFINED 445267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 4551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)namespace blink { 465267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 475267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)// This struct is passed to WebViewClient::ShowContextMenu. 485267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)struct WebContextMenuData { 495267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) enum MediaType { 505267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // No special node is in context. 515267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaTypeNone, 525267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // An image node is selected. 535267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaTypeImage, 545267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // A video node is selected. 555267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaTypeVideo, 565267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // An audio node is selected. 575267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaTypeAudio, 58323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) // A canvas node is selected. 59323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) MediaTypeCanvas, 605267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // A file node is selected. 615267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaTypeFile, 625267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // A plugin node is selected. 635267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaTypePlugin, 6409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) MediaTypeLast = MediaTypePlugin 655267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) }; 665267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // The type of media the context menu is being invoked on. 675267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaType mediaType; 685267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 695267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // The x and y position of the mouse pointer (relative to the webview). 705267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebPoint mousePosition; 715267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 725267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // The absolute URL of the link that is in context. 735267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebURL linkURL; 745267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 755267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // The absolute URL of the image/video/audio that is in context. 765267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebURL srcURL; 775267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 78e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) // Whether the image in context is a null. 79e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) bool hasImageContents; 80e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) 815267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // The absolute URL of the page in context. 825267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebURL pageURL; 835267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 845267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // The absolute keyword search URL including the %s search tag when the 855267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // "Add as search engine..." option is clicked (left empty if not used). 865267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebURL keywordURL; 875267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 885267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // The absolute URL of the subframe in context. 895267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebURL frameURL; 905267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 915267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // The encoding for the frame in context. 925267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebString frameEncoding; 935267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 945267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // History state of the subframe in context. 955267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebHistoryItem frameHistoryItem; 965267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 975267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) enum MediaFlags { 985267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaNone = 0x0, 995267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaInError = 0x1, 1005267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaPaused = 0x2, 1015267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaMuted = 0x4, 1025267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaLoop = 0x8, 1035267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaCanSave = 0x10, 1045267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaHasAudio = 0x20, 105aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch MediaCanToggleControls = 0x40, 1065267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaControls = 0x80, 1075267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaCanPrint = 0x100, 1085267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) MediaCanRotate = 0x200, 1095267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) }; 1105267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1115267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // Extra attributes describing media elements. 1125267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) int mediaFlags; 1135267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1145267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // The raw text of the selection in context. 1155267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebString selectedText; 1165267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1175267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // Whether spell checking is enabled. 1185267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) bool isSpellCheckingEnabled; 1195267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 120197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch // Suggested filename for saving file. 121197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebString suggestedFilename; 122197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch 1235267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // The editable (possibily) misspelled word. 1245267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebString misspelledWord; 1255267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1265267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // The identifier of the misspelling. 1275267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) uint32_t misspellingHash; 1285267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1295267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // If misspelledWord is not empty, holds suggestions from the dictionary. 1305267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebVector<WebString> dictionarySuggestions; 1315267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1325267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // Whether context is editable. 1335267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) bool isEditable; 1345267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1355267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) enum CheckableMenuItemFlags { 1365267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) CheckableMenuItemDisabled = 0x0, 1375267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) CheckableMenuItemEnabled = 0x1, 1385267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) CheckableMenuItemChecked = 0x2, 1395267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) }; 1405267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1415267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // Writing direction menu items - values are unions of 1425267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // CheckableMenuItemFlags. 1435267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) int writingDirectionDefault; 1445267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) int writingDirectionLeftToRight; 1455267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) int writingDirectionRightToLeft; 1465267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1475267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) enum EditFlags { 1485267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) CanDoNone = 0x0, 1495267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) CanUndo = 0x1, 1505267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) CanRedo = 0x2, 1515267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) CanCut = 0x4, 1525267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) CanCopy = 0x8, 1535267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) CanPaste = 0x10, 1545267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) CanDelete = 0x20, 1555267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) CanSelectAll = 0x40, 1565267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) CanTranslate = 0x80, 1575267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) }; 1585267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1595267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // Which edit operations are available in the context. 1605267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) int editFlags; 1615267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1625267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // Security information for the context. 1635267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebCString securityInfo; 1645267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1655267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // The referrer policy applicable to this context. 1665267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebReferrerPolicy referrerPolicy; 1675267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1685267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // Custom context menu items provided by the WebCore internals. 1695267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebVector<WebMenuItemInfo> customItems; 1705267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1715267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) // The node that was clicked. 1725267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebNode node; 1735267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1745267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) WebContextMenuData() 1755267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) : mediaType(MediaTypeNone) 176e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles) , hasImageContents(true) 1775267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) , mediaFlags(MediaNone) 1785267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) , isSpellCheckingEnabled(false) 179197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch , misspellingHash(0) 1805267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) , isEditable(false) 1815267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) , writingDirectionDefault(CheckableMenuItemDisabled) 1825267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) , writingDirectionLeftToRight(CheckableMenuItemEnabled) 1835267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) , writingDirectionRightToLeft(CheckableMenuItemEnabled) 1845267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) , editFlags(0) { } 1855267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)}; 1865267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 18751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} // namespace blink 1885267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 1895267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#endif 190