From 79e3744bbbb0867f4e356eab96703d425b3fad40 Mon Sep 17 00:00:00 2001
From: "yaar@chromium.org"
 <yaar@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Fri, 9 Oct 2009 18:17:44 +0000
Subject: Moving ShowContextMenu out of WebView_delegate and into WebViewClient
 (Part of the Webkit API refactoring effort).

Review URL: http://codereview.chromium.org/265011

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28567 0039d316-1c4b-4281-b951-d872f2087c98
---
 webkit/api/public/WebContextMenuData.h | 118 +++++++++++++++++++++++++++++++++
 webkit/api/public/WebViewClient.h      |   6 +-
 2 files changed, 123 insertions(+), 1 deletion(-)
 create mode 100644 webkit/api/public/WebContextMenuData.h

(limited to 'webkit/api/public')

diff --git a/webkit/api/public/WebContextMenuData.h b/webkit/api/public/WebContextMenuData.h
new file mode 100644
index 0000000..24a26b1
--- /dev/null
+++ b/webkit/api/public/WebContextMenuData.h
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer
+ * in the documentation and/or other materials provided with the
+ * distribution.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef WebContextMenuData_h
+#define WebContextMenuData_h
+
+#include "WebPoint.h"
+#include "WebString.h"
+#include "WebURL.h"
+
+namespace WebKit {
+
+    // This struct is passed to WebViewClient::ShowContextMenu.
+    struct WebContextMenuData {
+        enum MediaType {
+            // No special node is in context.
+            MediaTypeNone,
+            // An image node is selected.
+            MediaTypeImage,
+            // A video node is selected.
+            MediaTypeVideo,
+            // An audio node is selected.
+            MediaTypeAudio,
+        };
+        // The type of media the context menu is being invoked on.
+        MediaType mediaType;
+
+        // The x and y position of the mouse pointer (relative to the webview).
+        WebPoint mousePosition;
+
+        // The absolute URL of the link that is in context.
+        WebURL linkURL;
+
+        // The absolute URL of the image/video/audio that is in context.
+        WebURL srcURL;
+
+        // The absolute URL of the page in context.
+        WebURL pageURL;
+
+        // The absolute URL of the subframe in context.
+        WebURL frameURL;
+
+        // The encoding for the frame in context.
+        WebString frameEncoding;
+
+        enum MediaFlags {
+            MediaNone = 0x0,
+            MediaInError = 0x1,
+            MediaPaused = 0x2,
+            MediaMuted = 0x4,
+            MediaLoop = 0x8,
+            MediaCanSave = 0x10,
+            MediaHasAudio = 0x20,
+        };
+
+        // Extra attributes describing media elements.
+        int mediaFlags;
+
+        // The raw text of the selection in context.
+        WebString selectedText;
+
+        // Whether spell checking is enabled.
+        bool isSpellCheckingEnabled;
+
+        // The editable (possibily) misspelled word.
+        WebString misspelledWord;
+
+        // Whether context is editable.
+        bool isEditable;
+
+        enum EditFlags {
+            CanDoNone = 0x0,
+            CanUndo = 0x1,
+            CanRedo = 0x2,
+            CanCut = 0x4,
+            CanCopy = 0x8,
+            CanPaste = 0x10,
+            CanDelete = 0x20,
+            CanSelectAll = 0x40,
+        };
+
+        // Which edit operations are available in the context.
+        int editFlags;
+
+        // Security information for the context.
+        WebCString securityInfo;
+    };
+
+} // namespace WebKit
+
+#endif
diff --git a/webkit/api/public/WebViewClient.h b/webkit/api/public/WebViewClient.h
index 7f9eb70..70e1db0 100644
--- a/webkit/api/public/WebViewClient.h
+++ b/webkit/api/public/WebViewClient.h
@@ -49,7 +49,7 @@ namespace WebKit {
     class WebString;
     class WebWidget;
     struct WebConsoleMessage;
-    struct WebContextMenuInfo;
+    struct WebContextMenuData;
     struct WebPoint;
     struct WebPopupMenuInfo;
 
@@ -189,6 +189,10 @@ namespace WebKit {
         virtual bool runModalBeforeUnloadDialog(
             WebFrame*, const WebString& message) = 0;
 
+        // Shows a context menu with commands relevant to a specific element on
+        // the a given frame. Additional context data is supplied.
+        virtual void showContextMenu(WebFrame*, const WebContextMenuData&) = 0;
+
         // UI ------------------------------------------------------------------
 
         // Called when script modifies window.status
-- 
cgit v1.1