1643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/* 2643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Copyright (C) 2009 Google Inc. All rights reserved. 3643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 4643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Redistribution and use in source and binary forms, with or without 5643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * modification, are permitted provided that the following conditions are 6643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * met: 7643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 8643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions of source code must retain the above copyright 9643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * notice, this list of conditions and the following disclaimer. 10643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Redistributions in binary form must reproduce the above 11643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * copyright notice, this list of conditions and the following disclaimer 12643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * in the documentation and/or other materials provided with the 13643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * distribution. 14643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * * Neither the name of Google Inc. nor the names of its 15643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * contributors may be used to endorse or promote products derived from 16643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * this software without specific prior written permission. 17643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * 18643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29643ca7872b450ea4efacab6188849e5aac2ba161Steve Block */ 30643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 31643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#ifndef WebContextMenuData_h 32643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#define WebContextMenuData_h 33643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 3481bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#include "WebHistoryItem.h" 35643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebMenuItemInfo.h" 3665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "WebNode.h" 37643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebPoint.h" 38643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebString.h" 39643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebURL.h" 40643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebVector.h" 41643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 422daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch#define WEBCONTEXT_MEDIATYPEFILE_DEFINED 432daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 44643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebKit { 45643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 46643ca7872b450ea4efacab6188849e5aac2ba161Steve Block// This struct is passed to WebViewClient::ShowContextMenu. 47643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockstruct WebContextMenuData { 48643ca7872b450ea4efacab6188849e5aac2ba161Steve Block enum MediaType { 49643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // No special node is in context. 50643ca7872b450ea4efacab6188849e5aac2ba161Steve Block MediaTypeNone, 51643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // An image node is selected. 52643ca7872b450ea4efacab6188849e5aac2ba161Steve Block MediaTypeImage, 53643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // A video node is selected. 54643ca7872b450ea4efacab6188849e5aac2ba161Steve Block MediaTypeVideo, 55643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // An audio node is selected. 56643ca7872b450ea4efacab6188849e5aac2ba161Steve Block MediaTypeAudio, 572daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // A file node is selected. 582daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaTypeFile, 5965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // A plugin node is selected. 6065f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MediaTypePlugin, 61643ca7872b450ea4efacab6188849e5aac2ba161Steve Block }; 62643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The type of media the context menu is being invoked on. 63643ca7872b450ea4efacab6188849e5aac2ba161Steve Block MediaType mediaType; 64643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 65643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The x and y position of the mouse pointer (relative to the webview). 66643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebPoint mousePosition; 67643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 68643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The absolute URL of the link that is in context. 69643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebURL linkURL; 70643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 71643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The absolute URL of the image/video/audio that is in context. 72643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebURL srcURL; 73643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 74692e5dbf12901edacf14812a6fae25462920af42Steve Block // Whether the image in context has been blocked. 75692e5dbf12901edacf14812a6fae25462920af42Steve Block bool isImageBlocked; 76692e5dbf12901edacf14812a6fae25462920af42Steve Block 77643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The absolute URL of the page in context. 78643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebURL pageURL; 79643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 80643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The absolute URL of the subframe in context. 81643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebURL frameURL; 82643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 83643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The encoding for the frame in context. 84643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebString frameEncoding; 85643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 8681bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch // History state of the subframe in context. 8781bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch WebHistoryItem frameHistoryItem; 8881bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 89643ca7872b450ea4efacab6188849e5aac2ba161Steve Block enum MediaFlags { 90643ca7872b450ea4efacab6188849e5aac2ba161Steve Block MediaNone = 0x0, 91643ca7872b450ea4efacab6188849e5aac2ba161Steve Block MediaInError = 0x1, 92643ca7872b450ea4efacab6188849e5aac2ba161Steve Block MediaPaused = 0x2, 93643ca7872b450ea4efacab6188849e5aac2ba161Steve Block MediaMuted = 0x4, 94643ca7872b450ea4efacab6188849e5aac2ba161Steve Block MediaLoop = 0x8, 95643ca7872b450ea4efacab6188849e5aac2ba161Steve Block MediaCanSave = 0x10, 96643ca7872b450ea4efacab6188849e5aac2ba161Steve Block MediaHasAudio = 0x20, 97dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block MediaHasVideo = 0x40, 982daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch MediaControlRootElement = 0x80, 9965f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch MediaCanPrint = 0x100, 100643ca7872b450ea4efacab6188849e5aac2ba161Steve Block }; 101643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 102643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Extra attributes describing media elements. 103643ca7872b450ea4efacab6188849e5aac2ba161Steve Block int mediaFlags; 104643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 105643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The raw text of the selection in context. 106643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebString selectedText; 107643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 108643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Whether spell checking is enabled. 109643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool isSpellCheckingEnabled; 110643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 111643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // The editable (possibily) misspelled word. 112643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebString misspelledWord; 113643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1142daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch // If misspelledWord is not empty, holds suggestions from the dictionary. 1152daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch WebVector<WebString> dictionarySuggestions; 1162daae5fd11344eaa88a0d92b0f6d65f8d2255c00Ben Murdoch 117643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Whether context is editable. 118643ca7872b450ea4efacab6188849e5aac2ba161Steve Block bool isEditable; 119643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 1205e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block enum CheckableMenuItemFlags { 1215e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block CheckableMenuItemDisabled = 0x0, 1225e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block CheckableMenuItemEnabled = 0x1, 1235e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block CheckableMenuItemChecked = 0x2, 1245e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block }; 1255e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block 1268a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block // Writing direction menu items - values are unions of 1278a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block // CheckableMenuItemFlags. 1285e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block // Currently only used on OS X. 1295e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block int writingDirectionDefault; 1305e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block int writingDirectionLeftToRight; 1315e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block int writingDirectionRightToLeft; 1325e2bc6953fe6923165b8a5d7679939693a1d58d6Steve Block 133643ca7872b450ea4efacab6188849e5aac2ba161Steve Block enum EditFlags { 134643ca7872b450ea4efacab6188849e5aac2ba161Steve Block CanDoNone = 0x0, 135643ca7872b450ea4efacab6188849e5aac2ba161Steve Block CanUndo = 0x1, 136643ca7872b450ea4efacab6188849e5aac2ba161Steve Block CanRedo = 0x2, 137643ca7872b450ea4efacab6188849e5aac2ba161Steve Block CanCut = 0x4, 138643ca7872b450ea4efacab6188849e5aac2ba161Steve Block CanCopy = 0x8, 139643ca7872b450ea4efacab6188849e5aac2ba161Steve Block CanPaste = 0x10, 140643ca7872b450ea4efacab6188849e5aac2ba161Steve Block CanDelete = 0x20, 141643ca7872b450ea4efacab6188849e5aac2ba161Steve Block CanSelectAll = 0x40, 142ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block CanTranslate = 0x80, 143643ca7872b450ea4efacab6188849e5aac2ba161Steve Block }; 144643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 145643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Which edit operations are available in the context. 146643ca7872b450ea4efacab6188849e5aac2ba161Steve Block int editFlags; 147643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 148643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Security information for the context. 149643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebCString securityInfo; 150643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 151643ca7872b450ea4efacab6188849e5aac2ba161Steve Block // Custom context menu items provided by the WebCore internals. 152643ca7872b450ea4efacab6188849e5aac2ba161Steve Block WebVector<WebMenuItemInfo> customItems; 1536c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 15465f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch // The node that was clicked. 15565f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch WebNode node; 15665f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch 1576c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen WebContextMenuData() 1586c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen : mediaType(MediaTypeNone) 1596c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen , isImageBlocked(false) 1606c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen , mediaFlags(MediaNone) 1616c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen , isSpellCheckingEnabled(false) 1626c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen , isEditable(false) 1636c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen , writingDirectionDefault(CheckableMenuItemDisabled) 1646c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen , writingDirectionLeftToRight(CheckableMenuItemEnabled) 1656c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen , writingDirectionRightToLeft(CheckableMenuItemEnabled) 1666c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen , editFlags(0) { } 167643ca7872b450ea4efacab6188849e5aac2ba161Steve Block}; 168643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 169643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} // namespace WebKit 170643ca7872b450ea4efacab6188849e5aac2ba161Steve Block 171643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif 172