EditingCallbacks.cpp revision 4576aa36e9a9671459299c7963ac95aa94beaea9
14576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang/* 24576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * Copyright (C) 2010 Igalia S.L. 34576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * 44576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * Redistribution and use in source and binary forms, with or without 54576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * modification, are permitted provided that the following conditions 64576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * are met: 74576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * 84576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * 1. Redistributions of source code must retain the above copyright 94576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * notice, this list of conditions and the following disclaimer. 104576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * 2. Redistributions in binary form must reproduce the above copyright 114576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * notice, this list of conditions and the following disclaimer in the 124576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * documentation and/or other materials provided with the distribution. 134576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 144576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * its contributors may be used to endorse or promote products derived 154576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * from this software without specific prior written permission. 164576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * 174576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 184576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 194576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 204576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 214576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 224576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 234576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 244576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 254576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 264576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 274576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang */ 284576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 294576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "config.h" 304576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "EditingCallbacks.h" 314576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 324576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "CString.h" 334576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "DumpRenderTree.h" 344576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "GOwnPtr.h" 354576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "LayoutTestController.h" 364576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include <gtk/gtk.h> 374576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include <webkit/webkit.h> 384576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 394576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangstatic CString dumpNodePath(WebKitDOMNode* node) 404576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 414576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang GOwnPtr<gchar> nodeName(webkit_dom_node_get_node_name(node)); 424576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang GString* path = g_string_new(nodeName.get()); 434576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 444576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang WebKitDOMNode* parent = webkit_dom_node_get_parent_node(node); 454576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang while (parent) { 464576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang GOwnPtr<gchar> parentName(webkit_dom_node_get_node_name(parent)); 474576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 484576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang g_string_append(path, " > "); 494576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang g_string_append(path, parentName.get()); 504576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang parent = webkit_dom_node_get_parent_node(parent); 514576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang } 524576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 534576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang GOwnPtr<gchar> pathBuffer(g_string_free(path, FALSE)); 544576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return pathBuffer.get(); 554576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 564576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 574576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangstatic CString dumpRange(WebKitDOMRange* range) 584576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 594576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (!range) 604576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return "(null)"; 614576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 624576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang GOwnPtr<GError> error1; 634576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang GOwnPtr<GError> error2; 644576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang GOwnPtr<GError> error3; 654576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang GOwnPtr<GError> error4; 664576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang GOwnPtr<gchar> dump(g_strdup_printf("range from %li of %s to %li of %s", 674576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang webkit_dom_range_get_start_offset(range, &error1.outPtr()), 684576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang dumpNodePath(webkit_dom_range_get_start_container(range, &error2.outPtr())).data(), 694576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang webkit_dom_range_get_end_offset(range, &error3.outPtr()), 704576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang dumpNodePath(webkit_dom_range_get_end_container(range, &error4.outPtr())).data())); 714576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return dump.get(); 724576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 734576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 744576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangstatic const char* insertActionString(WebKitInsertAction action) 754576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 764576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang switch (action) { 774576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang case WEBKIT_INSERT_ACTION_TYPED: 784576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return "WebViewInsertActionTyped"; 794576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang case WEBKIT_INSERT_ACTION_PASTED: 804576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return "WebViewInsertActionPasted"; 814576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang case WEBKIT_INSERT_ACTION_DROPPED: 824576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return "WebViewInsertActionDropped"; 834576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang } 844576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang ASSERT_NOT_REACHED(); 854576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return "WebViewInsertActionTyped"; 864576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 874576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 884576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangstatic const char* selectionAffinityString(WebKitSelectionAffinity affinity) 894576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 904576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang switch (affinity) { 914576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang case WEBKIT_SELECTION_AFFINITY_UPSTREAM: 924576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return "NSSelectionAffinityUpstream"; 934576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang case WEBKIT_SELECTION_AFFINITY_DOWNSTREAM: 944576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return "NSSelectionAffinityDownstream"; 954576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang } 964576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang ASSERT_NOT_REACHED(); 974576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return "NSSelectionAffinityUpstream"; 984576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 994576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 1004576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wanggboolean shouldBeginEditing(WebKitWebView* webView, WebKitDOMRange* range) 1014576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 1024576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (!done && gLayoutTestController->dumpEditingCallbacks()) 1034576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang printf("EDITING DELEGATE: shouldBeginEditingInDOMRange:%s\n", dumpRange(range).data()); 1044576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return TRUE; 1054576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 1064576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 1074576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wanggboolean shouldEndEditing(WebKitWebView* webView, WebKitDOMRange* range) 1084576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 1094576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (!done && gLayoutTestController->dumpEditingCallbacks()) 1104576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang printf("EDITING DELEGATE: shouldEndEditingInDOMRange:%s\n", dumpRange(range).data()); 1114576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return TRUE; 1124576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 1134576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 1144576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wanggboolean shouldInsertNode(WebKitWebView* webView, WebKitDOMNode* node, WebKitDOMRange* range, WebKitInsertAction action) 1154576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 1164576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (!done && gLayoutTestController->dumpEditingCallbacks()) { 1174576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang printf("EDITING DELEGATE: shouldInsertNode:%s replacingDOMRange:%s givenAction:%s\n", 1184576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang dumpNodePath(node).data(), dumpRange(range).data(), insertActionString(action)); 1194576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang } 1204576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return TRUE; 1214576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 1224576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 1234576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wanggboolean shouldInsertText(WebKitWebView* webView, const gchar* text, WebKitDOMRange* range, WebKitInsertAction action) 1244576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 1254576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (!done && gLayoutTestController->dumpEditingCallbacks()) { 1264576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang printf("EDITING DELEGATE: shouldInsertText:%s replacingDOMRange:%s givenAction:%s\n", 1274576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang text, dumpRange(range).data(), insertActionString(action)); 1284576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang } 1294576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return TRUE; 1304576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 1314576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 1324576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wanggboolean shouldDeleteRange(WebKitWebView* webView, WebKitDOMRange* range) 1334576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 1344576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (!done && gLayoutTestController->dumpEditingCallbacks()) 1354576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang printf("EDITING DELEGATE: shouldDeleteDOMRange:%s\n", dumpRange(range).data()); 1364576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return TRUE; 1374576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 1384576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 1394576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wanggboolean shouldShowDeleteInterfaceForElement(WebKitWebView* webView, WebKitDOMHTMLElement* element) 1404576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 1414576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang GOwnPtr<gchar> elementClassName(webkit_dom_html_element_get_class_name(element)); 1424576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return g_str_equal(elementClassName.get(), "needsDeletionUI"); 1434576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 1444576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 1454576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wanggboolean shouldChangeSelectedRange(WebKitWebView* webView, WebKitDOMRange* fromRange, WebKitDOMRange* toRange, WebKitSelectionAffinity affinity, gboolean stillSelecting) 1464576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 1474576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (!done && gLayoutTestController->dumpEditingCallbacks()) { 1484576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang printf("EDITING DELEGATE: shouldChangeSelectedDOMRange:%s toDOMRange:%s affinity:%s stillSelecting:%s\n", 1494576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang dumpRange(fromRange).data(), dumpRange(toRange).data(), selectionAffinityString(affinity), 1504576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang stillSelecting ? "TRUE" : "FALSE"); 1514576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang } 1524576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return TRUE; 1534576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 1544576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 1554576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wanggboolean shouldApplyStyle(WebKitWebView* webView, WebKitDOMCSSStyleDeclaration* style, WebKitDOMRange* range) 1564576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 1574576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (!done && gLayoutTestController->dumpEditingCallbacks()) { 1584576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang GOwnPtr<gchar> styleText(webkit_dom_css_style_declaration_get_css_text(style)); 1594576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang printf("EDITING DELEGATE: shouldApplyStyle:%s toElementsInDOMRange:%s\n", 1604576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang styleText.get(), dumpRange(range).data()); 1614576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang } 1624576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return TRUE; 1634576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 1644576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 1654576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangvoid editingBegan(WebKitWebView*) 1664576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 1674576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (!done && gLayoutTestController->dumpEditingCallbacks()) 1684576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang printf("EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification\n"); 1694576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 1704576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 1714576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangvoid userChangedContents(WebKitWebView*) 1724576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 1734576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (!done && gLayoutTestController->dumpEditingCallbacks()) 1744576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang printf("EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification\n"); 1754576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 1764576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 1774576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangvoid editingEnded(WebKitWebView*) 1784576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 1794576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (!done && gLayoutTestController->dumpEditingCallbacks()) 1804576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang printf("EDITING DELEGATE: webViewDidEndEditing:WebViewDidEndEditingNotification\n"); 1814576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 1824576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 1834576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangvoid selectionChanged(WebKitWebView*) 1844576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 1854576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (!done && gLayoutTestController->dumpEditingCallbacks()) 1864576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang printf("EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification\n"); 1874576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 1884576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 1894576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangvoid connectEditingCallbacks(WebKitWebView* webView) 1904576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 1914576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang g_object_connect(G_OBJECT(webView), 1924576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang "signal::should-begin-editing", shouldBeginEditing, 0, 1934576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang "signal::should-end-editing", shouldEndEditing, 0, 1944576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang "signal::should-insert-node", shouldInsertNode, 0, 1954576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang "signal::should-insert-text", shouldInsertText, 0, 1964576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang "signal::should-delete-range", shouldDeleteRange, 0, 1974576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang "signal::should-show-delete-interface-for-element", shouldShowDeleteInterfaceForElement, 0, 1984576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang "signal::should-change-selected-range", shouldChangeSelectedRange, 0, 1994576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang "signal::should-apply-style", shouldApplyStyle, 0, 2004576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang "signal::editing-began", editingBegan, 0, 2014576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang "signal::user-changed-contents", userChangedContents, 0, 2024576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang "signal::editing-ended", editingEnded, 0, 2034576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang "signal::selection-changed", selectionChanged, 0, 2044576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang NULL); 2054576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 2064576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 207