<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[166973] trunk/Tools</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/166973">166973</a></dd>
<dt>Author</dt> <dd>mrobinson@webkit.org</dd>
<dt>Date</dt> <dd>2014-04-08 15:52:26 -0700 (Tue, 08 Apr 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[GTK] Remove DumpRenderTree and GtkLauncher
https://bugs.webkit.org/show_bug.cgi?id=131373

Reviewed by Andreas Kling.

Remove the GTK+ port of DumpRenderTree and GtkLauncher. These tools are
no longer necessary now that WebKit1 GTK+ will be removed.

* CMakeLists.txt:
* DumpRenderTree/PlatformGTK.cmake: Removed.
* DumpRenderTree/gtk/AccessibilityControllerGtk.cpp: Removed.
* DumpRenderTree/gtk/DumpRenderTree.cpp: Removed.
* DumpRenderTree/gtk/DumpRenderTreeGtk.h: Removed.
* DumpRenderTree/gtk/EditingCallbacks.cpp: Removed.
* DumpRenderTree/gtk/EditingCallbacks.h: Removed.
* DumpRenderTree/gtk/EventSender.cpp: Removed.
* DumpRenderTree/gtk/EventSender.h: Removed.
* DumpRenderTree/gtk/GCControllerGtk.cpp: Removed.
* DumpRenderTree/gtk/PixelDumpSupportGtk.cpp: Removed.
* DumpRenderTree/gtk/SelfScrollingWebKitWebView.cpp: Removed.
* DumpRenderTree/gtk/SelfScrollingWebKitWebView.h: Removed.
* DumpRenderTree/gtk/TestRunnerGtk.cpp: Removed.
* DumpRenderTree/gtk/TextInputController.cpp: Removed.
* DumpRenderTree/gtk/TextInputController.h: Removed.
* DumpRenderTree/gtk/WorkQueueItemGtk.cpp: Removed.
* GtkLauncher/CMakeLists.txt: Removed.
* GtkLauncher/LauncherInspectorWindow.c: Removed.
* GtkLauncher/LauncherInspectorWindow.h: Removed.
* GtkLauncher/main.c: Removed.
* GtkLauncher/simple.svg: Removed.
* GtkLauncher/text.html: Removed.
* WebKitTestRunner/PlatformGTK.cmake:
* WebKitTestRunner/gtk/fonts/AHEM____.TTF: Renamed from Tools/DumpRenderTree/gtk/fonts/AHEM____.TTF.
* WebKitTestRunner/gtk/fonts/FontWithNoValidEncoding.fon: Renamed from Tools/DumpRenderTree/gtk/fonts/FontWithNoValidEncoding.fon.
* WebKitTestRunner/gtk/fonts/fonts.conf: Renamed from Tools/DumpRenderTree/gtk/fonts/fonts.conf.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkToolsCMakeListstxt">trunk/Tools/CMakeLists.txt</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsWebKitTestRunnerPlatformGTKcmake">trunk/Tools/WebKitTestRunner/PlatformGTK.cmake</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li>trunk/Tools/WebKitTestRunner/gtk/fonts/</li>
<li><a href="#trunkToolsWebKitTestRunnergtkfontsAHEM____TTF">trunk/Tools/WebKitTestRunner/gtk/fonts/AHEM____.TTF</a></li>
<li><a href="#trunkToolsWebKitTestRunnergtkfontsFontWithNoValidEncodingfon">trunk/Tools/WebKitTestRunner/gtk/fonts/FontWithNoValidEncoding.fon</a></li>
<li><a href="#trunkToolsWebKitTestRunnergtkfontsfontsconf">trunk/Tools/WebKitTestRunner/gtk/fonts/fonts.conf</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkToolsDumpRenderTreePlatformGTKcmake">trunk/Tools/DumpRenderTree/PlatformGTK.cmake</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkAccessibilityControllerGtkcpp">trunk/Tools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkDumpRenderTreecpp">trunk/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkDumpRenderTreeGtkh">trunk/Tools/DumpRenderTree/gtk/DumpRenderTreeGtk.h</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkEditingCallbackscpp">trunk/Tools/DumpRenderTree/gtk/EditingCallbacks.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkEditingCallbacksh">trunk/Tools/DumpRenderTree/gtk/EditingCallbacks.h</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkEventSendercpp">trunk/Tools/DumpRenderTree/gtk/EventSender.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkEventSenderh">trunk/Tools/DumpRenderTree/gtk/EventSender.h</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkGCControllerGtkcpp">trunk/Tools/DumpRenderTree/gtk/GCControllerGtk.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkPixelDumpSupportGtkcpp">trunk/Tools/DumpRenderTree/gtk/PixelDumpSupportGtk.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkSelfScrollingWebKitWebViewcpp">trunk/Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkSelfScrollingWebKitWebViewh">trunk/Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.h</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkTestRunnerGtkcpp">trunk/Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkTextInputControllercpp">trunk/Tools/DumpRenderTree/gtk/TextInputController.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkTextInputControllerh">trunk/Tools/DumpRenderTree/gtk/TextInputController.h</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkWorkQueueItemGtkcpp">trunk/Tools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkfontsAHEM____TTF">trunk/Tools/DumpRenderTree/gtk/fonts/AHEM____.TTF</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkfontsFontWithNoValidEncodingfon">trunk/Tools/DumpRenderTree/gtk/fonts/FontWithNoValidEncoding.fon</a></li>
<li><a href="#trunkToolsDumpRenderTreegtkfontsfontsconf">trunk/Tools/DumpRenderTree/gtk/fonts/fonts.conf</a></li>
<li><a href="#trunkToolsGtkLauncherCMakeListstxt">trunk/Tools/GtkLauncher/CMakeLists.txt</a></li>
<li><a href="#trunkToolsGtkLauncherLauncherInspectorWindowc">trunk/Tools/GtkLauncher/LauncherInspectorWindow.c</a></li>
<li><a href="#trunkToolsGtkLauncherLauncherInspectorWindowh">trunk/Tools/GtkLauncher/LauncherInspectorWindow.h</a></li>
<li><a href="#trunkToolsGtkLaunchermainc">trunk/Tools/GtkLauncher/main.c</a></li>
<li><a href="#trunkToolsGtkLaunchersimplesvg">trunk/Tools/GtkLauncher/simple.svg</a></li>
<li><a href="#trunkToolsGtkLaunchertexthtml">trunk/Tools/GtkLauncher/text.html</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkToolsCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Tools/CMakeLists.txt (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/CMakeLists.txt        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/CMakeLists.txt        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -22,8 +22,6 @@
</span><span class="cx">         add_subdirectory(TestWebKitAPI/Tests/WebKit2Gtk)
</span><span class="cx">     endif ()
</span><span class="cx">     if (ENABLE_WEBKIT)
</span><del>-        add_subdirectory(GtkLauncher)
-        add_subdirectory(DumpRenderTree)
</del><span class="cx">         add_subdirectory(TestWebKitAPI/Tests/WebKitGtk)
</span><span class="cx">     endif ()
</span><span class="cx">     add_subdirectory(DumpRenderTree/TestNetscapePlugIn)
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/ChangeLog        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,3 +1,41 @@
</span><ins>+2014-04-08  Martin Robinson  &lt;mrobinson@igalia.com&gt;
+
+        [GTK] Remove DumpRenderTree and GtkLauncher
+        https://bugs.webkit.org/show_bug.cgi?id=131373
+
+        Reviewed by Andreas Kling.
+
+        Remove the GTK+ port of DumpRenderTree and GtkLauncher. These tools are
+        no longer necessary now that WebKit1 GTK+ will be removed.
+
+        * CMakeLists.txt:
+        * DumpRenderTree/PlatformGTK.cmake: Removed.
+        * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp: Removed.
+        * DumpRenderTree/gtk/DumpRenderTree.cpp: Removed.
+        * DumpRenderTree/gtk/DumpRenderTreeGtk.h: Removed.
+        * DumpRenderTree/gtk/EditingCallbacks.cpp: Removed.
+        * DumpRenderTree/gtk/EditingCallbacks.h: Removed.
+        * DumpRenderTree/gtk/EventSender.cpp: Removed.
+        * DumpRenderTree/gtk/EventSender.h: Removed.
+        * DumpRenderTree/gtk/GCControllerGtk.cpp: Removed.
+        * DumpRenderTree/gtk/PixelDumpSupportGtk.cpp: Removed.
+        * DumpRenderTree/gtk/SelfScrollingWebKitWebView.cpp: Removed.
+        * DumpRenderTree/gtk/SelfScrollingWebKitWebView.h: Removed.
+        * DumpRenderTree/gtk/TestRunnerGtk.cpp: Removed.
+        * DumpRenderTree/gtk/TextInputController.cpp: Removed.
+        * DumpRenderTree/gtk/TextInputController.h: Removed.
+        * DumpRenderTree/gtk/WorkQueueItemGtk.cpp: Removed.
+        * GtkLauncher/CMakeLists.txt: Removed.
+        * GtkLauncher/LauncherInspectorWindow.c: Removed.
+        * GtkLauncher/LauncherInspectorWindow.h: Removed.
+        * GtkLauncher/main.c: Removed.
+        * GtkLauncher/simple.svg: Removed.
+        * GtkLauncher/text.html: Removed.
+        * WebKitTestRunner/PlatformGTK.cmake:
+        * WebKitTestRunner/gtk/fonts/AHEM____.TTF: Renamed from Tools/DumpRenderTree/gtk/fonts/AHEM____.TTF.
+        * WebKitTestRunner/gtk/fonts/FontWithNoValidEncoding.fon: Renamed from Tools/DumpRenderTree/gtk/fonts/FontWithNoValidEncoding.fon.
+        * WebKitTestRunner/gtk/fonts/fonts.conf: Renamed from Tools/DumpRenderTree/gtk/fonts/fonts.conf.
+
</ins><span class="cx"> 2014-04-08  Mark Rowe  &lt;mrowe@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         XPC services launched by Safari have wrong DYLD_FRAMEWORK_PATH set when launched via run-safari / debug-safari
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreePlatformGTKcmake"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/PlatformGTK.cmake (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/PlatformGTK.cmake        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/PlatformGTK.cmake        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,51 +0,0 @@
</span><del>-list(APPEND DumpRenderTree_SOURCES
-    atk/AccessibilityCallbacksAtk.cpp
-    atk/AccessibilityControllerAtk.cpp
-    atk/AccessibilityNotificationHandlerAtk.cpp
-    atk/AccessibilityUIElementAtk.cpp
-
-    cairo/PixelDumpSupportCairo.cpp
-
-    gtk/AccessibilityControllerGtk.cpp
-    gtk/DumpRenderTree.cpp
-    gtk/EditingCallbacks.cpp
-    gtk/EventSender.cpp
-    gtk/GCControllerGtk.cpp
-    gtk/PixelDumpSupportGtk.cpp
-    gtk/SelfScrollingWebKitWebView.cpp
-    gtk/TestRunnerGtk.cpp
-    gtk/TextInputController.cpp
-    gtk/WorkQueueItemGtk.cpp
-)
-
-list(APPEND DumpRenderTree_LIBRARIES
-    WebCorePlatformGTK
-    ${ATK_LIBRARIES}
-    ${CAIRO_LIBRARIES}
-    ${FONTCONFIG_LIBRARIES}
-    ${GLIB_LIBRARIES}
-    ${GTK_LIBRARIES}
-    ${LIBSOUP_LIBRARIES}
-)
-
-list(APPEND DumpRenderTree_INCLUDE_DIRECTORIES
-    ${DERIVED_SOURCES_DIR}
-    ${DERIVED_SOURCES_WEBKITGTK_DIR}
-    ${WEBKIT_DIR}/gtk
-    ${WEBCORE_DIR}/platform/gtk
-    ${TOOLS_DIR}/DumpRenderTree/atk
-    ${TOOLS_DIR}/DumpRenderTree/cairo
-    ${TOOLS_DIR}/DumpRenderTree/gtk
-    ${ATK_INCLUDE_DIRS}
-    ${CAIRO_INCLUDE_DIRS}
-    ${FONTCONFIG_INCLUDE_DIR}
-    ${GLIB_INCLUDE_DIRS}
-    ${GTK_INCLUDE_DIRS}
-    ${LIBSOUP_INCLUDE_DIRS}
-)
-
-add_definitions(
-    -DTEST_PLUGIN_DIR=&quot;${CMAKE_LIBRARY_OUTPUT_DIRECTORY}&quot;
-    -DFONTS_CONF_DIR=&quot;${TOOLS_DIR}/DumpRenderTree/gtk/fonts&quot;
-    -DTOP_LEVEL_DIR=&quot;${CMAKE_SOURCE_DIR}&quot;
-)
</del></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkAccessibilityControllerGtkcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,79 +0,0 @@
</span><del>-/*
- * Copyright (C) 2008, 2009, 2010 Apple Inc. All Rights Reserved.
- * Copyright (C) 2009 Jan Michael Alonzo
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``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 APPLE INC. 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.
- */
-
-#include &quot;config.h&quot;
-
-#if HAVE(ACCESSIBILITY)
-
-#include &quot;AccessibilityController.h&quot;
-
-#include &quot;AccessibilityCallbacks.h&quot;
-#include &quot;AccessibilityUIElement.h&quot;
-#include &quot;DumpRenderTree.h&quot;
-#include &quot;WebCoreSupport/DumpRenderTreeSupportGtk.h&quot;
-
-#include &lt;atk/atk.h&gt;
-#include &lt;gtk/gtk.h&gt;
-#include &lt;webkit/webkit.h&gt;
-#include &lt;wtf/gobject/GUniquePtr.h&gt;
-
-AccessibilityUIElement AccessibilityController::focusedElement()
-{
-    AtkObject* accessible =  DumpRenderTreeSupportGtk::getFocusedAccessibleElement(mainFrame);
-    if (!accessible)
-        return 0;
-
-    return AccessibilityUIElement(accessible);
-}
-
-AccessibilityUIElement AccessibilityController::rootElement()
-{
-    AtkObject* accessible = DumpRenderTreeSupportGtk::getRootAccessibleElement(mainFrame);
-    if (!accessible)
-        return 0;
-
-    return AccessibilityUIElement(accessible);
-}
-
-AccessibilityUIElement AccessibilityController::accessibleElementById(JSStringRef id)
-{
-    AtkObject* root = DumpRenderTreeSupportGtk::getRootAccessibleElement(mainFrame);
-    if (!root)
-        return 0;
-
-    size_t bufferSize = JSStringGetMaximumUTF8CStringSize(id);
-    GUniquePtr&lt;gchar&gt; idBuffer(static_cast&lt;gchar*&gt;(g_malloc(bufferSize)));
-    JSStringGetUTF8CString(id, idBuffer.get(), bufferSize);
-
-    AtkObject* result = childElementById(root, idBuffer.get());
-    if (ATK_IS_OBJECT(result))
-        return AccessibilityUIElement(result);
-
-    return 0;
-
-}
-
-#endif // HAVE(ACCESSIBILITY)
</del></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkDumpRenderTreecpp"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,1548 +0,0 @@
</span><del>-/*
- * Copyright (C) 2007 Eric Seidel &lt;eric@webkit.org&gt;
- * Copyright (C) 2008 Alp Toker &lt;alp@nuanti.com&gt;
- * Copyright (C) 2009 Jan Alonzo &lt;jmalonzo@gmail.com&gt;
- * Copyright (C) 2010, 2011 Igalia S.L.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) 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 APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 APPLE OR ITS 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.
- */
-
-#include &quot;config.h&quot;
-#include &quot;DumpRenderTree.h&quot;
-
-#include &quot;AccessibilityController.h&quot;
-#include &quot;EditingCallbacks.h&quot;
-#include &quot;EventSender.h&quot;
-#include &quot;GCController.h&quot;
-#include &quot;PixelDumpSupport.h&quot;
-#include &quot;SelfScrollingWebKitWebView.h&quot;
-#include &quot;TestRunner.h&quot;
-#include &quot;TextInputController.h&quot;
-#include &quot;WebCoreSupport/DumpRenderTreeSupportGtk.h&quot;
-#include &quot;WebCoreTestSupport.h&quot;
-#include &quot;WorkQueue.h&quot;
-#include &quot;WorkQueueItem.h&quot;
-#include &lt;JavaScriptCore/JavaScript.h&gt;
-#include &lt;WebCore/platform/network/soup/GUniquePtrSoup.h&gt;
-#include &lt;cassert&gt;
-#include &lt;cstdlib&gt;
-#include &lt;cstring&gt;
-#include &lt;getopt.h&gt;
-#include &lt;gtk/gtk.h&gt;
-#include &lt;locale.h&gt;
-#include &lt;webkit/webkit.h&gt;
-#include &lt;wtf/Assertions.h&gt;
-#include &lt;wtf/gobject/GlibUtilities.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-#if PLATFORM(X11)
-#include &lt;fontconfig/fontconfig.h&gt;
-#endif
-
-
-using namespace std;
-
-extern &quot;C&quot; {
-// This API is not yet public.
-extern gchar* webkit_web_history_item_get_target(WebKitWebHistoryItem*);
-extern gboolean webkit_web_history_item_is_target_item(WebKitWebHistoryItem*);
-extern GList* webkit_web_history_item_get_children(WebKitWebHistoryItem*);
-extern void webkit_web_settings_add_extra_plugin_directory(WebKitWebView* view, const gchar* directory);
-extern gchar* webkit_web_frame_get_response_mime_type(WebKitWebFrame* frame);
-}
-
-volatile bool done;
-static bool printSeparators;
-static int dumpPixelsForAllTests = false;
-static bool dumpPixelsForCurrentTest;
-static int dumpTree = 1;
-static int useTimeoutWatchdog = 1;
-
-#if HAVE(ACCESSIBILITY)
-AccessibilityController* axController = 0;
-#endif
-RefPtr&lt;TestRunner&gt; gTestRunner;
-static GCController* gcController = 0;
-static WebKitWebView* webView;
-static GtkWidget* window;
-static GtkWidget* container;
-static GtkWidget* webInspectorWindow;
-WebKitWebFrame* mainFrame = 0;
-WebKitWebFrame* topLoadingFrame = 0;
-guint waitToDumpWatchdog = 0;
-bool waitForPolicy = false;
-
-// This is a list of opened webviews
-GSList* webViewList = 0;
-
-// current b/f item at the end of the previous test
-static WebKitWebHistoryItem* prevTestBFItem = NULL;
-
-const unsigned historyItemIndent = 8;
-
-static void runTest(const string&amp; inputLine);
-
-static void didRunInsecureContent(WebKitWebFrame*, WebKitSecurityOrigin*, const char* url);
-
-static bool shouldLogFrameLoadDelegates(const string&amp; pathOrURL)
-{
-    return pathOrURL.find(&quot;loading/&quot;) != string::npos;
-}
-
-static bool shouldDumpAsText(const string&amp; pathOrURL)
-{
-    return pathOrURL.find(&quot;dumpAsText/&quot;) != string::npos;
-}
-
-static bool shouldEnableDeveloperExtras(const string&amp; pathOrURL)
-{
-    return true;
-}
-
-void dumpFrameScrollPosition(WebKitWebFrame* frame)
-{
-    WebKitDOMDocument* document = webkit_web_frame_get_dom_document(frame);
-    if (!document)
-        return;
-
-    WebKitDOMDOMWindow* domWindow = webkit_dom_document_get_default_view(document);
-    if (!domWindow)
-        return;
-
-    glong x = webkit_dom_dom_window_get_page_x_offset(domWindow);
-    glong y = webkit_dom_dom_window_get_page_y_offset(domWindow);
-
-    if (abs(x) &gt; 0 || abs(y) &gt; 0) {
-        if (webkit_web_frame_get_parent(frame))
-            printf(&quot;frame '%s' &quot;, webkit_web_frame_get_name(frame));
-        printf(&quot;scrolled to %ld,%ld\n&quot;, x, y);
-    }
-
-    if (gTestRunner-&gt;dumpChildFrameScrollPositions()) {
-        GSList* children = DumpRenderTreeSupportGtk::getFrameChildren(frame);
-        for (GSList* child = children; child; child = g_slist_next(child))
-            dumpFrameScrollPosition(static_cast&lt;WebKitWebFrame*&gt;(child-&gt;data));
-        g_slist_free(children);
-    }
-}
-
-void displayWebView()
-{
-    DumpRenderTreeSupportGtk::forceWebViewPaint(webView);
-    DumpRenderTreeSupportGtk::setTracksRepaints(mainFrame, true);
-    DumpRenderTreeSupportGtk::resetTrackedRepaints(mainFrame);
-}
-
-static void appendString(gchar*&amp; target, const gchar* string)
-{
-    gchar* oldString = target;
-    target = g_strconcat(target, string, NULL);
-    g_free(oldString);
-}
-
-static void initializeGtkFontSettings(const char* testURL)
-{
-    GtkSettings* settings = gtk_settings_get_default();
-    if (!settings)
-        return;
-    g_object_set(settings,
-                 &quot;gtk-xft-dpi&quot;, 98304, // This is 96 * 1024 or 96 DPI according to the GTK+ docs.
-                 &quot;gtk-xft-antialias&quot;, 1,
-                 &quot;gtk-xft-hinting&quot;, 0,
-                 &quot;gtk-font-name&quot;, &quot;Liberation Sans 12&quot;,
-                 &quot;gtk-icon-theme-name&quot;, &quot;gnome&quot;,
-                 NULL);
-    gdk_screen_set_resolution(gdk_screen_get_default(), 96.0);
-
-    // One test needs subpixel anti-aliasing turned on, but generally we
-    // want all text in other tests to use to grayscale anti-aliasing.
-    if (testURL &amp;&amp; strstr(testURL, &quot;xsettings_antialias_settings.html&quot;))
-        g_object_set(settings, &quot;gtk-xft-rgba&quot;, &quot;rgb&quot;, NULL);
-    else
-        g_object_set(settings, &quot;gtk-xft-rgba&quot;, &quot;none&quot;, NULL);
-}
-
-CString getTopLevelPath()
-{
-    if (const gchar* topLevel = g_getenv(&quot;WEBKIT_TOP_LEVEL&quot;))
-        return topLevel;
-
-    g_setenv(&quot;WEBKIT_TOP_LEVEL&quot;, TOP_LEVEL_DIR, FALSE);
-    return TOP_LEVEL_DIR;
-}
-
-CString getOutputDir()
-{
-    const char* webkitOutputDir = g_getenv(&quot;WEBKIT_OUTPUTDIR&quot;);
-    if (webkitOutputDir)
-        return webkitOutputDir;
-
-    CString topLevelPath = getTopLevelPath();
-    GUniquePtr&lt;char&gt; outputDir(g_build_filename(topLevelPath.data(), &quot;WebKitBuild&quot;, NULL));
-    return outputDir.get();
-}
-
-static CString getFontsPath()
-{
-    CString webkitOutputDir = getOutputDir();
-    GUniquePtr&lt;char&gt; fontsPath(g_build_filename(webkitOutputDir.data(), &quot;Dependencies&quot;, &quot;Root&quot;, &quot;webkitgtk-test-fonts&quot;, NULL));
-    if (g_file_test(fontsPath.get(), static_cast&lt;GFileTest&gt;(G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)))
-        return fontsPath.get();
-
-    // Try alternative fonts path.
-    fontsPath.reset(g_build_filename(webkitOutputDir.data(), &quot;webkitgtk-test-fonts&quot;, NULL));
-    if (g_file_test(fontsPath.get(), static_cast&lt;GFileTest&gt;(G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)))
-        return fontsPath.get();
-
-    return CString();
-}
-
-static void initializeFonts(const char* testURL = 0)
-{
-#if PLATFORM(X11)
-    initializeGtkFontSettings(testURL);
-
-    FcInit();
-
-    // If a test resulted a font being added or removed via the @font-face rule, then
-    // we want to reset the FontConfig configuration to prevent it from affecting other tests.
-    static int numFonts = 0;
-    FcFontSet* appFontSet = FcConfigGetFonts(0, FcSetApplication);
-    if (appFontSet &amp;&amp; numFonts &amp;&amp; appFontSet-&gt;nfont == numFonts)
-        return;
-
-    // Load our configuration file, which sets up proper aliases for family
-    // names like sans, serif and monospace.
-    FcConfig* config = FcConfigCreate();
-    GUniquePtr&lt;gchar&gt; fontConfigFilename(g_build_filename(FONTS_CONF_DIR, &quot;fonts.conf&quot;, nullptr));
-    if (!FcConfigParseAndLoad(config, reinterpret_cast&lt;FcChar8*&gt;(fontConfigFilename.get()), true))
-        g_error(&quot;Couldn't load font configuration file from: %s&quot;, fontConfigFilename.get());
-
-    CString fontsPath = getFontsPath();
-    if (fontsPath.isNull())
-        g_error(&quot;Could not locate test fonts at $WEBKIT_TOP_LEVEL/WebKitBuild/Dependencies/Root/webkitgtk-test-fonts. &quot;
-            &quot;WEBKIT_TOP_LEVEL is your WebKit checkout by default, and can be overridden by setting it as an environment variable.&quot;);
-
-    GUniquePtr&lt;GDir&gt; fontsDirectory(g_dir_open(fontsPath.data(), 0, nullptr));
-    while (const char* directoryEntry = g_dir_read_name(fontsDirectory.get())) {
-        if (!g_str_has_suffix(directoryEntry, &quot;.ttf&quot;) &amp;&amp; !g_str_has_suffix(directoryEntry, &quot;.otf&quot;))
-            continue;
-        GUniquePtr&lt;gchar&gt; fontPath(g_build_filename(fontsPath.data(), directoryEntry, nullptr));
-        if (!FcConfigAppFontAddFile(config, reinterpret_cast&lt;const FcChar8*&gt;(fontPath.get())))
-            g_error(&quot;Could not load font at %s!&quot;, fontPath.get());
-
-    }
-
-    // Ahem is used by many layout tests.
-    GUniquePtr&lt;gchar&gt; ahemFontFilename(g_build_filename(FONTS_CONF_DIR, &quot;AHEM____.TTF&quot;, nullptr));
-    if (!FcConfigAppFontAddFile(config, reinterpret_cast&lt;FcChar8*&gt;(ahemFontFilename.get())))
-        g_error(&quot;Could not load font at %s!&quot;, ahemFontFilename.get()); 
-
-    for (int i = 1; i &lt;= 9; i++) {
-        GUniquePtr&lt;gchar&gt; fontFilename(g_strdup_printf(&quot;WebKitWeightWatcher%i00.ttf&quot;, i));
-        GUniquePtr&lt;gchar&gt; fontPath(g_build_filename(FONTS_CONF_DIR, &quot;..&quot;, &quot;..&quot;, &quot;fonts&quot;, fontFilename.get(), nullptr));
-        if (!FcConfigAppFontAddFile(config, reinterpret_cast&lt;FcChar8*&gt;(fontPath.get())))
-            g_error(&quot;Could not load font at %s!&quot;, fontPath.get()); 
-    }
-
-    // A font with no valid Fontconfig encoding to test https://bugs.webkit.org/show_bug.cgi?id=47452
-    GUniquePtr&lt;gchar&gt; fontWithNoValidEncodingFilename(g_build_filename(FONTS_CONF_DIR, &quot;FontWithNoValidEncoding.fon&quot;, nullptr));
-    if (!FcConfigAppFontAddFile(config, reinterpret_cast&lt;FcChar8*&gt;(fontWithNoValidEncodingFilename.get())))
-        g_error(&quot;Could not load font at %s!&quot;, fontWithNoValidEncodingFilename.get()); 
-
-    if (!FcConfigSetCurrent(config))
-        g_error(&quot;Could not set the current font configuration!&quot;);
-
-    numFonts = FcConfigGetFonts(config, FcSetApplication)-&gt;nfont;
-#endif
-}
-
-static gchar* dumpFramesAsText(WebKitWebFrame* frame)
-{
-    gchar* result = 0;
-
-    // Add header for all but the main frame.
-    bool isMainFrame = (webkit_web_view_get_main_frame(webView) == frame);
-
-    CString innerText = DumpRenderTreeSupportGtk::getInnerText(frame);
-    if (isMainFrame)
-        result = g_strdup_printf(&quot;%s\n&quot;, innerText.data());
-    else {
-        const gchar* frameName = webkit_web_frame_get_name(frame);
-        result = g_strdup_printf(&quot;\n--------\nFrame: '%s'\n--------\n%s\n&quot;, frameName, innerText.data());
-    }
-
-    if (gTestRunner-&gt;dumpChildFramesAsText()) {
-        GSList* children = DumpRenderTreeSupportGtk::getFrameChildren(frame);
-        for (GSList* child = children; child; child = g_slist_next(child)) {
-            GUniquePtr&lt;gchar&gt; childData(dumpFramesAsText(static_cast&lt;WebKitWebFrame*&gt;(child-&gt;data)));
-            appendString(result, childData.get());
-        }
-        g_slist_free(children);
-    }
-
-    return result;
-}
-
-static gint compareHistoryItems(gpointer* item1, gpointer* item2)
-{
-    GUniquePtr&lt;gchar&gt; firstItemTarget(webkit_web_history_item_get_target(WEBKIT_WEB_HISTORY_ITEM(item1)));
-    GUniquePtr&lt;gchar&gt; secondItemTarget(webkit_web_history_item_get_target(WEBKIT_WEB_HISTORY_ITEM(item2)));
-    return g_ascii_strcasecmp(firstItemTarget.get(), secondItemTarget.get());
-}
-
-static void dumpHistoryItem(WebKitWebHistoryItem* item, int indent, bool current)
-{
-    ASSERT(item != NULL);
-    int start = 0;
-    g_object_ref(item);
-    if (current) {
-        printf(&quot;curr-&gt;&quot;);
-        start = 6;
-    }
-    for (int i = start; i &lt; indent; i++)
-        putchar(' ');
-
-    // normalize file URLs.
-    const gchar* uri = webkit_web_history_item_get_uri(item);
-    gchar* uriScheme = g_uri_parse_scheme(uri);
-    if (g_strcmp0(uriScheme, &quot;file&quot;) == 0) {
-        gchar* pos = g_strstr_len(uri, -1, &quot;/LayoutTests/&quot;);
-        if (!pos) {
-            g_free(uriScheme);
-            return;
-        }
-
-        GString* result = g_string_sized_new(strlen(uri));
-        result = g_string_append(result, &quot;(file test):&quot;);
-        result = g_string_append(result, pos + strlen(&quot;/LayoutTests/&quot;));
-        printf(&quot;%s&quot;, result-&gt;str);
-        g_string_free(result, TRUE);
-    } else
-        printf(&quot;%s&quot;, uri);
-
-    g_free(uriScheme);
-
-    GUniquePtr&lt;gchar&gt; target(webkit_web_history_item_get_target(item));
-    if (target.get() &amp;&amp; strlen(target.get()) &gt; 0)
-        printf(&quot; (in frame \&quot;%s\&quot;)&quot;, target.get());
-    if (webkit_web_history_item_is_target_item(item))
-        printf(&quot;  **nav target**&quot;);
-    putchar('\n');
-
-    if (GList* kids = webkit_web_history_item_get_children(item)) {
-        // must sort to eliminate arbitrary result ordering which defeats reproducible testing
-        for (GList* kid = g_list_sort(kids, (GCompareFunc) compareHistoryItems); kid; kid = g_list_next(kid)) {
-            WebKitWebHistoryItem* item = WEBKIT_WEB_HISTORY_ITEM(kid-&gt;data);
-            dumpHistoryItem(item, indent + 4, FALSE);
-            g_object_unref(item);
-        }
-        g_list_free(kids);
-    }
-    g_object_unref(item);
-}
-
-static void dumpBackForwardListForWebView(WebKitWebView* view)
-{
-    printf(&quot;\n============== Back Forward List ==============\n&quot;);
-    WebKitWebBackForwardList* bfList = webkit_web_view_get_back_forward_list(view);
-
-    // Print out all items in the list after prevTestBFItem, which was from the previous test
-    // Gather items from the end of the list, the print them out from oldest to newest
-    GList* itemsToPrint = NULL;
-    gint forwardListCount = webkit_web_back_forward_list_get_forward_length(bfList);
-    for (int i = forwardListCount; i &gt; 0; i--) {
-        WebKitWebHistoryItem* item = webkit_web_back_forward_list_get_nth_item(bfList, i);
-        // something is wrong if the item from the last test is in the forward part of the b/f list
-        ASSERT(item != prevTestBFItem);
-        g_object_ref(item);
-        itemsToPrint = g_list_prepend(itemsToPrint, item);
-    }
-
-    WebKitWebHistoryItem* currentItem = webkit_web_back_forward_list_get_current_item(bfList);
-    g_object_ref(currentItem);
-    itemsToPrint = g_list_prepend(itemsToPrint, currentItem);
-
-    gint backListCount = webkit_web_back_forward_list_get_back_length(bfList);
-    for (int i = -1; i &gt;= -(backListCount); i--) {
-        WebKitWebHistoryItem* item = webkit_web_back_forward_list_get_nth_item(bfList, i);
-        if (item == prevTestBFItem)
-            break;
-        g_object_ref(item);
-        itemsToPrint = g_list_prepend(itemsToPrint, item);
-    }
-
-    for (GList* itemToPrint = itemsToPrint; itemToPrint; itemToPrint = g_list_next(itemToPrint)) {
-        WebKitWebHistoryItem* item = WEBKIT_WEB_HISTORY_ITEM(itemToPrint-&gt;data);
-        dumpHistoryItem(item, historyItemIndent, item == currentItem);
-        g_object_unref(item);
-    }
-
-    g_list_free(itemsToPrint);
-    printf(&quot;===============================================\n&quot;);
-}
-
-static void dumpBackForwardListForAllWebViews()
-{
-    // Dump the back forward list of the main WebView first
-    dumpBackForwardListForWebView(webView);
-
-    // The view list is prepended. Reverse the list so we get the order right.
-    for (GSList* currentView = g_slist_reverse(webViewList); currentView; currentView = g_slist_next(currentView))
-        dumpBackForwardListForWebView(WEBKIT_WEB_VIEW(currentView-&gt;data));
-}
-
-void setWaitToDumpWatchdog(guint timer)
-{
-    waitToDumpWatchdog = timer;
-}
-
-bool shouldSetWaitToDumpWatchdog()
-{
-    return !waitToDumpWatchdog &amp;&amp; useTimeoutWatchdog;
-}
-
-CString soupURIToStringPreservingPassword(SoupURI* soupURI)
-{
-    if (!soupURI-&gt;password) {
-        GUniquePtr&lt;char&gt; uriString(soup_uri_to_string(soupURI, FALSE));
-        return uriString.get();
-    }
-
-    // soup_uri_to_string does not insert the password into the string, so we need to create the
-    // URI string and then reinsert any credentials that were present in the SoupURI. All tests that
-    // use URL-embedded credentials use HTTP, so it's safe here.
-    GUniquePtr&lt;char&gt; password(soupURI-&gt;password);
-    GUniquePtr&lt;char&gt; user(soupURI-&gt;user);
-    soupURI-&gt;password = 0;
-    soupURI-&gt;user = 0;
-
-    GUniquePtr&lt;char&gt; uriString(soup_uri_to_string(soupURI, FALSE));
-    String absoluteURIWithoutCredentialString = String::fromUTF8(uriString.get());
-    String protocolAndCredential = String::format(&quot;http://%s:%s@&quot;, user ? user.get() : &quot;&quot;, password.get());
-    return absoluteURIWithoutCredentialString.replace(&quot;http://&quot;, protocolAndCredential).utf8();
-}
-
-static void invalidateAnyPreviousWaitToDumpWatchdog()
-{
-    if (waitToDumpWatchdog) {
-        g_source_remove(waitToDumpWatchdog);
-        waitToDumpWatchdog = 0;
-    }
-
-    waitForPolicy = false;
-}
-
-static void resetDefaultsToConsistentValues()
-{
-    WebKitWebSettings* settings = webkit_web_view_get_settings(webView);
-    GUniquePtr&lt;gchar&gt; localStoragePath(g_build_filename(g_get_user_data_dir(), &quot;DumpRenderTreeGtk&quot;, &quot;databases&quot;, nullptr));
-    g_object_set(G_OBJECT(settings),
-        &quot;enable-accelerated-compositing&quot;, FALSE,
-        &quot;enable-private-browsing&quot;, FALSE,
-        &quot;enable-developer-extras&quot;, FALSE,
-        &quot;enable-spell-checking&quot;, TRUE,
-        &quot;enable-html5-database&quot;, TRUE,
-        &quot;enable-html5-local-storage&quot;, TRUE,
-        &quot;html5-local-storage-database-path&quot;, localStoragePath.get(),
-        &quot;enable-xss-auditor&quot;, FALSE,
-        &quot;enable-spatial-navigation&quot;, FALSE,
-        &quot;javascript-can-access-clipboard&quot;, TRUE,
-        &quot;javascript-can-open-windows-automatically&quot;, TRUE,
-        &quot;enable-offline-web-application-cache&quot;, TRUE,
-        &quot;enable-universal-access-from-file-uris&quot;, TRUE,
-        &quot;enable-file-access-from-file-uris&quot;, TRUE,
-        &quot;enable-scripts&quot;, TRUE,
-        &quot;enable-dom-paste&quot;, TRUE,
-        &quot;default-font-family&quot;, &quot;Times&quot;,
-        &quot;monospace-font-family&quot;, &quot;Courier&quot;,
-        &quot;serif-font-family&quot;, &quot;Times&quot;,
-        &quot;sans-serif-font-family&quot;, &quot;Helvetica&quot;,
-        &quot;cursive-font-family&quot;, &quot;cursive&quot;,
-        &quot;fantasy-font-family&quot;, &quot;fantasy&quot;,
-        &quot;default-font-size&quot;, 12,
-        &quot;default-monospace-font-size&quot;, 10,
-        &quot;minimum-font-size&quot;, 0,
-        &quot;enable-caret-browsing&quot;, FALSE,
-        &quot;enable-page-cache&quot;, FALSE,
-        &quot;auto-resize-window&quot;, TRUE,
-        &quot;auto-load-images&quot;, TRUE,
-        &quot;enable-java-applet&quot;, FALSE,
-        &quot;enable-plugins&quot;, TRUE,
-        &quot;enable-hyperlink-auditing&quot;, FALSE,
-        &quot;editing-behavior&quot;, WEBKIT_EDITING_BEHAVIOR_UNIX,
-        &quot;enable-fullscreen&quot;, TRUE,
-        &quot;enable-mediasource&quot;, TRUE,
-        NULL);
-    webkit_web_view_set_settings(webView, settings);
-    webkit_set_cache_model(WEBKIT_CACHE_MODEL_DOCUMENT_BROWSER);
-
-    DumpRenderTreeSupportGtk::clearMainFrameName(mainFrame);
-    DumpRenderTreeSupportGtk::scalePageBy(webView, 1, 0, 0);
-
-    WebKitWebInspector* inspector = webkit_web_view_get_inspector(webView);
-    g_object_set(G_OBJECT(inspector), &quot;javascript-profiling-enabled&quot;, FALSE, NULL);
-
-    webkit_web_view_set_zoom_level(webView, 1.0);
-
-    DumpRenderTreeSupportGtk::resetOriginAccessWhiteLists();
-
-    WebKitWebBackForwardList* list = webkit_web_view_get_back_forward_list(webView);
-    webkit_web_back_forward_list_clear(list);
-
-    SoupSession* session = webkit_get_default_session();
-    SoupCookieJar* jar = reinterpret_cast&lt;SoupCookieJar*&gt;(soup_session_get_feature(session, SOUP_TYPE_COOKIE_JAR));
-
-    // We only create the jar when the soup backend needs to do
-    // HTTP. Should we initialize it earlier, perhaps?
-    if (jar)
-        g_object_set(G_OBJECT(jar), SOUP_COOKIE_JAR_ACCEPT_POLICY, SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY, NULL);
-
-    setlocale(LC_ALL, &quot;&quot;);
-
-    DumpRenderTreeSupportGtk::setLinksIncludedInFocusChain(true);
-    webkit_icon_database_set_path(webkit_get_icon_database(), 0);
-    DumpRenderTreeSupportGtk::setDefersLoading(webView, false);
-    DumpRenderTreeSupportGtk::setSerializeHTTPLoads(false);
-
-#if HAVE(ACCESSIBILITY)
-    if (axController)
-        axController-&gt;resetToConsistentState();
-#endif
-
-    DumpRenderTreeSupportGtk::clearOpener(mainFrame);
-    DumpRenderTreeSupportGtk::setTracksRepaints(mainFrame, false);
-
-    DumpRenderTreeSupportGtk::resetGeolocationClientMock(webView);
-
-    DumpRenderTreeSupportGtk::setCSSGridLayoutEnabled(webView, false);
-    DumpRenderTreeSupportGtk::setCSSRegionsEnabled(webView, true);
-    DumpRenderTreeSupportGtk::setExperimentalContentSecurityPolicyFeaturesEnabled(true);
-
-    if (gTestRunner) {
-        gTestRunner-&gt;setAuthenticationPassword(&quot;&quot;);
-        gTestRunner-&gt;setAuthenticationUsername(&quot;&quot;);
-        gTestRunner-&gt;setHandlesAuthenticationChallenges(false);
-    }
-
-    gtk_widget_set_direction(GTK_WIDGET(webView), GTK_TEXT_DIR_NONE);
-}
-
-static bool useLongRunningServerMode(int argc, char *argv[])
-{
-    // This assumes you've already called getopt_long
-    return (argc == optind+1 &amp;&amp; !strcmp(argv[optind], &quot;-&quot;));
-}
-
-static void runTestingServerLoop()
-{
-    // When DumpRenderTree runs in server mode, we just wait around for file names
-    // to be passed to us and read each in turn, passing the results back to the client
-    char filenameBuffer[2048];
-    while (fgets(filenameBuffer, sizeof(filenameBuffer), stdin)) {
-        char* newLineCharacter = strchr(filenameBuffer, '\n');
-        if (newLineCharacter)
-            *newLineCharacter = '\0';
-
-        if (!strlen(filenameBuffer))
-            continue;
-
-        runTest(filenameBuffer);
-    }
-}
-
-static void initializeGlobalsFromCommandLineOptions(int argc, char *argv[])
-{
-    struct option options[] = {
-        {&quot;notree&quot;, no_argument, &amp;dumpTree, false},
-        {&quot;pixel-tests&quot;, no_argument, &amp;dumpPixelsForAllTests, true},
-        {&quot;tree&quot;, no_argument, &amp;dumpTree, true},
-        {&quot;no-timeout&quot;, no_argument, &amp;useTimeoutWatchdog, false},
-        {NULL, 0, NULL, 0}
-    };
-    
-    int option;
-    while ((option = getopt_long(argc, (char * const *)argv, &quot;&quot;, options, NULL)) != -1) {
-        switch (option) {
-        case '?': // unknown or ambiguous option
-        case ':': // missing argument
-            exit(1);
-            break;
-        }
-    }
-}
-
-
-void dump()
-{
-    invalidateAnyPreviousWaitToDumpWatchdog();
-
-    // Grab widget focus before dumping the contents of a widget, in
-    // case it was lost in the course of the test.
-    gtk_widget_grab_focus(GTK_WIDGET(webView));
-
-    if (dumpTree) {
-        char* result = 0;
-        gchar* responseMimeType = webkit_web_frame_get_response_mime_type(mainFrame);
-
-        if (g_str_equal(responseMimeType, &quot;text/plain&quot;)) {
-            gTestRunner-&gt;setDumpAsText(true);
-            gTestRunner-&gt;setGeneratePixelResults(false);
-        }
-        g_free(responseMimeType);
-
-        if (gTestRunner-&gt;dumpAsText())
-            result = dumpFramesAsText(mainFrame);
-        else {
-            // Widget resizing is done asynchronously in GTK+. We pump the main
-            // loop here, to flush any pending resize requests. This prevents
-            // timing issues which affect the size of elements in the output.
-            // We only enable this workaround for tests that print the render tree
-            // because this seems to break some dumpAsText tests: see bug 39988
-            // After fixing that test, we should apply this approach to all dumps.
-            while (gtk_events_pending())
-                gtk_main_iteration();
-
-            result = g_strdup(DumpRenderTreeSupportGtk::dumpRenderTree(mainFrame).data());
-        }
-
-        if (!result) {
-            const char* errorMessage;
-            if (gTestRunner-&gt;dumpAsText())
-                errorMessage = &quot;[documentElement innerText]&quot;;
-            else if (gTestRunner-&gt;dumpDOMAsWebArchive())
-                errorMessage = &quot;[[mainFrame DOMDocument] webArchive]&quot;;
-            else if (gTestRunner-&gt;dumpSourceAsWebArchive())
-                errorMessage = &quot;[[mainFrame dataSource] webArchive]&quot;;
-            else
-                errorMessage = &quot;[mainFrame renderTreeAsExternalRepresentation]&quot;;
-            printf(&quot;ERROR: nil result from %s&quot;, errorMessage);
-        } else {
-            printf(&quot;%s&quot;, result);
-            g_free(result);
-            if (!gTestRunner-&gt;dumpAsText() &amp;&amp; !gTestRunner-&gt;dumpDOMAsWebArchive() &amp;&amp; !gTestRunner-&gt;dumpSourceAsWebArchive())
-                dumpFrameScrollPosition(mainFrame);
-
-            if (gTestRunner-&gt;dumpBackForwardList())
-                dumpBackForwardListForAllWebViews();
-        }
-
-        if (printSeparators) {
-            puts(&quot;#EOF&quot;); // terminate the content block
-            fputs(&quot;#EOF\n&quot;, stderr);
-            fflush(stdout);
-            fflush(stderr);
-        }
-    }
-
-    if (dumpPixelsForCurrentTest
-     &amp;&amp; gTestRunner-&gt;generatePixelResults()
-     &amp;&amp; !gTestRunner-&gt;dumpDOMAsWebArchive()
-     &amp;&amp; !gTestRunner-&gt;dumpSourceAsWebArchive()) {
-        DumpRenderTreeSupportGtk::forceWebViewPaint(webView);
-        dumpWebViewAsPixelsAndCompareWithExpected(gTestRunner-&gt;expectedPixelHash());
-    }
-
-    // FIXME: call displayWebView here when we support --paint
-
-    done = true;
-    gtk_main_quit();
-}
-
-static CString temporaryDatabaseDirectory()
-{
-    const char* directoryFromEnvironment = g_getenv(&quot;DUMPRENDERTREE_TEMP&quot;);
-    if (directoryFromEnvironment)
-        return directoryFromEnvironment;
-    GUniquePtr&lt;char&gt; fallback(g_build_filename(g_get_user_data_dir(), &quot;gtkwebkitdrt&quot;, &quot;databases&quot;, NULL));
-    return fallback.get();
-}
-
-static void setDefaultsToConsistentStateValuesForTesting()
-{
-    resetDefaultsToConsistentValues();
-
-#if PLATFORM(X11)
-    webkit_web_settings_add_extra_plugin_directory(webView, TEST_PLUGIN_DIR);
-#endif
-
-    webkit_set_web_database_directory_path(temporaryDatabaseDirectory().data());
-
-#if defined(GTK_API_VERSION_2)
-    gtk_rc_parse_string(&quot;style \&quot;nix_scrollbar_spacing\&quot;                    &quot;
-                        &quot;{                                                  &quot;
-                        &quot;    GtkScrolledWindow::scrollbar-spacing = 0       &quot;
-                        &quot;}                                                  &quot;
-                        &quot;class \&quot;GtkWidget\&quot; style \&quot;nix_scrollbar_spacing\&quot;&quot;);
-
-#else
-    GtkCssProvider* cssProvider = gtk_css_provider_new();
-    gtk_css_provider_load_from_data(cssProvider,
-                                    &quot;@binding-set NoKeyboardNavigation {        &quot;
-                                    &quot;   unbind \&quot;&lt;shift&gt;F10\&quot;;                  &quot;
-                                    &quot;}                                          &quot;
-                                    &quot; * {                                       &quot;
-                                    &quot;   -GtkScrolledWindow-scrollbar-spacing: 0;&quot;
-                                    &quot;   gtk-key-bindings: NoKeyboardNavigation; &quot;
-                                    &quot;}                                          &quot;,
-                                    -1, 0);
-    gtk_style_context_add_provider_for_screen(gdk_display_get_default_screen(gdk_display_get_default()),
-                                              GTK_STYLE_PROVIDER(cssProvider),
-                                              GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
-    g_object_unref(cssProvider);
-#endif
-}
-
-static void sendPixelResultsEOF()
-{
-    puts(&quot;#EOF&quot;);
-
-    fflush(stdout);
-    fflush(stderr);
-}
-
-static void runTest(const string&amp; inputLine)
-{
-    ASSERT(!inputLine.empty());
-
-    TestCommand command = parseInputLine(inputLine);
-    string&amp; testURL = command.pathOrURL;
-    dumpPixelsForCurrentTest = command.shouldDumpPixels || dumpPixelsForAllTests;
-
-    // Convert the path into a full file URL if it does not look
-    // like an HTTP/S URL (doesn't start with http:// or https://).
-    if (testURL.find(&quot;http://&quot;) &amp;&amp; testURL.find(&quot;https://&quot;)) {
-        GFile* testFile = g_file_new_for_path(testURL.c_str());
-        gchar* testURLCString = g_file_get_uri(testFile);
-        testURL = testURLCString;
-        g_free(testURLCString);
-        g_object_unref(testFile);
-    }
-
-    resetDefaultsToConsistentValues();
-
-    gTestRunner = TestRunner::create(testURL, command.expectedPixelHash);
-    topLoadingFrame = 0;
-    done = false;
-
-    gTestRunner-&gt;setIconDatabaseEnabled(false);
-
-    if (shouldLogFrameLoadDelegates(testURL))
-        gTestRunner-&gt;setDumpFrameLoadCallbacks(true);
-
-    if (shouldEnableDeveloperExtras(testURL)) {
-        gTestRunner-&gt;setDeveloperExtrasEnabled(true);
-        if (shouldDumpAsText(testURL)) {
-            gTestRunner-&gt;setDumpAsText(true);
-            gTestRunner-&gt;setGeneratePixelResults(false);
-        }
-    }
-
-    WorkQueue::shared()-&gt;clear();
-    WorkQueue::shared()-&gt;setFrozen(false);
-
-    bool isSVGW3CTest = (testURL.find(&quot;svg/W3C-SVG-1.1&quot;) != string::npos);
-    GtkAllocation size;
-    size.x = size.y = 0;
-    size.width = isSVGW3CTest ? TestRunner::w3cSVGViewWidth : TestRunner::viewWidth;
-    size.height = isSVGW3CTest ? TestRunner::w3cSVGViewHeight : TestRunner::viewHeight;
-    gtk_window_resize(GTK_WINDOW(window), size.width, size.height);
-    gtk_widget_size_allocate(container, &amp;size);
-
-    if (prevTestBFItem)
-        g_object_unref(prevTestBFItem);
-    WebKitWebBackForwardList* bfList = webkit_web_view_get_back_forward_list(webView);
-    prevTestBFItem = webkit_web_back_forward_list_get_current_item(bfList);
-    if (prevTestBFItem)
-        g_object_ref(prevTestBFItem);
-
-    initializeFonts(testURL.c_str());
-
-    // Focus the web view before loading the test to avoid focusing problems
-    gtk_widget_grab_focus(GTK_WIDGET(webView));
-    webkit_web_view_open(webView, testURL.c_str());
-
-    gtk_main();
-
-    // If developer extras enabled Web Inspector may have been open by the test.
-    if (shouldEnableDeveloperExtras(testURL)) {
-        gTestRunner-&gt;closeWebInspector();
-        gTestRunner-&gt;setDeveloperExtrasEnabled(false);
-    }
-
-    // Also check if we still have opened webViews and free them.
-    if (gTestRunner-&gt;closeRemainingWindowsWhenComplete() || webViewList) {
-        while (webViewList) {
-            g_object_unref(WEBKIT_WEB_VIEW(webViewList-&gt;data));
-            webViewList = g_slist_next(webViewList);
-        }
-        g_slist_free(webViewList);
-        webViewList = 0;
-    }
-
-    WebCoreTestSupport::resetInternalsObject(webkit_web_frame_get_global_context(mainFrame));
-    DumpRenderTreeSupportGtk::clearMemoryCache();
-    DumpRenderTreeSupportGtk::clearApplicationCache();
-
-    // A blank load seems to be necessary to reset state after certain tests.
-    webkit_web_view_open(webView, &quot;about:blank&quot;);
-
-    gTestRunner.clear();
-
-    // terminate the (possibly empty) pixels block after all the state reset
-    sendPixelResultsEOF();
-}
-
-void webViewLoadStarted(WebKitWebView* view, WebKitWebFrame* frame, void*)
-{
-    // Make sure we only set this once per test.  If it gets cleared, and then set again, we might
-    // end up doing two dumps for one test.
-    if (!topLoadingFrame &amp;&amp; !done)
-        topLoadingFrame = frame;
-}
-
-static gboolean processWork(void* data)
-{
-    // if we finish all the commands, we're ready to dump state
-    if (WorkQueue::shared()-&gt;processWork() &amp;&amp; !gTestRunner-&gt;waitToDump())
-        dump();
-
-    return FALSE;
-}
-
-static char* getFrameNameSuitableForTestResult(WebKitWebView* view, WebKitWebFrame* frame)
-{
-    char* frameName = g_strdup(webkit_web_frame_get_name(frame));
-
-    if (frame == webkit_web_view_get_main_frame(view)) {
-        // This is a bit strange. Shouldn't web_frame_get_name return NULL?
-        if (frameName &amp;&amp; (frameName[0] != '\0')) {
-            char* tmp = g_strdup_printf(&quot;main frame \&quot;%s\&quot;&quot;, frameName);
-            g_free(frameName);
-            frameName = tmp;
-        } else {
-            g_free(frameName);
-            frameName = g_strdup(&quot;main frame&quot;);
-        }
-    } else if (!frameName || (frameName[0] == '\0')) {
-        g_free(frameName);
-        frameName = g_strdup(&quot;frame (anonymous)&quot;);
-    } else {
-        char* tmp = g_strdup_printf(&quot;frame \&quot;%s\&quot;&quot;, frameName);
-        g_free(frameName);
-        frameName = tmp;
-    }
-
-    return frameName;
-}
-
-static void webViewLoadFinished(WebKitWebView* view, WebKitWebFrame* frame, void*)
-{
-    // The deprecated &quot;load-finished&quot; signal is triggered by postProgressFinishedNotification(),
-    // so we can use it here in the DRT to provide the correct dump.
-    if (frame != topLoadingFrame)
-        return;
-    if (gTestRunner-&gt;dumpProgressFinishedCallback())
-        printf(&quot;postProgressFinishedNotification\n&quot;);
-}
-
-static gboolean webViewLoadError(WebKitWebView*, WebKitWebFrame*, gchar*, gpointer, gpointer)
-{
-    return TRUE; // Return true here to disable the default error page.
-}
-
-static void webViewDocumentLoadFinished(WebKitWebView* view, WebKitWebFrame* frame, void*)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpFrameLoadCallbacks()) {
-        char* frameName = getFrameNameSuitableForTestResult(view, frame);
-        printf(&quot;%s - didFinishDocumentLoadForFrame\n&quot;, frameName);
-        g_free(frameName);
-    } else if (!done) {
-        guint pendingFrameUnloadEvents = DumpRenderTreeSupportGtk::getPendingUnloadEventCount(frame);
-        if (pendingFrameUnloadEvents) {
-            char* frameName = getFrameNameSuitableForTestResult(view, frame);
-            printf(&quot;%s - has %u onunload handler(s)\n&quot;, frameName, pendingFrameUnloadEvents);
-            g_free(frameName);
-        }
-    }
-}
-
-static void webViewOnloadEvent(WebKitWebView* view, WebKitWebFrame* frame, void*)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpFrameLoadCallbacks()) {
-        char* frameName = getFrameNameSuitableForTestResult(view, frame);
-        printf(&quot;%s - didHandleOnloadEventsForFrame\n&quot;, frameName);
-        g_free(frameName);
-    }
-}
-
-static void addControllerToWindow(JSContextRef context, JSObjectRef windowObject, const char* controllerName, JSValueRef controller)
-{
-    JSStringRef controllerNameStr = JSStringCreateWithUTF8CString(controllerName);
-    JSObjectSetProperty(context, windowObject, controllerNameStr, controller, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, 0);
-    JSStringRelease(controllerNameStr); 
-}
-
-static void webViewWindowObjectCleared(WebKitWebView* view, WebKitWebFrame* frame, JSGlobalContextRef context, JSObjectRef windowObject, gpointer data)
-{
-    JSValueRef exception = 0;
-    ASSERT(gTestRunner);
-
-    gTestRunner-&gt;makeWindowObject(context, windowObject, &amp;exception);
-    ASSERT(!exception);
-
-    gcController-&gt;makeWindowObject(context, windowObject, &amp;exception);
-    ASSERT(!exception);
-
-#if HAVE(ACCESSIBILITY)
-    axController-&gt;makeWindowObject(context, windowObject, &amp;exception);
-    ASSERT(!exception);
-#endif
-
-    addControllerToWindow(context, windowObject, &quot;eventSender&quot;, makeEventSender(context, !webkit_web_frame_get_parent(frame)));
-    addControllerToWindow(context, windowObject, &quot;textInputController&quot;, makeTextInputController(context));
-    WebCoreTestSupport::injectInternalsObject(context);
-}
-
-static gboolean webViewConsoleMessage(WebKitWebView* view, const gchar* message, unsigned int line, const gchar* sourceId, gpointer data)
-{
-    gchar* testMessage = 0;
-    const gchar* uriScheme;
-
-    // Tests expect only the filename part of local URIs
-    uriScheme = g_strstr_len(message, -1, &quot;file://&quot;);
-    if (uriScheme) {
-        GString* tempString = g_string_sized_new(strlen(message));
-        gchar* filename = g_strrstr(uriScheme, G_DIR_SEPARATOR_S);
-
-        if (filename) {
-            // If the path is a lone slash, keep it to avoid empty output.
-            if (strlen(filename) &gt; 1)
-                filename += strlen(G_DIR_SEPARATOR_S);
-            tempString = g_string_append_len(tempString, message, (uriScheme - message));
-            tempString = g_string_append_len(tempString, filename, strlen(filename));
-            testMessage = g_string_free(tempString, FALSE);
-        }
-    }
-
-    fprintf(stdout, &quot;CONSOLE MESSAGE: &quot;);
-    if (line)
-        fprintf(stdout, &quot;line %d: &quot;, line);
-    fprintf(stdout, &quot;%s\n&quot;, testMessage ? testMessage : message);
-    g_free(testMessage);
-
-    return TRUE;
-}
-
-
-static gboolean webViewScriptAlert(WebKitWebView* view, WebKitWebFrame* frame, const gchar* message, gpointer data)
-{
-    fprintf(stdout, &quot;ALERT: %s\n&quot;, message);
-    fflush(stdout);
-    return TRUE;
-}
-
-static gboolean webViewScriptPrompt(WebKitWebView* webView, WebKitWebFrame* frame, const gchar* message, const gchar* defaultValue, gchar** value, gpointer data)
-{
-    fprintf(stdout, &quot;PROMPT: %s, default text: %s\n&quot;, message, defaultValue);
-    *value = g_strdup(defaultValue);
-    return TRUE;
-}
-
-static gboolean webViewScriptConfirm(WebKitWebView* view, WebKitWebFrame* frame, const gchar* message, gboolean* didConfirm, gpointer data)
-{
-    fprintf(stdout, &quot;CONFIRM: %s\n&quot;, message);
-    *didConfirm = TRUE;
-    return TRUE;
-}
-
-static void webViewTitleChanged(WebKitWebView* view, WebKitWebFrame* frame, const gchar* title, gpointer data)
-{
-    if (gTestRunner-&gt;dumpFrameLoadCallbacks() &amp;&amp; !done) {
-        GUniquePtr&lt;char&gt; frameName(getFrameNameSuitableForTestResult(view, frame));
-        printf(&quot;%s - didReceiveTitle: %s\n&quot;, frameName.get(), title ? title : &quot;&quot;);
-    }
-
-    if (gTestRunner-&gt;dumpTitleChanges() &amp;&amp; !done)
-        printf(&quot;TITLE CHANGED: '%s'\n&quot;, title ? title : &quot;&quot;);
-}
-
-static bool webViewNavigationPolicyDecisionRequested(WebKitWebView* view, WebKitWebFrame* frame,
-                                                     WebKitNetworkRequest* request,
-                                                     WebKitWebNavigationAction* navAction,
-                                                     WebKitWebPolicyDecision* policyDecision)
-{
-    // Use the default handler if we're not waiting for policy,
-    // i.e., TestRunner::waitForPolicyDelegate
-    if (!waitForPolicy)
-        return FALSE;
-
-    gchar* typeDescription;
-    WebKitWebNavigationReason reason;
-    g_object_get(G_OBJECT(navAction), &quot;reason&quot;, &amp;reason, NULL);
-
-    switch(reason) {
-        case WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED:
-            typeDescription = g_strdup(&quot;link clicked&quot;);
-            break;
-        case WEBKIT_WEB_NAVIGATION_REASON_FORM_SUBMITTED:
-            typeDescription = g_strdup(&quot;form submitted&quot;);
-            break;
-        case WEBKIT_WEB_NAVIGATION_REASON_BACK_FORWARD:
-            typeDescription = g_strdup(&quot;back/forward&quot;);
-            break;
-        case WEBKIT_WEB_NAVIGATION_REASON_RELOAD:
-            typeDescription = g_strdup(&quot;reload&quot;);
-            break;
-        case WEBKIT_WEB_NAVIGATION_REASON_FORM_RESUBMITTED:
-            typeDescription = g_strdup(&quot;form resubmitted&quot;);
-            break;
-        case WEBKIT_WEB_NAVIGATION_REASON_OTHER:
-            typeDescription = g_strdup(&quot;other&quot;);
-            break;
-        default:
-            typeDescription = g_strdup(&quot;illegal value&quot;);
-    }
-
-    printf(&quot;Policy delegate: attempt to load %s with navigation type '%s'\n&quot;, webkit_network_request_get_uri(request), typeDescription);
-    g_free(typeDescription);
-
-    webkit_web_policy_decision_ignore(policyDecision);
-    gTestRunner-&gt;notifyDone();
-
-    return TRUE;
-}
-
-static void webViewStatusBarTextChanged(WebKitWebView* view, const gchar* message, gpointer data)
-{
-    // Are we doing anything wrong? One test that does not call
-    // dumpStatusCallbacks gets true here
-    if (gTestRunner-&gt;dumpStatusCallbacks())
-        printf(&quot;UI DELEGATE STATUS CALLBACK: setStatusText:%s\n&quot;, message);
-}
-
-static gboolean webViewClose(WebKitWebView* view)
-{
-    ASSERT(view);
-
-    webViewList = g_slist_remove(webViewList, view);
-    g_object_unref(view);
-
-    return TRUE;
-}
-
-static void databaseQuotaExceeded(WebKitWebView* view, WebKitWebFrame* frame, WebKitWebDatabase *database)
-{
-    ASSERT(view);
-    ASSERT(frame);
-    ASSERT(database);
-
-    WebKitSecurityOrigin* origin = webkit_web_database_get_security_origin(database);
-    if (gTestRunner-&gt;dumpDatabaseCallbacks()) {
-        printf(&quot;UI DELEGATE DATABASE CALLBACK: exceededDatabaseQuotaForSecurityOrigin:{%s, %s, %i} database:%s\n&quot;,
-            webkit_security_origin_get_protocol(origin),
-            webkit_security_origin_get_host(origin),
-            webkit_security_origin_get_port(origin),
-            webkit_web_database_get_name(database));
-    }
-    webkit_security_origin_set_web_database_quota(origin, 5 * 1024 * 1024);
-}
-
-static bool
-geolocationPolicyDecisionRequested(WebKitWebView*, WebKitWebFrame*, WebKitGeolocationPolicyDecision* decision)
-{
-    if (!gTestRunner-&gt;isGeolocationPermissionSet())
-        return FALSE;
-    if (gTestRunner-&gt;geolocationPermission())
-        webkit_geolocation_policy_allow(decision);
-    else
-        webkit_geolocation_policy_deny(decision);
-
-    return TRUE;
-}
-
-
-static WebKitWebView* webViewCreate(WebKitWebView*, WebKitWebFrame*);
-
-static gboolean webInspectorShowWindow(WebKitWebInspector*, gpointer data)
-{
-    gtk_window_set_default_size(GTK_WINDOW(webInspectorWindow), TestRunner::viewWidth, TestRunner::viewHeight);
-    gtk_widget_show_all(webInspectorWindow);
-    return TRUE;
-}
-
-static gboolean webInspectorCloseWindow(WebKitWebInspector*, gpointer data)
-{
-    gtk_widget_destroy(webInspectorWindow);
-    webInspectorWindow = 0;
-    return TRUE;
-}
-
-static WebKitWebView* webInspectorInspectWebView(WebKitWebInspector*, gpointer data)
-{
-    webInspectorWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-
-    GtkWidget* webView = self_scrolling_webkit_web_view_new();
-    gtk_container_add(GTK_CONTAINER(webInspectorWindow),
-                      webView);
-
-    return WEBKIT_WEB_VIEW(webView);
-}
-
-static void topLoadingFrameLoadFinished()
-{
-    topLoadingFrame = 0;
-    WorkQueue::shared()-&gt;setFrozen(true); // first complete load freezes the queue for the rest of this test
-    if (gTestRunner-&gt;waitToDump())
-        return;
-
-    if (WorkQueue::shared()-&gt;count())
-        g_idle_add_full(G_PRIORITY_DEFAULT, processWork, 0, 0);
-    else
-        dump();
-}
-
-static void webFrameLoadStatusNotified(WebKitWebFrame* frame, gpointer user_data)
-{
-    WebKitLoadStatus loadStatus = webkit_web_frame_get_load_status(frame);
-
-    if (gTestRunner-&gt;dumpFrameLoadCallbacks()) {
-        GUniquePtr&lt;char&gt; frameName(getFrameNameSuitableForTestResult(webkit_web_frame_get_web_view(frame), frame));
-
-        switch (loadStatus) {
-        case WEBKIT_LOAD_PROVISIONAL:
-            if (!done)
-                printf(&quot;%s - didStartProvisionalLoadForFrame\n&quot;, frameName.get());
-            break;
-        case WEBKIT_LOAD_COMMITTED:
-            if (!done)
-                printf(&quot;%s - didCommitLoadForFrame\n&quot;, frameName.get());
-            break;
-        case WEBKIT_LOAD_FINISHED:
-            if (!done)
-                printf(&quot;%s - didFinishLoadForFrame\n&quot;, frameName.get());
-            break;
-        case WEBKIT_LOAD_FAILED:
-            if (!done)
-                printf(&quot;%s - didFailLoadWithError\n&quot;, frameName.get());
-            break;
-        default:
-            break;
-        }
-    }
-
-    if ((loadStatus == WEBKIT_LOAD_FINISHED || loadStatus == WEBKIT_LOAD_FAILED)
-        &amp;&amp; frame == topLoadingFrame)
-        topLoadingFrameLoadFinished();
-}
-
-static void frameCreatedCallback(WebKitWebView* webView, WebKitWebFrame* webFrame, gpointer user_data)
-{
-    g_signal_connect(webFrame, &quot;notify::load-status&quot;, G_CALLBACK(webFrameLoadStatusNotified), NULL);
-    g_signal_connect(webFrame, &quot;insecure-content-run&quot;, G_CALLBACK(didRunInsecureContent), NULL);
-}
-
-static String pathFromSoupURI(SoupURI* uri)
-{
-    if (!uri)
-        return &quot;(null)&quot;;
-
-    if (!g_str_equal(uri-&gt;scheme, &quot;file&quot;))
-        return soupURIToStringPreservingPassword(uri).data();
-
-    String pathString = uri-&gt;path;
-    GUniquePtr&lt;gchar&gt; pathBasename(g_path_get_basename(pathString.utf8().data()));
-
-    WebKitWebFrame* mainFrame = webkit_web_view_get_main_frame(webView);
-    GUniquePtr&lt;SoupURI&gt; mainFrameUri(soup_uri_new(webkit_web_frame_get_uri(mainFrame)));
-
-    String mainFrameUriPathString = mainFrameUri.get()-&gt;path;
-    String basePath = mainFrameUriPathString.substring(0, mainFrameUriPathString.reverseFind('/') + 1);
-
-    if (!basePath.isEmpty() &amp;&amp; pathString.startsWith(basePath))
-        return pathString.substring(basePath.length());
-
-    return pathBasename.get();
-}
-
-static CString convertSoupMessageToURLPath(SoupMessage* soupMessage)
-{
-    if (!soupMessage)
-        return CString(&quot;(null)&quot;);
-    if (SoupURI* requestURI = soup_message_get_uri(soupMessage))
-        return pathFromSoupURI(requestURI).utf8();
-    return CString(&quot;(null)&quot;);
-}
-
-static CString convertNetworkRequestToURLPath(WebKitNetworkRequest* request)
-{
-    return convertSoupMessageToURLPath(webkit_network_request_get_message(request));
-}
-
-static CString convertWebResourceToURLPath(WebKitWebResource* webResource)
-{
-    GUniquePtr&lt;SoupURI&gt; uri(soup_uri_new(webkit_web_resource_get_uri(webResource)));
-    return pathFromSoupURI(uri.get()).utf8();
-}
-
-static CString urlSuitableForTestResult(const char* uriString)
-{
-    if (!g_str_has_prefix(uriString, &quot;file://&quot;))
-        return CString(uriString);
-
-    GUniquePtr&lt;gchar&gt; basename(g_path_get_basename(uriString));
-    return CString(basename.get());
-}
-
-static CString descriptionSuitableForTestResult(SoupURI* uri)
-{
-    if (!uri)
-        return CString(&quot;(null)&quot;);
-
-    GUniquePtr&lt;char&gt; uriString(soup_uri_to_string(uri, false));
-    return urlSuitableForTestResult(uriString.get());
-}
-
-static CString descriptionSuitableForTestResult(GError* error, WebKitWebResource* webResource)
-{
-    const gchar* errorDomain = g_quark_to_string(error-&gt;domain);
-    CString resourceURIString(urlSuitableForTestResult(webkit_web_resource_get_uri(webResource)));
-
-    if (g_str_equal(errorDomain, &quot;webkit-network-error-quark&quot;) || g_str_equal(errorDomain, &quot;soup_http_error_quark&quot;))
-        errorDomain = &quot;NSURLErrorDomain&quot;;
-
-    if (g_str_equal(errorDomain, &quot;WebKitPolicyError&quot;))
-        errorDomain = &quot;WebKitErrorDomain&quot;;
-
-    // TODO: the other ports get the failingURL from the ResourceError
-    GUniquePtr&lt;char&gt; errorString(g_strdup_printf(&quot;&lt;NSError domain %s, code %d, failing URL \&quot;%s\&quot;&gt;&quot;,
-                                              errorDomain, error-&gt;code, resourceURIString.data()));
-    return CString(errorString.get());
-}
-
-static CString descriptionSuitableForTestResult(WebKitNetworkRequest* request)
-{
-    SoupMessage* soupMessage = webkit_network_request_get_message(request);
-
-    if (!soupMessage)
-        return CString(&quot;(null)&quot;);
-
-    SoupURI* mainDocumentURI = soup_message_get_first_party(soupMessage);
-    CString mainDocumentURIString(descriptionSuitableForTestResult(mainDocumentURI));
-    CString path(convertNetworkRequestToURLPath(request));
-    GUniquePtr&lt;char&gt; description(g_strdup_printf(&quot;&lt;NSURLRequest URL %s, main document URL %s, http method %s&gt;&quot;,
-        path.data(), mainDocumentURIString.data(), soupMessage-&gt;method));
-    return CString(description.get());
-}
-
-static CString descriptionSuitableForTestResult(WebKitNetworkResponse* response)
-{
-    if (!response)
-        return CString(&quot;(null)&quot;);
-
-    int statusCode = 0;
-    CString responseURIString(urlSuitableForTestResult(webkit_network_response_get_uri(response)));
-    SoupMessage* soupMessage = webkit_network_response_get_message(response);
-    CString path;
-
-    if (soupMessage) {
-        statusCode = soupMessage-&gt;status_code;
-        path = convertSoupMessageToURLPath(soupMessage);
-    } else
-        path = CString(&quot;(null)&quot;);
-
-    GUniquePtr&lt;char&gt; description(g_strdup_printf(&quot;&lt;NSURLResponse %s, http status code %d&gt;&quot;, path.data(), statusCode));
-    return CString(description.get());
-}
-
-static void willSendRequestCallback(WebKitWebView* webView, WebKitWebFrame* webFrame, WebKitWebResource* resource, WebKitNetworkRequest* request, WebKitNetworkResponse* response)
-{
-
-
-    if (!done &amp;&amp; gTestRunner-&gt;willSendRequestReturnsNull()) {
-        // As requested by the TestRunner, don't perform the request.
-        webkit_network_request_set_uri(request, &quot;about:blank&quot;);
-        return;
-    }
-
-    if (!done &amp;&amp; gTestRunner-&gt;dumpResourceLoadCallbacks())
-        printf(&quot;%s - willSendRequest %s redirectResponse %s\n&quot;,
-               convertNetworkRequestToURLPath(request).data(),
-               descriptionSuitableForTestResult(request).data(),
-               descriptionSuitableForTestResult(response).data());
-
-    SoupMessage* soupMessage = webkit_network_request_get_message(request);
-    SoupURI* uri = soup_uri_new(webkit_network_request_get_uri(request));
-
-    if (SOUP_URI_IS_VALID(uri)) {
-        GUniquePtr&lt;char&gt; uriString(soup_uri_to_string(uri, FALSE));
-
-        if (SOUP_URI_VALID_FOR_HTTP(uri) &amp;&amp; g_strcmp0(uri-&gt;host, &quot;127.0.0.1&quot;)
-            &amp;&amp; g_strcmp0(uri-&gt;host, &quot;255.255.255.255&quot;)
-            &amp;&amp; g_ascii_strncasecmp(uri-&gt;host, &quot;localhost&quot;, 9)) {
-            printf(&quot;Blocked access to external URL %s\n&quot;, uriString.get());
-            // Cancel load of blocked resource to avoid potential
-            // network-related timeouts in tests.
-            webkit_network_request_set_uri(request, &quot;about:blank&quot;);
-            soup_uri_free(uri);
-            return;
-        }
-
-        const string&amp; destination = gTestRunner-&gt;redirectionDestinationForURL(uriString.get());
-        if (!destination.empty())
-            webkit_network_request_set_uri(request, destination.c_str());
-    }
-
-    if (uri)
-        soup_uri_free(uri);
-
-    if (soupMessage) {
-        const set&lt;string&gt;&amp; clearHeaders = gTestRunner-&gt;willSendRequestClearHeaders();
-        for (set&lt;string&gt;::const_iterator header = clearHeaders.begin(); header != clearHeaders.end(); ++header)
-            soup_message_headers_remove(soupMessage-&gt;request_headers, header-&gt;c_str());
-    }
-}
-
-
-static void didReceiveResponse(WebKitWebView* webView, WebKitWebFrame*, WebKitWebResource* webResource, WebKitNetworkResponse* response)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpResourceLoadCallbacks()) {
-        CString responseDescription(descriptionSuitableForTestResult(response));
-        CString path(convertWebResourceToURLPath(webResource));
-        printf(&quot;%s - didReceiveResponse %s\n&quot;, path.data(), responseDescription.data());
-    }
-
-    // TODO: add &quot;has MIME type&quot; whenever dumpResourceResponseMIMETypes() is supported.
-    // See https://bugs.webkit.org/show_bug.cgi?id=58222.
-}
-
-static void didFinishLoading(WebKitWebView* webView, WebKitWebFrame* webFrame, WebKitWebResource* webResource)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpResourceLoadCallbacks())
-        printf(&quot;%s - didFinishLoading\n&quot;, convertWebResourceToURLPath(webResource).data());
-}
-
-static void didFailLoadingWithError(WebKitWebView* webView, WebKitWebFrame* webFrame, WebKitWebResource* webResource, GError* webError)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpResourceLoadCallbacks()) {
-        CString webErrorString(descriptionSuitableForTestResult(webError, webResource));
-        printf(&quot;%s - didFailLoadingWithError: %s\n&quot;, convertWebResourceToURLPath(webResource).data(),
-               webErrorString.data());
-    }
-}
-
-static void didRunInsecureContent(WebKitWebFrame*, WebKitSecurityOrigin*, const char* url)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpFrameLoadCallbacks())
-        printf(&quot;didRunInsecureContent\n&quot;);
-}
-
-static gboolean webViewRunFileChooser(WebKitWebView*, WebKitFileChooserRequest*)
-{
-    // We return TRUE to not propagate the event further so the
-    // default file chooser dialog is not shown.
-    return TRUE;
-}
-
-static void frameLoadEventCallback(WebKitWebFrame* frame, DumpRenderTreeSupportGtk::FrameLoadEvent event, const char* url)
-{
-    if (done || !gTestRunner-&gt;dumpFrameLoadCallbacks())
-        return;
-
-    GUniquePtr&lt;char&gt; frameName(getFrameNameSuitableForTestResult(webkit_web_frame_get_web_view(frame), frame));
-    switch (event) {
-    case DumpRenderTreeSupportGtk::WillPerformClientRedirectToURL:
-        ASSERT(url);
-        printf(&quot;%s - willPerformClientRedirectToURL: %s \n&quot;, frameName.get(), url);
-        break;
-    case DumpRenderTreeSupportGtk::DidCancelClientRedirect:
-        printf(&quot;%s - didCancelClientRedirectForFrame\n&quot;, frameName.get());
-        break;
-    case DumpRenderTreeSupportGtk::DidReceiveServerRedirectForProvisionalLoad:
-        printf(&quot;%s - didReceiveServerRedirectForProvisionalLoadForFrame\n&quot;, frameName.get());
-        break;
-    case DumpRenderTreeSupportGtk::DidDisplayInsecureContent:
-        printf (&quot;didDisplayInsecureContent\n&quot;);
-        break;
-    case DumpRenderTreeSupportGtk::DidDetectXSS:
-        printf (&quot;didDetectXSS\n&quot;);
-        break;
-    default:
-        ASSERT_NOT_REACHED();
-    }
-}
-
-static bool authenticationCallback(CString&amp; username, CString&amp; password, WebKitWebResource* webResource)
-{
-    CString description(convertWebResourceToURLPath(webResource));
-
-    if (!gTestRunner-&gt;handlesAuthenticationChallenges()) {
-        printf(&quot;%s - didReceiveAuthenticationChallenge - Simulating cancelled authentication sheet\n&quot;, description.data());
-        return false;
-    }
-
-    username = gTestRunner-&gt;authenticationUsername().c_str();
-    password = gTestRunner-&gt;authenticationPassword().c_str();
-    printf(&quot;%s - didReceiveAuthenticationChallenge - Responding with %s:%s\n&quot;, description.data(), username.data(), password.data());
-    return true;
-}
-
-static WebKitWebView* createWebView()
-{
-    // It is important to declare DRT is running early so when creating
-    // web view mock clients are used instead of proper ones.
-    DumpRenderTreeSupportGtk::setDumpRenderTreeModeEnabled(true);
-
-    DumpRenderTreeSupportGtk::setFrameLoadEventCallback(frameLoadEventCallback);
-    DumpRenderTreeSupportGtk::setAuthenticationCallback(authenticationCallback);
-
-    WebKitWebView* view = WEBKIT_WEB_VIEW(self_scrolling_webkit_web_view_new());
-
-    g_object_connect(G_OBJECT(view),
-                     &quot;signal::load-started&quot;, webViewLoadStarted, 0,
-                     &quot;signal::load-finished&quot;, webViewLoadFinished, 0,
-                     &quot;signal::load-error&quot;, webViewLoadError, 0,
-                     &quot;signal::window-object-cleared&quot;, webViewWindowObjectCleared, 0,
-                     &quot;signal::console-message&quot;, webViewConsoleMessage, 0,
-                     &quot;signal::script-alert&quot;, webViewScriptAlert, 0,
-                     &quot;signal::script-prompt&quot;, webViewScriptPrompt, 0,
-                     &quot;signal::script-confirm&quot;, webViewScriptConfirm, 0,
-                     &quot;signal::title-changed&quot;, webViewTitleChanged, 0,
-                     &quot;signal::navigation-policy-decision-requested&quot;, webViewNavigationPolicyDecisionRequested, 0,
-                     &quot;signal::status-bar-text-changed&quot;, webViewStatusBarTextChanged, 0,
-                     &quot;signal::create-web-view&quot;, webViewCreate, 0,
-                     &quot;signal::close-web-view&quot;, webViewClose, 0,
-                     &quot;signal::database-quota-exceeded&quot;, databaseQuotaExceeded, 0,
-                     &quot;signal::document-load-finished&quot;, webViewDocumentLoadFinished, 0,
-                     &quot;signal::geolocation-policy-decision-requested&quot;, geolocationPolicyDecisionRequested, 0,
-                     &quot;signal::onload-event&quot;, webViewOnloadEvent, 0,
-                     &quot;signal::drag-begin&quot;, dragBeginCallback, 0,
-                     &quot;signal::drag-end&quot;, dragEndCallback, 0,
-                     &quot;signal::drag-failed&quot;, dragFailedCallback, 0,
-                     &quot;signal::frame-created&quot;, frameCreatedCallback, 0,
-                     &quot;signal::resource-request-starting&quot;, willSendRequestCallback, 0,
-                     &quot;signal::resource-response-received&quot;, didReceiveResponse, 0,
-                     &quot;signal::resource-load-finished&quot;, didFinishLoading, 0,
-                     &quot;signal::resource-load-failed&quot;, didFailLoadingWithError, 0,
-                     &quot;signal::run-file-chooser&quot;, webViewRunFileChooser, 0,
-                     NULL);
-    connectEditingCallbacks(view);
-
-    WebKitWebInspector* inspector = webkit_web_view_get_inspector(view);
-    g_object_connect(G_OBJECT(inspector),
-                     &quot;signal::inspect-web-view&quot;, webInspectorInspectWebView, 0,
-                     &quot;signal::show-window&quot;, webInspectorShowWindow, 0,
-                     &quot;signal::close-window&quot;, webInspectorCloseWindow, 0,
-                     NULL);
-
-    if (webView) {
-        WebKitWebSettings* settings = webkit_web_view_get_settings(webView);
-        webkit_web_view_set_settings(view, settings);
-    }
-
-    // frame-created is not issued for main frame. That's why we must do this here
-    WebKitWebFrame* frame = webkit_web_view_get_main_frame(view);
-    g_signal_connect(frame, &quot;notify::load-status&quot;, G_CALLBACK(webFrameLoadStatusNotified), NULL);
-    g_signal_connect(frame, &quot;insecure-content-run&quot;, G_CALLBACK(didRunInsecureContent), NULL);
-
-    return view;
-}
-
-static WebKitWebView* webViewCreate(WebKitWebView* view, WebKitWebFrame* frame)
-{
-    if (!gTestRunner-&gt;canOpenWindows())
-        return 0;
-
-    // Make sure that waitUntilDone has been called.
-    ASSERT(gTestRunner-&gt;waitToDump());
-
-    WebKitWebView* newWebView = createWebView();
-    g_object_ref_sink(G_OBJECT(newWebView));
-    webViewList = g_slist_prepend(webViewList, newWebView);
-    return newWebView;
-}
-
-static void logHandler(const gchar* domain, GLogLevelFlags level, const gchar* message, gpointer data)
-{
-    if (level &lt; G_LOG_LEVEL_DEBUG)
-        fprintf(stderr, &quot;%s\n&quot;, message);
-}
-
-int main(int argc, char* argv[])
-{
-    gtk_init(&amp;argc, &amp;argv);
-
-    // Some plugins might try to use the GLib logger for printing debug
-    // messages. This will cause tests to fail because of unexpected output.
-    // We squelch all debug messages sent to the logger.
-    g_log_set_default_handler(logHandler, 0);
-
-    initializeGlobalsFromCommandLineOptions(argc, argv);
-    initializeFonts();
-
-    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-#ifdef GTK_API_VERSION_2
-    container = gtk_hbox_new(TRUE, 0);
-#else
-    container = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
-    gtk_box_set_homogeneous(GTK_BOX(container), TRUE);
-#endif
-    gtk_container_add(GTK_CONTAINER(window), container);
-    gtk_widget_show_all(window);
-
-    webView = createWebView();
-    gtk_box_pack_start(GTK_BOX(container), GTK_WIDGET(webView), TRUE, TRUE, 0);
-    gtk_widget_realize(GTK_WIDGET(webView));
-    gtk_widget_show_all(container);
-    mainFrame = webkit_web_view_get_main_frame(webView);
-
-    setDefaultsToConsistentStateValuesForTesting();
-
-    gcController = new GCController();
-#if HAVE(ACCESSIBILITY)
-    axController = new AccessibilityController();
-#endif
-
-    if (useLongRunningServerMode(argc, argv)) {
-        printSeparators = true;
-        runTestingServerLoop();
-    } else {
-        printSeparators = (optind &lt; argc-1 || (dumpPixelsForCurrentTest &amp;&amp; dumpTree));
-        for (int i = optind; i != argc; ++i)
-            runTest(argv[i]);
-    }
-
-    delete gcController;
-    gcController = 0;
-
-#if HAVE(ACCESSIBILITY)
-    delete axController;
-    axController = 0;
-#endif
-
-    gtk_widget_destroy(window);
-
-    return 0;
-}
</del></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkDumpRenderTreeGtkh"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/DumpRenderTreeGtk.h (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/DumpRenderTreeGtk.h        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/DumpRenderTreeGtk.h        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,50 +0,0 @@
</span><del>-/*
- * Copyright (C) 2007 Eric Seidel &lt;eric@webkit.org&gt;
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) 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 APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 APPLE OR ITS 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 DumpRenderTreeGtk_h
-#define DumpRenderTreeGtk_h
-
-#include &lt;JavaScriptCore/JSBase.h&gt;
-#include &lt;glib.h&gt;
-#include &lt;libsoup/soup.h&gt;
-#include &lt;webkit/webkitdefines.h&gt;
-#include &lt;wtf/text/CString.h&gt;
-
-extern WebKitWebFrame* mainFrame;
-extern WebKitWebFrame* topLoadingFrame;
-extern bool waitForPolicy;
-extern GSList* webViewList;
-
-gchar* JSStringCopyUTF8CString(JSStringRef jsString);
-CString getTopLevelPath();
-
-void setWaitToDumpWatchdog(guint timer);
-bool shouldSetWaitToDumpWatchdog();
-CString soupURIToStringPreservingPassword(SoupURI* soupURI);
-
-#endif // DumpRenderTreeGtk_h
</del></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkEditingCallbackscpp"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/EditingCallbacks.cpp (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/EditingCallbacks.cpp        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/EditingCallbacks.cpp        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,202 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Igalia S.L.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) 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 APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 APPLE OR ITS 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.
- */
-
-#include &quot;config.h&quot;
-#include &quot;EditingCallbacks.h&quot;
-
-#include &quot;DumpRenderTree.h&quot;
-#include &quot;TestRunner.h&quot;
-#include &lt;gtk/gtk.h&gt;
-#include &lt;webkit/webkit.h&gt;
-#include &lt;wtf/gobject/GUniquePtr.h&gt;
-#include &lt;wtf/text/CString.h&gt;
-
-static CString dumpNodePath(WebKitDOMNode* node)
-{
-    GUniquePtr&lt;gchar&gt; nodeName(webkit_dom_node_get_node_name(node));
-    GString* path = g_string_new(nodeName.get());
-
-    WebKitDOMNode* parent = webkit_dom_node_get_parent_node(node);
-    while (parent) {
-        GUniquePtr&lt;gchar&gt; parentName(webkit_dom_node_get_node_name(parent));
-
-        g_string_append(path, &quot; &gt; &quot;);
-        g_string_append(path, parentName.get());
-        parent = webkit_dom_node_get_parent_node(parent);
-    }
-
-    GUniquePtr&lt;gchar&gt; pathBuffer(g_string_free(path, FALSE));
-    return pathBuffer.get();
-}
-
-static CString dumpRange(WebKitDOMRange* range)
-{
-    if (!range)
-        return &quot;(null)&quot;;
-
-    GUniquePtr&lt;gchar&gt; dump(g_strdup_printf(&quot;range from %li of %s to %li of %s&quot;,
-        webkit_dom_range_get_start_offset(range, 0),
-        dumpNodePath(webkit_dom_range_get_start_container(range, 0)).data(),
-        webkit_dom_range_get_end_offset(range, 0),
-        dumpNodePath(webkit_dom_range_get_end_container(range, 0)).data()));
-
-    return dump.get();
-}
-
-static const char* insertActionString(WebKitInsertAction action)
-{
-    switch (action) {
-    case WEBKIT_INSERT_ACTION_TYPED:
-        return &quot;WebViewInsertActionTyped&quot;;
-    case WEBKIT_INSERT_ACTION_PASTED:
-        return &quot;WebViewInsertActionPasted&quot;;
-    case WEBKIT_INSERT_ACTION_DROPPED:
-        return &quot;WebViewInsertActionDropped&quot;;
-    }
-    ASSERT_NOT_REACHED();
-    return &quot;WebViewInsertActionTyped&quot;;
-}
-
-static const char* selectionAffinityString(WebKitSelectionAffinity affinity)
-{
-    switch (affinity) {
-    case WEBKIT_SELECTION_AFFINITY_UPSTREAM:
-        return &quot;NSSelectionAffinityUpstream&quot;;
-    case WEBKIT_SELECTION_AFFINITY_DOWNSTREAM:
-        return &quot;NSSelectionAffinityDownstream&quot;;
-    }
-    ASSERT_NOT_REACHED();
-    return &quot;NSSelectionAffinityUpstream&quot;;
-}
-
-gboolean shouldBeginEditing(WebKitWebView* webView, WebKitDOMRange* range)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpEditingCallbacks())
-        printf(&quot;EDITING DELEGATE: shouldBeginEditingInDOMRange:%s\n&quot;, dumpRange(range).data());
-    return TRUE;
-}
-
-gboolean shouldEndEditing(WebKitWebView* webView, WebKitDOMRange* range)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpEditingCallbacks())
-        printf(&quot;EDITING DELEGATE: shouldEndEditingInDOMRange:%s\n&quot;, dumpRange(range).data());
-    return TRUE;
-}
-
-gboolean shouldInsertNode(WebKitWebView* webView, WebKitDOMNode* node, WebKitDOMRange* range, WebKitInsertAction action)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpEditingCallbacks()) {
-        printf(&quot;EDITING DELEGATE: shouldInsertNode:%s replacingDOMRange:%s givenAction:%s\n&quot;,
-               dumpNodePath(node).data(), dumpRange(range).data(), insertActionString(action));
-    }
-    return TRUE;
-}
-
-gboolean shouldInsertText(WebKitWebView* webView, const gchar* text, WebKitDOMRange* range, WebKitInsertAction action)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpEditingCallbacks()) {
-        printf(&quot;EDITING DELEGATE: shouldInsertText:%s replacingDOMRange:%s givenAction:%s\n&quot;,
-               text, dumpRange(range).data(), insertActionString(action));
-    }
-    return TRUE;
-}
-
-gboolean shouldDeleteRange(WebKitWebView* webView, WebKitDOMRange* range)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpEditingCallbacks())
-        printf(&quot;EDITING DELEGATE: shouldDeleteDOMRange:%s\n&quot;, dumpRange(range).data());
-    return TRUE;
-}
-
-gboolean shouldShowDeleteInterfaceForElement(WebKitWebView* webView, WebKitDOMHTMLElement* element)
-{
-    return FALSE;
-}
-
-gboolean shouldChangeSelectedRange(WebKitWebView* webView, WebKitDOMRange* fromRange, WebKitDOMRange* toRange, WebKitSelectionAffinity affinity, gboolean stillSelecting)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpEditingCallbacks()) {
-        printf(&quot;EDITING DELEGATE: shouldChangeSelectedDOMRange:%s toDOMRange:%s affinity:%s stillSelecting:%s\n&quot;,
-               dumpRange(fromRange).data(), dumpRange(toRange).data(), selectionAffinityString(affinity),
-               stillSelecting ? &quot;TRUE&quot; : &quot;FALSE&quot;);
-    }
-    return TRUE;
-}
-
-gboolean shouldApplyStyle(WebKitWebView* webView, WebKitDOMCSSStyleDeclaration* style, WebKitDOMRange* range)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpEditingCallbacks()) {
-        GUniquePtr&lt;gchar&gt; styleText(webkit_dom_css_style_declaration_get_css_text(style));
-        printf(&quot;EDITING DELEGATE: shouldApplyStyle:%s toElementsInDOMRange:%s\n&quot;,
-               styleText.get(), dumpRange(range).data());
-    }
-    return TRUE;
-}
-
-void editingBegan(WebKitWebView*)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpEditingCallbacks())
-        printf(&quot;EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification\n&quot;);
-}
-
-void userChangedContents(WebKitWebView*)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpEditingCallbacks())
-        printf(&quot;EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification\n&quot;);
-}
-
-void editingEnded(WebKitWebView*)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpEditingCallbacks())
-        printf(&quot;EDITING DELEGATE: webViewDidEndEditing:WebViewDidEndEditingNotification\n&quot;);
-}
-
-void selectionChanged(WebKitWebView*)
-{
-    if (!done &amp;&amp; gTestRunner-&gt;dumpEditingCallbacks())
-        printf(&quot;EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification\n&quot;);
-}
-
-void connectEditingCallbacks(WebKitWebView* webView)
-{
-    g_object_connect(G_OBJECT(webView),
-                     &quot;signal::should-begin-editing&quot;, shouldBeginEditing, 0,
-                     &quot;signal::should-end-editing&quot;, shouldEndEditing, 0,
-                     &quot;signal::should-insert-node&quot;, shouldInsertNode, 0,
-                     &quot;signal::should-insert-text&quot;, shouldInsertText, 0,
-                     &quot;signal::should-delete-range&quot;, shouldDeleteRange, 0,
-                     &quot;signal::should-show-delete-interface-for-element&quot;, shouldShowDeleteInterfaceForElement, 0,
-                     &quot;signal::should-change-selected-range&quot;, shouldChangeSelectedRange, 0,
-                     &quot;signal::should-apply-style&quot;, shouldApplyStyle, 0,
-                     &quot;signal::editing-began&quot;, editingBegan, 0,
-                     &quot;signal::user-changed-contents&quot;, userChangedContents, 0,
-                     &quot;signal::editing-ended&quot;, editingEnded, 0,
-                     &quot;signal::selection-changed&quot;, selectionChanged, 0,
-                     NULL);
-}
-
</del></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkEditingCallbacksh"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/EditingCallbacks.h (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/EditingCallbacks.h        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/EditingCallbacks.h        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,35 +0,0 @@
</span><del>-/*
- * Copyright (C) 2010 Igalia S.L.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) 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 APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 APPLE OR ITS 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 EditingCallbacks_h
-#define EditingCallbacks_h
-
-typedef struct _WebKitWebView WebKitWebView;
-void connectEditingCallbacks(WebKitWebView*);
-
-#endif
</del></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkEventSendercpp"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/EventSender.cpp (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/EventSender.cpp        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/EventSender.cpp        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,1004 +0,0 @@
</span><del>-/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2009 Zan Dobersek &lt;zandobersek@gmail.com&gt;
- * Copyright (C) 2009 Holger Hans Peter Freyther
- * Copyright (C) 2010 Igalia S.L.
- * Copyright (C) 2012 ChangSeok Oh &lt;shivamidow@gmail.com&gt;
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) 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 APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 APPLE OR ITS 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.
- */
-
-#include &quot;config.h&quot;
-#include &quot;EventSender.h&quot;
-
-#include &quot;DumpRenderTree.h&quot;
-#include &quot;WebCoreSupport/DumpRenderTreeSupportGtk.h&quot;
-#include &lt;GRefPtrGtk.h&gt;
-#include &lt;GtkVersioning.h&gt;
-#include &lt;JavaScriptCore/JSObjectRef.h&gt;
-#include &lt;JavaScriptCore/JSRetainPtr.h&gt;
-#include &lt;JavaScriptCore/JSStringRef.h&gt;
-#include &lt;cstring&gt;
-#include &lt;gdk/gdk.h&gt;
-#include &lt;gdk/gdkkeysyms.h&gt;
-#include &lt;webkit/webkitwebframe.h&gt;
-#include &lt;webkit/webkitwebview.h&gt;
-#include &lt;wtf/ASCIICType.h&gt;
-#include &lt;wtf/Platform.h&gt;
-#include &lt;wtf/gobject/GUniquePtr.h&gt;
-#include &lt;wtf/text/CString.h&gt;
-
-extern &quot;C&quot; {
-    extern GtkMenu* webkit_web_view_get_context_menu(WebKitWebView*);
-}
-
-static bool dragMode;
-static int timeOffset = 0;
-
-static int lastMousePositionX;
-static int lastMousePositionY;
-static int lastClickPositionX;
-static int lastClickPositionY;
-static int lastClickTimeOffset;
-static int lastClickButton;
-static unsigned buttonCurrentlyDown;
-static int clickCount;
-GdkDragContext* currentDragSourceContext;
-
-struct DelayedMessage {
-    GdkEvent* event;
-    gulong delay;
-};
-
-static DelayedMessage msgQueue[1024];
-
-static unsigned endOfQueue;
-static unsigned startOfQueue;
-
-static const float zoomMultiplierRatio = 1.2f;
-
-// WebCore and layout tests assume this value.
-static const float pixelsPerScrollTick = 40;
-
-// Key event location code defined in DOM Level 3.
-enum KeyLocationCode {
-    DOM_KEY_LOCATION_STANDARD      = 0x00,
-    DOM_KEY_LOCATION_LEFT          = 0x01,
-    DOM_KEY_LOCATION_RIGHT         = 0x02,
-    DOM_KEY_LOCATION_NUMPAD        = 0x03
-};
-
-static void sendOrQueueEvent(GdkEvent*, bool = true);
-static void dispatchEvent(GdkEvent* event);
-static guint getStateFlags();
-
-static JSValueRef getDragModeCallback(JSContextRef context, JSObjectRef object, JSStringRef propertyName, JSValueRef* exception)
-{
-    return JSValueMakeBoolean(context, dragMode);
-}
-
-static bool setDragModeCallback(JSContextRef context, JSObjectRef object, JSStringRef propertyName, JSValueRef value, JSValueRef* exception)
-{
-    dragMode = JSValueToBoolean(context, value);
-    return true;
-}
-
-static JSValueRef leapForwardCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    if (argumentCount &gt; 0) {
-        msgQueue[endOfQueue].delay = JSValueToNumber(context, arguments[0], exception);
-        timeOffset += msgQueue[endOfQueue].delay;
-        ASSERT(!exception || !*exception);
-    }
-
-    return JSValueMakeUndefined(context);
-}
-
-bool prepareMouseButtonEvent(GdkEvent* event, int eventSenderButtonNumber, guint modifiers)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    if (!view)
-        return false;
-
-    // The logic for mapping EventSender button numbers to GDK button
-    // numbers originates from the Windows EventSender.
-    int gdkButtonNumber = 3;
-    if (eventSenderButtonNumber &gt;= 0 &amp;&amp; eventSenderButtonNumber &lt;= 2)
-        gdkButtonNumber = eventSenderButtonNumber + 1;
-
-    // fast/events/mouse-click-events expects the 4th button
-    // to be event-&gt;button = 1, so send a middle-button event.
-    else if (eventSenderButtonNumber == 3)
-        gdkButtonNumber = 2;
-
-    event-&gt;button.button = gdkButtonNumber;
-    event-&gt;button.x = lastMousePositionX;
-    event-&gt;button.y = lastMousePositionY;
-    event-&gt;button.window = gtk_widget_get_window(GTK_WIDGET(view));
-    g_object_ref(event-&gt;button.window);
-    event-&gt;button.device = getDefaultGDKPointerDevice(event-&gt;button.window);
-    event-&gt;button.state = modifiers | getStateFlags();
-    event-&gt;button.time = GDK_CURRENT_TIME;
-    event-&gt;button.axes = 0;
-
-    int xRoot, yRoot;
-    gdk_window_get_root_coords(gtk_widget_get_window(GTK_WIDGET(view)), lastMousePositionX, lastMousePositionY, &amp;xRoot, &amp;yRoot);
-    event-&gt;button.x_root = xRoot;
-    event-&gt;button.y_root = yRoot;
-
-    return true;
-}
-
-static JSValueRef getMenuItemTitleCallback(JSContextRef context, JSObjectRef object, JSStringRef propertyName, JSValueRef* exception)
-{
-    GtkWidget* widget = GTK_WIDGET(JSObjectGetPrivate(object));
-    CString label;
-    if (GTK_IS_SEPARATOR_MENU_ITEM(widget))
-        label = &quot;&lt;separator&gt;&quot;;
-    else
-        label = gtk_menu_item_get_label(GTK_MENU_ITEM(widget));
-
-    JSRetainPtr&lt;JSStringRef&gt; itemText(Adopt, JSStringCreateWithUTF8CString(label.data()));
-    return JSValueMakeString(context, itemText.get());
-}
-
-static bool setMenuItemTitleCallback(JSContextRef context, JSObjectRef object, JSStringRef propertyName, JSValueRef value, JSValueRef* exception)
-{
-    return true;
-}
-
-static JSValueRef menuItemClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    GtkMenuItem* item = GTK_MENU_ITEM(JSObjectGetPrivate(thisObject));
-    gtk_menu_item_activate(item);
-    return JSValueMakeUndefined(context);
-}
-
-static JSStaticFunction staticMenuItemFunctions[] = {
-    { &quot;click&quot;, menuItemClickCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { 0, 0, 0 }
-};
-
-static JSStaticValue staticMenuItemValues[] = {
-    { &quot;title&quot;, getMenuItemTitleCallback, setMenuItemTitleCallback, kJSPropertyAttributeNone },
-    { 0, 0, 0, 0 }
-};
-
-static JSClassRef getMenuItemClass()
-{
-    static JSClassRef menuItemClass = 0;
-
-    if (!menuItemClass) {
-        JSClassDefinition classDefinition = {
-                0, 0, 0, 0, 0, 0,
-                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-        classDefinition.staticFunctions = staticMenuItemFunctions;
-        classDefinition.staticValues = staticMenuItemValues;
-
-        menuItemClass = JSClassCreate(&amp;classDefinition);
-    }
-
-    return menuItemClass;
-}
-
-
-static JSValueRef contextClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    GdkEvent* pressEvent = gdk_event_new(GDK_BUTTON_PRESS);
-
-    if (!prepareMouseButtonEvent(pressEvent, 2, 0)) {
-        gdk_event_free(pressEvent);
-        return JSObjectMakeArray(context, 0, 0, 0);
-    }
-
-    GdkEvent* releaseEvent = gdk_event_copy(pressEvent);
-    sendOrQueueEvent(pressEvent);
-
-    JSValueRef valueRef = JSObjectMakeArray(context, 0, 0, 0);
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    GtkMenu* gtkMenu = webkit_web_view_get_context_menu(view);
-    if (gtkMenu) {
-        GUniquePtr&lt;GList&gt; items(gtk_container_get_children(GTK_CONTAINER(gtkMenu)));
-        JSValueRef arrayValues[g_list_length(items.get())];
-        int index = 0;
-        for (GList* item = g_list_first(items.get()); item; item = g_list_next(item)) {
-            arrayValues[index] = JSObjectMake(context, getMenuItemClass(), item-&gt;data);
-            index++;
-        }
-        if (index)
-            valueRef = JSObjectMakeArray(context, index - 1, arrayValues, 0);
-    }
-
-    releaseEvent-&gt;type = GDK_BUTTON_RELEASE;
-    sendOrQueueEvent(releaseEvent);
-    return valueRef;
-}
-
-static gboolean sendClick(gpointer)
-{
-    GdkEvent* pressEvent = gdk_event_new(GDK_BUTTON_PRESS);
-
-    if (!prepareMouseButtonEvent(pressEvent, 1, 0)) {
-        gdk_event_free(pressEvent);
-        return FALSE;
-    }
-
-    GdkEvent* releaseEvent = gdk_event_copy(pressEvent);
-    dispatchEvent(pressEvent);
-    releaseEvent-&gt;type = GDK_BUTTON_RELEASE;
-    dispatchEvent(releaseEvent);
-
-    return FALSE;
-}
-
-static JSValueRef scheduleAsynchronousClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    g_idle_add_full(G_PRIORITY_DEFAULT, sendClick, 0, 0);
-    return JSValueMakeUndefined(context);
-}
-
-static void updateClickCount(int button)
-{
-    if (lastClickPositionX != lastMousePositionX
-        || lastClickPositionY != lastMousePositionY
-        || lastClickButton != button
-        || timeOffset - lastClickTimeOffset &gt;= 1)
-        clickCount = 1;
-    else
-        clickCount++;
-}
-
-static guint gdkModifierFromJSValue(JSContextRef context, const JSValueRef value)
-{
-    JSStringRef string = JSValueToStringCopy(context, value, 0);
-    guint gdkModifier = 0;
-    if (JSStringIsEqualToUTF8CString(string, &quot;ctrlKey&quot;)
-        || JSStringIsEqualToUTF8CString(string, &quot;addSelectionKey&quot;))
-        gdkModifier = GDK_CONTROL_MASK;
-    else if (JSStringIsEqualToUTF8CString(string, &quot;shiftKey&quot;)
-             || JSStringIsEqualToUTF8CString(string, &quot;rangeSelectionKey&quot;))
-        gdkModifier = GDK_SHIFT_MASK;
-    else if (JSStringIsEqualToUTF8CString(string, &quot;altKey&quot;))
-        gdkModifier = GDK_MOD1_MASK;
-    
-    // Currently the metaKey as defined in WebCore/platform/gtk/PlatformMouseEventGtk.cpp
-    // is GDK_META_MASK. This code must be kept in sync with that file.
-    else if (JSStringIsEqualToUTF8CString(string, &quot;metaKey&quot;))
-        gdkModifier = GDK_META_MASK;
-    
-    JSStringRelease(string);
-    return gdkModifier;
-}
-
-static guint gdkModifersFromJSValue(JSContextRef context, const JSValueRef modifiers)
-{
-    // The value may either be a string with a single modifier or an array of modifiers.
-    if (JSValueIsString(context, modifiers))
-        return gdkModifierFromJSValue(context, modifiers);
-
-    JSObjectRef modifiersArray = JSValueToObject(context, modifiers, 0);
-    if (!modifiersArray)
-        return 0;
-
-    guint gdkModifiers = 0;
-    JSRetainPtr&lt;JSStringRef&gt; lengthProperty(Adopt, JSStringCreateWithUTF8CString(&quot;length&quot;));
-    int modifiersCount = JSValueToNumber(context, JSObjectGetProperty(context, modifiersArray, lengthProperty.get(), 0), 0);
-    for (int i = 0; i &lt; modifiersCount; ++i)
-        gdkModifiers |= gdkModifierFromJSValue(context, JSObjectGetPropertyAtIndex(context, modifiersArray, i, 0));
-    return gdkModifiers;
-}
-
-static JSValueRef mouseDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    int button = 0;
-    if (argumentCount == 1) {
-        button = static_cast&lt;int&gt;(JSValueToNumber(context, arguments[0], exception));
-        g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
-    }
-    guint modifiers = argumentCount &gt;= 2 ? gdkModifersFromJSValue(context, arguments[1]) : 0;
-
-    GdkEvent* event = gdk_event_new(GDK_BUTTON_PRESS);
-    if (!prepareMouseButtonEvent(event, button, modifiers)) {
-        gdk_event_free(event);
-        return JSValueMakeUndefined(context);
-    }
-
-    // If the same mouse button is already in the down position don't send another event as it may confuse Xvfb.
-    if (buttonCurrentlyDown == event-&gt;button.button) {
-        gdk_event_free(event);
-        return JSValueMakeUndefined(context);
-    }
-
-    buttonCurrentlyDown = event-&gt;button.button;
-
-    // Normally GDK will send both GDK_BUTTON_PRESS and GDK_2BUTTON_PRESS for
-    // the second button press during double-clicks. WebKit GTK+ selectively
-    // ignores the first GDK_BUTTON_PRESS of that pair using gdk_event_peek.
-    // Since our events aren't ever going onto the GDK event queue, WebKit won't
-    // be able to filter out the first GDK_BUTTON_PRESS, so we just don't send
-    // it here. Eventually this code should probably figure out a way to get all
-    // appropriate events onto the event queue and this work-around should be
-    // removed.
-    updateClickCount(event-&gt;button.button);
-    if (clickCount == 2)
-        event-&gt;type = GDK_2BUTTON_PRESS;
-    else if (clickCount == 3)
-        event-&gt;type = GDK_3BUTTON_PRESS;
-
-    sendOrQueueEvent(event);
-    return JSValueMakeUndefined(context);
-}
-
-static guint getStateFlags()
-{
-    if (buttonCurrentlyDown == 1)
-        return GDK_BUTTON1_MASK;
-    if (buttonCurrentlyDown == 2)
-        return GDK_BUTTON2_MASK;
-    if (buttonCurrentlyDown == 3)
-        return GDK_BUTTON3_MASK;
-    return 0;
-}
-
-static JSValueRef mouseUpCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    int button = 0;
-    if (argumentCount == 1) {
-        button = static_cast&lt;int&gt;(JSValueToNumber(context, arguments[0], exception));
-        g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
-    }
-    guint modifiers = argumentCount &gt;= 2 ? gdkModifersFromJSValue(context, arguments[1]) : 0;
-
-    GdkEvent* event = gdk_event_new(GDK_BUTTON_RELEASE);
-    if (!prepareMouseButtonEvent(event, button, modifiers)) {
-        gdk_event_free(event);
-        return JSValueMakeUndefined(context);
-    }
-
-    lastClickPositionX = lastMousePositionX;
-    lastClickPositionY = lastMousePositionY;
-    lastClickButton = buttonCurrentlyDown;
-    lastClickTimeOffset = timeOffset;
-    buttonCurrentlyDown = 0;
-
-    sendOrQueueEvent(event);
-    return JSValueMakeUndefined(context);
-}
-
-static JSValueRef mouseMoveToCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    if (!view)
-        return JSValueMakeUndefined(context);
-
-    if (argumentCount &lt; 2)
-        return JSValueMakeUndefined(context);
-
-    lastMousePositionX = (int)JSValueToNumber(context, arguments[0], exception);
-    g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
-    lastMousePositionY = (int)JSValueToNumber(context, arguments[1], exception);
-    g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
-
-    GdkEvent* event = gdk_event_new(GDK_MOTION_NOTIFY);
-    event-&gt;motion.x = lastMousePositionX;
-    event-&gt;motion.y = lastMousePositionY;
-
-    event-&gt;motion.time = GDK_CURRENT_TIME;
-    event-&gt;motion.window = gtk_widget_get_window(GTK_WIDGET(view));
-    g_object_ref(event-&gt;motion.window);
-    event-&gt;button.device = getDefaultGDKPointerDevice(event-&gt;motion.window);
-
-    guint modifiers = argumentCount &gt;= 3 ? gdkModifersFromJSValue(context, arguments[2]) : 0;
-    event-&gt;motion.state = modifiers | getStateFlags();
-    event-&gt;motion.axes = 0;
-
-    int xRoot, yRoot;
-    gdk_window_get_root_coords(gtk_widget_get_window(GTK_WIDGET(view)), lastMousePositionX, lastMousePositionY, &amp;xRoot, &amp;yRoot);
-    event-&gt;motion.x_root = xRoot;
-    event-&gt;motion.y_root = yRoot;
-
-    sendOrQueueEvent(event, false);
-    return JSValueMakeUndefined(context);
-}
-
-static JSValueRef mouseScrollByCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    if (!view)
-        return JSValueMakeUndefined(context);
-
-    if (argumentCount &lt; 2)
-        return JSValueMakeUndefined(context);
-
-    int horizontal = (int)JSValueToNumber(context, arguments[0], exception);
-    g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
-    int vertical = (int)JSValueToNumber(context, arguments[1], exception);
-    g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
-
-    // Copy behaviour of Qt and EFL - just return in case of (0,0) mouse scroll
-    if (!horizontal &amp;&amp; !vertical)
-        return JSValueMakeUndefined(context);
-
-    GdkEvent* event = gdk_event_new(GDK_SCROLL);
-    event-&gt;scroll.x = lastMousePositionX;
-    event-&gt;scroll.y = lastMousePositionY;
-    event-&gt;scroll.time = GDK_CURRENT_TIME;
-    event-&gt;scroll.window = gtk_widget_get_window(GTK_WIDGET(view));
-    g_object_ref(event-&gt;scroll.window);
-
-    // GTK+ only supports one tick in each scroll event that is not smooth. For the cases of more than one direction,
-    // and more than one step in a direction, we can only use smooth events, supported from Gtk 3.3.18.
-#if GTK_CHECK_VERSION(3, 3, 18)
-    if ((horizontal &amp;&amp; vertical) || horizontal &gt; 1 || horizontal &lt; -1 || vertical &gt; 1 || vertical &lt; -1) {
-        event-&gt;scroll.direction = GDK_SCROLL_SMOOTH;
-        event-&gt;scroll.delta_x = -horizontal;
-        event-&gt;scroll.delta_y = -vertical;
-
-        sendOrQueueEvent(event);
-        return JSValueMakeUndefined(context);
-    }
-#else
-    g_return_val_if_fail((!vertical || !horizontal), JSValueMakeUndefined(context));
-#endif
-
-    if (horizontal &lt; 0)
-        event-&gt;scroll.direction = GDK_SCROLL_RIGHT;
-    else if (horizontal &gt; 0)
-        event-&gt;scroll.direction = GDK_SCROLL_LEFT;
-    else if (vertical &lt; 0)
-        event-&gt;scroll.direction = GDK_SCROLL_DOWN;
-    else if (vertical &gt; 0)
-        event-&gt;scroll.direction = GDK_SCROLL_UP;
-    else
-        g_assert_not_reached();
-
-    sendOrQueueEvent(event);
-    return JSValueMakeUndefined(context);
-}
-
-static JSValueRef continuousMouseScrollByCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-#if GTK_CHECK_VERSION(3, 3, 18)
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    if (!view)
-        return JSValueMakeUndefined(context);
-
-    if (argumentCount &lt; 2)
-        return JSValueMakeUndefined(context);
-
-    int horizontal = JSValueToNumber(context, arguments[0], exception);
-    g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
-    int vertical = JSValueToNumber(context, arguments[1], exception);
-    g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
-
-    // We do not yet support continuous scrolling by page.
-    if (argumentCount &gt;= 3 &amp;&amp; JSValueToBoolean(context, arguments[2]))
-        return JSValueMakeUndefined(context);
-
-    GdkEvent* event = gdk_event_new(GDK_SCROLL);
-    event-&gt;scroll.x = lastMousePositionX;
-    event-&gt;scroll.y = lastMousePositionY;
-    event-&gt;scroll.time = GDK_CURRENT_TIME;
-    event-&gt;scroll.window = gtk_widget_get_window(GTK_WIDGET(view));
-    g_object_ref(event-&gt;scroll.window);
-
-    event-&gt;scroll.direction = GDK_SCROLL_SMOOTH;
-    event-&gt;scroll.delta_x = -horizontal / pixelsPerScrollTick;
-    event-&gt;scroll.delta_y = -vertical / pixelsPerScrollTick;
-
-    sendOrQueueEvent(event);
-#endif
-    return JSValueMakeUndefined(context);
-}
-
-static void dragWithFilesDragDataGetCallback(GtkWidget*, GdkDragContext*, GtkSelectionData *data, guint, guint, gpointer userData)
-{
-    gtk_selection_data_set_uris(data, static_cast&lt;gchar**&gt;(userData));
-}
-
-static void dragWithFilesDragEndCallback(GtkWidget* widget, GdkDragContext*, gpointer userData)
-{
-    g_signal_handlers_disconnect_by_func(widget, reinterpret_cast&lt;void*&gt;(dragWithFilesDragEndCallback), userData);
-    g_signal_handlers_disconnect_by_func(widget, reinterpret_cast&lt;void*&gt;(dragWithFilesDragDataGetCallback), userData);
-    g_strfreev(static_cast&lt;gchar**&gt;(userData));
-}
-
-static JSValueRef beginDragWithFilesCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    if (argumentCount &lt; 1)
-        return JSValueMakeUndefined(context);
-
-    JSObjectRef filesArray = JSValueToObject(context, arguments[0], exception);
-    ASSERT(!exception || !*exception);
-
-    const gchar* mainFrameURI = webkit_web_frame_get_uri(mainFrame);
-    GRefPtr&lt;GFile&gt; testFile(adoptGRef(g_file_new_for_uri(mainFrameURI)));
-    GRefPtr&lt;GFile&gt; parentDirectory(g_file_get_parent(testFile.get()));
-    if (!parentDirectory)
-        return JSValueMakeUndefined(context);
-
-    // If this is an HTTP test, we still need to pass a local file path
-    // to WebCore. Even though the file doesn't exist, this should be fine
-    // for most tests.
-    GUniquePtr&lt;gchar&gt; scheme(g_file_get_uri_scheme(parentDirectory.get()));
-    if (g_str_equal(scheme.get(), &quot;http&quot;) || g_str_equal(scheme.get(), &quot;https&quot;)) {
-        GUniquePtr&lt;gchar&gt; currentDirectory(g_get_current_dir());
-        parentDirectory = adoptGRef(g_file_new_for_path(currentDirectory.get()));
-    }
-
-    JSStringRef lengthProperty = JSStringCreateWithUTF8CString(&quot;length&quot;);
-    int filesArrayLength = JSValueToNumber(context, JSObjectGetProperty(context, filesArray, lengthProperty, 0), 0);
-    JSStringRelease(lengthProperty);
-
-    gchar** draggedFilesURIList = g_new0(gchar*, filesArrayLength + 1);
-    for (int i = 0; i &lt; filesArrayLength; ++i) {
-        JSStringRef filenameString = JSValueToStringCopy(context,
-                                                         JSObjectGetPropertyAtIndex(context, filesArray, i, 0), 0);
-        size_t bufferSize = JSStringGetMaximumUTF8CStringSize(filenameString);
-        GUniquePtr&lt;gchar&gt; filenameBuffer(static_cast&lt;gchar*&gt;(g_malloc(bufferSize)));
-        JSStringGetUTF8CString(filenameString, filenameBuffer.get(), bufferSize);
-        JSStringRelease(filenameString);
-
-        GRefPtr&lt;GFile&gt; dragFile(g_file_get_child(parentDirectory.get(), filenameBuffer.get()));
-        draggedFilesURIList[i] = g_file_get_uri(dragFile.get());
-    }
-
-    GtkWidget* view = GTK_WIDGET(webkit_web_frame_get_web_view(mainFrame));
-    g_object_connect(G_OBJECT(view),
-        &quot;signal::drag-end&quot;, dragWithFilesDragEndCallback, draggedFilesURIList,
-        &quot;signal::drag-data-get&quot;, dragWithFilesDragDataGetCallback, draggedFilesURIList,
-        NULL);
-
-    GdkEvent event;
-    GdkWindow* viewGDKWindow = gtk_widget_get_window(view);
-    memset(&amp;event, 0, sizeof(event));
-    event.type = GDK_MOTION_NOTIFY;
-    event.motion.x = lastMousePositionX;
-    event.motion.y = lastMousePositionY;
-    event.motion.time = GDK_CURRENT_TIME;
-    event.motion.window = viewGDKWindow;
-    event.motion.device = getDefaultGDKPointerDevice(viewGDKWindow);
-    event.motion.state = GDK_BUTTON1_MASK;
-
-    int xRoot, yRoot;
-    gdk_window_get_root_coords(viewGDKWindow, lastMousePositionX, lastMousePositionY, &amp;xRoot, &amp;yRoot);
-    event.motion.x_root = xRoot;
-    event.motion.y_root = yRoot;
-
-    GtkTargetList* targetList = gtk_target_list_new(0, 0);
-    gtk_target_list_add_uri_targets(targetList, 0);
-    gtk_drag_begin(view, targetList, GDK_ACTION_COPY, 1, &amp;event);
-    gtk_target_list_unref(targetList);
-
-    return JSValueMakeUndefined(context);
-}
-
-static void sendOrQueueEvent(GdkEvent* event, bool shouldReplaySavedEvents)
-{
-    // Mouse move events are queued if the previous event was queued or if a
-    // delay was set up by leapForward().
-    if ((dragMode &amp;&amp; buttonCurrentlyDown) || endOfQueue != startOfQueue || msgQueue[endOfQueue].delay) {
-        msgQueue[endOfQueue++].event = event;
-
-        if (shouldReplaySavedEvents)
-            replaySavedEvents();
-
-        return;
-    }
-
-    dispatchEvent(event);
-}
-
-static void dispatchEvent(GdkEvent* event)
-{
-    DumpRenderTreeSupportGtk::layoutFrame(mainFrame);
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    if (!view) {
-        gdk_event_free(event);
-        return;
-    }
-
-    // The widget focus may have been lost in the course of the test,
-    // so force another explicit focus grab here.
-    gtk_widget_grab_focus(GTK_WIDGET(view));
-    gtk_main_do_event(event);
-
-    if (!currentDragSourceContext) {
-        gdk_event_free(event);
-        return;
-    }
-
-    if (event-&gt;type == GDK_MOTION_NOTIFY) {
-        // WebKit has called gtk_drag_start(), but because the main loop isn't
-        // running GDK internals don't know that the drag has started yet. Pump
-        // the main loop a little bit so that GDK is in the correct state.
-        while (gtk_events_pending())
-            gtk_main_iteration();
-
-        // Simulate a drag motion on the top-level GDK window.
-        GtkWidget* parentWidget = gtk_widget_get_parent(GTK_WIDGET(view));
-        GdkWindow* parentWidgetWindow = gtk_widget_get_window(parentWidget);
-        gdk_drag_motion(currentDragSourceContext, parentWidgetWindow, GDK_DRAG_PROTO_XDND,
-            event-&gt;motion.x_root, event-&gt;motion.y_root,
-            gdk_drag_context_get_selected_action(currentDragSourceContext),
-            gdk_drag_context_get_actions(currentDragSourceContext),
-            GDK_CURRENT_TIME);
-
-    } else if (currentDragSourceContext &amp;&amp; event-&gt;type == GDK_BUTTON_RELEASE) {
-        // We've released the mouse button, we should just be able to spin the
-        // event loop here and have GTK+ send the appropriate notifications for
-        // the end of the drag.
-        while (gtk_events_pending())
-            gtk_main_iteration();
-    }
-
-    gdk_event_free(event);
-}
-
-void replaySavedEvents()
-{
-    // First send all the events that are ready to be sent
-    while (startOfQueue &lt; endOfQueue) {
-        if (msgQueue[startOfQueue].delay) {
-            g_usleep(msgQueue[startOfQueue].delay * 1000);
-            msgQueue[startOfQueue].delay = 0;
-        }
-
-        dispatchEvent(msgQueue[startOfQueue++].event);
-    }
-
-    startOfQueue = 0;
-    endOfQueue = 0;
-}
-
-static GdkEvent* createKeyPressEvent(JSContextRef context, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    g_return_val_if_fail(argumentCount &gt;= 1, 0);
-    guint modifiers = argumentCount &gt;= 2 ? gdkModifersFromJSValue(context, arguments[1]) : 0;
-
-    // handle location argument.
-    int location = DOM_KEY_LOCATION_STANDARD;
-    if (argumentCount &gt; 2)
-        location = (int)JSValueToNumber(context, arguments[2], exception);
-
-    JSStringRef character = JSValueToStringCopy(context, arguments[0], exception);
-    g_return_val_if_fail((!exception || !*exception), 0);
-
-    int gdkKeySym = GDK_VoidSymbol;
-    if (location == DOM_KEY_LOCATION_NUMPAD) {
-        if (JSStringIsEqualToUTF8CString(character, &quot;leftArrow&quot;))
-            gdkKeySym = GDK_KP_Left;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;rightArrow&quot;))
-            gdkKeySym = GDK_KP_Right;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;upArrow&quot;))
-            gdkKeySym = GDK_KP_Up;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;downArrow&quot;))
-            gdkKeySym = GDK_KP_Down;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;pageUp&quot;))
-            gdkKeySym = GDK_KP_Page_Up;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;pageDown&quot;))
-            gdkKeySym = GDK_KP_Page_Down;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;home&quot;))
-            gdkKeySym = GDK_KP_Home;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;end&quot;))
-            gdkKeySym = GDK_KP_End;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;insert&quot;))
-            gdkKeySym = GDK_KP_Insert;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;delete&quot;))
-            gdkKeySym = GDK_KP_Delete;
-        else
-            // If we get some other key specified with the numpad location,
-            // crash here, so we add it sooner rather than later.
-            g_assert_not_reached();
-    } else {
-        if (JSStringIsEqualToUTF8CString(character, &quot;leftArrow&quot;))
-            gdkKeySym = GDK_Left;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;rightArrow&quot;))
-            gdkKeySym = GDK_Right;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;upArrow&quot;))
-            gdkKeySym = GDK_Up;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;downArrow&quot;))
-            gdkKeySym = GDK_Down;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;pageUp&quot;))
-            gdkKeySym = GDK_Page_Up;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;pageDown&quot;))
-            gdkKeySym = GDK_Page_Down;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;home&quot;))
-            gdkKeySym = GDK_Home;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;end&quot;))
-            gdkKeySym = GDK_End;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;insert&quot;))
-            gdkKeySym = GDK_Insert;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;delete&quot;))
-            gdkKeySym = GDK_Delete;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;printScreen&quot;))
-            gdkKeySym = GDK_Print;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;menu&quot;))
-            gdkKeySym = GDK_Menu;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;F1&quot;))
-            gdkKeySym = GDK_F1;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;F2&quot;))
-            gdkKeySym = GDK_F2;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;F3&quot;))
-            gdkKeySym = GDK_F3;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;F4&quot;))
-            gdkKeySym = GDK_F4;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;F5&quot;))
-            gdkKeySym = GDK_F5;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;F6&quot;))
-            gdkKeySym = GDK_F6;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;F7&quot;))
-            gdkKeySym = GDK_F7;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;F8&quot;))
-            gdkKeySym = GDK_F8;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;F9&quot;))
-            gdkKeySym = GDK_F9;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;F10&quot;))
-            gdkKeySym = GDK_F10;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;F11&quot;))
-            gdkKeySym = GDK_F11;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;F12&quot;))
-            gdkKeySym = GDK_F12;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;leftAlt&quot;))
-            gdkKeySym = GDK_Alt_L;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;leftControl&quot;))
-            gdkKeySym = GDK_Control_L;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;leftShift&quot;))
-            gdkKeySym = GDK_Shift_L;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;rightAlt&quot;))
-            gdkKeySym = GDK_Alt_R;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;rightControl&quot;))
-            gdkKeySym = GDK_Control_R;
-        else if (JSStringIsEqualToUTF8CString(character, &quot;rightShift&quot;))
-            gdkKeySym = GDK_Shift_R;
-        else {
-            int charCode = JSStringGetCharactersPtr(character)[0];
-            if (charCode == '\n' || charCode == '\r')
-                gdkKeySym = GDK_Return;
-            else if (charCode == '\t')
-                gdkKeySym = GDK_Tab;
-            else if (charCode == '\x8')
-                gdkKeySym = GDK_BackSpace;
-            else {
-                gdkKeySym = gdk_unicode_to_keyval(charCode);
-                if (WTF::isASCIIUpper(charCode))
-                    modifiers |= GDK_SHIFT_MASK;
-            }
-        }
-    }
-    JSStringRelease(character);
-
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    g_return_val_if_fail(view, 0);
-
-    GdkEvent* pressEvent = gdk_event_new(GDK_KEY_PRESS);
-    pressEvent-&gt;key.keyval = gdkKeySym;
-    pressEvent-&gt;key.state = modifiers;
-    pressEvent-&gt;key.window = gtk_widget_get_window(GTK_WIDGET(view));
-    g_object_ref(pressEvent-&gt;key.window);
-#ifndef GTK_API_VERSION_2
-    gdk_event_set_device(pressEvent, getDefaultGDKPointerDevice(pressEvent-&gt;key.window));
-#endif
-
-    // When synthesizing an event, an invalid hardware_keycode value
-    // can cause it to be badly processed by Gtk+.
-    GUniqueOutPtr&lt;GdkKeymapKey&gt; keys;
-    gint nKeys;
-    if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), gdkKeySym, &amp;keys.outPtr(), &amp;nKeys))
-        pressEvent-&gt;key.hardware_keycode = keys.get()[0].keycode;
-
-    return pressEvent;
-}
-
-static void sendKeyDown(GdkEvent* pressEvent)
-{
-    g_return_if_fail(pressEvent);
-    GdkEvent* releaseEvent = gdk_event_copy(pressEvent);
-    releaseEvent-&gt;type = GDK_KEY_RELEASE;
-
-    dispatchEvent(pressEvent);
-    dispatchEvent(releaseEvent);
-
-    DumpRenderTreeSupportGtk::deliverAllMutationsIfNecessary();
-}
-
-static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    GdkEvent* pressEvent = createKeyPressEvent(context, argumentCount, arguments, exception);
-    sendKeyDown(pressEvent);
-
-    return JSValueMakeUndefined(context);
-}
-
-static void zoomIn(gboolean fullContentsZoom)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    if (!view)
-        return;
-
-    webkit_web_view_set_full_content_zoom(view, fullContentsZoom);
-    gfloat currentZoom = webkit_web_view_get_zoom_level(view);
-    webkit_web_view_set_zoom_level(view, currentZoom * zoomMultiplierRatio);
-}
-
-static void zoomOut(gboolean fullContentsZoom)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    if (!view)
-        return;
-
-    webkit_web_view_set_full_content_zoom(view, fullContentsZoom);
-    gfloat currentZoom = webkit_web_view_get_zoom_level(view);
-    webkit_web_view_set_zoom_level(view, currentZoom / zoomMultiplierRatio);
-}
-
-static JSValueRef textZoomInCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    zoomIn(FALSE);
-    return JSValueMakeUndefined(context);
-}
-
-static JSValueRef textZoomOutCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    zoomOut(FALSE);
-    return JSValueMakeUndefined(context);
-}
-
-static JSValueRef zoomPageInCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    zoomIn(TRUE);
-    return JSValueMakeUndefined(context);
-}
-
-static JSValueRef zoomPageOutCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    zoomOut(TRUE);
-    return JSValueMakeUndefined(context);
-}
-
-static JSValueRef scalePageByCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    if (argumentCount &lt; 3)
-        return JSValueMakeUndefined(context);
-
-    float scaleFactor = JSValueToNumber(context, arguments[0], exception);
-    float x = JSValueToNumber(context, arguments[1], exception);
-    float y = JSValueToNumber(context, arguments[2], exception);
-
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    if (!view)
-        return JSValueMakeUndefined(context);
-
-    DumpRenderTreeSupportGtk::scalePageBy(view, scaleFactor, x, y);
-
-    return JSValueMakeUndefined(context);
-}
-
-static gboolean sendAsynchronousKeyDown(gpointer userData)
-{
-    sendKeyDown(static_cast&lt;GdkEvent*&gt;(userData));
-    return FALSE;
-}
-
-static JSValueRef scheduleAsynchronousKeyDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    GdkEvent* pressEvent = createKeyPressEvent(context, argumentCount, arguments, exception);
-    if (pressEvent)
-        g_idle_add_full(G_PRIORITY_DEFAULT, sendAsynchronousKeyDown, static_cast&lt;gpointer&gt;(pressEvent), 0);
-
-    return JSValueMakeUndefined(context);
-}
-
-static JSValueRef clearTouchPointsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    return JSValueMakeUndefined(context);
-}
-
-static JSStaticFunction staticFunctions[] = {
-    { &quot;mouseScrollBy&quot;, mouseScrollByCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;continuousMouseScrollBy&quot;, continuousMouseScrollByCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;contextClick&quot;, contextClickCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;mouseDown&quot;, mouseDownCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;mouseUp&quot;, mouseUpCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;mouseMoveTo&quot;, mouseMoveToCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;beginDragWithFiles&quot;, beginDragWithFilesCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;leapForward&quot;, leapForwardCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;keyDown&quot;, keyDownCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;textZoomIn&quot;, textZoomInCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;textZoomOut&quot;, textZoomOutCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;zoomPageIn&quot;, zoomPageInCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;zoomPageOut&quot;, zoomPageOutCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;scheduleAsynchronousClick&quot;, scheduleAsynchronousClickCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;scalePageBy&quot;, scalePageByCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;scheduleAsynchronousKeyDown&quot;, scheduleAsynchronousKeyDownCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-
-    { 0, 0, 0 }
-};
-
-static JSStaticValue staticValues[] = {
-    { &quot;dragMode&quot;, getDragModeCallback, setDragModeCallback, kJSPropertyAttributeNone },
-    { 0, 0, 0, 0 }
-};
-
-static JSClassRef getClass(JSContextRef context)
-{
-    static JSClassRef eventSenderClass = 0;
-
-    if (!eventSenderClass) {
-        JSClassDefinition classDefinition = {
-                0, 0, 0, 0, 0, 0,
-                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-        classDefinition.staticFunctions = staticFunctions;
-        classDefinition.staticValues = staticValues;
-
-        eventSenderClass = JSClassCreate(&amp;classDefinition);
-    }
-
-    return eventSenderClass;
-}
-
-JSObjectRef makeEventSender(JSContextRef context, bool isTopFrame)
-{
-    if (isTopFrame) {
-        dragMode = true;
-
-        // Fly forward in time one second when the main frame loads. This will
-        // ensure that when a test begins clicking in the same location as
-        // a previous test, those clicks won't be interpreted as continuations
-        // of the previous test's click sequences.
-        timeOffset += 1000;
-
-        lastMousePositionX = lastMousePositionY = 0;
-        lastClickPositionX = lastClickPositionY = 0;
-        lastClickTimeOffset = 0;
-        lastClickButton = 0;
-        buttonCurrentlyDown = 0;
-        clickCount = 0;
-
-        endOfQueue = 0;
-        startOfQueue = 0;
-
-        currentDragSourceContext = 0;
-    }
-
-    return JSObjectMake(context, getClass(context), 0);
-}
-
-void dragBeginCallback(GtkWidget*, GdkDragContext* context, gpointer)
-{
-    currentDragSourceContext = context;
-}
-
-void dragEndCallback(GtkWidget*, GdkDragContext* context, gpointer)
-{
-    currentDragSourceContext = 0;
-}
-
-gboolean dragFailedCallback(GtkWidget*, GdkDragContext* context, gpointer)
-{
-    // Return TRUE here to disable the stupid GTK+ drag failed animation,
-    // which introduces asynchronous behavior into our drags.
-    return TRUE;
-}
</del></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkEventSenderh"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/EventSender.h (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/EventSender.h        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/EventSender.h        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,42 +0,0 @@
</span><del>-/*
- * Copyright (C) 2007 Apple Inc.  All rights reserved.
- * Copyright (C) 2009 Holger Hans Peter Freyther
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) 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 APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 APPLE OR ITS 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 EventSender_h
-#define EventSender_h
-
-typedef const struct OpaqueJSContext* JSContextRef;
-typedef struct OpaqueJSValue* JSObjectRef;
-
-JSObjectRef makeEventSender(JSContextRef context, bool isTopFrame);
-void replaySavedEvents();
-void dragBeginCallback(GtkWidget*, GdkDragContext*, gpointer);
-void dragEndCallback(GtkWidget*, GdkDragContext*, gpointer);
-gboolean dragFailedCallback(GtkWidget*, GdkDragContext*, gpointer);
-
-#endif
</del></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkGCControllerGtkcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/GCControllerGtk.cpp (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/GCControllerGtk.cpp        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/GCControllerGtk.cpp        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,50 +0,0 @@
</span><del>-/*
- * Copyright (C) 2007 Eric Seidel &lt;eric@webkit.org&gt;
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) 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 APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 APPLE OR ITS 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.
- */
-
-#include &quot;config.h&quot;
-#include &quot;GCController.h&quot;
-
-#include &quot;WebCoreSupport/DumpRenderTreeSupportGtk.h&quot;
-
-#include &lt;glib.h&gt;
-#include &lt;webkit/webkit.h&gt;
-
-void GCController::collect() const
-{
-    DumpRenderTreeSupportGtk::gcCollectJavascriptObjects();
-}
-
-void GCController::collectOnAlternateThread(bool waitUntilDone) const
-{
-    DumpRenderTreeSupportGtk::gcCollectJavascriptObjectsOnAlternateThread(waitUntilDone);
-}
-
-size_t GCController::getJSObjectCount() const
-{
-    return DumpRenderTreeSupportGtk::gcCountJavascriptObjects();
-}
</del></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkPixelDumpSupportGtkcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/PixelDumpSupportGtk.cpp (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/PixelDumpSupportGtk.cpp        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/PixelDumpSupportGtk.cpp        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,115 +0,0 @@
</span><del>-/*
- * Copyright (C) 2009 Zan Dobersek &lt;zandobersek@gmail.com&gt;
- * Copyright (C) 2010 Igalia S.L.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) 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 APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 APPLE OR ITS 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.
- */
-
-#include &quot;config.h&quot;
-
-#include &quot;DumpRenderTree.h&quot;
-#include &quot;GtkVersioning.h&quot;
-#include &quot;PixelDumpSupportCairo.h&quot;
-#include &quot;WebCoreSupport/DumpRenderTreeSupportGtk.h&quot;
-#include &lt;webkit/webkit.h&gt;
-
-static void paintOverlay(cairo_surface_t* surface)
-{
-    cairo_t* context = cairo_create(surface);
-
-    // Paint a transparent black overlay from which the repainted rectangles are then cleared.
-    // The alpha component of the overlay should have a value of 0.66, as on other ports.
-    cairo_set_source_rgba(context, 0.0, 0.0, 0.0, 0.66);
-    cairo_rectangle(context, 0, 0, cairo_image_surface_get_width(surface), cairo_image_surface_get_height(surface));
-    cairo_fill(context);
-
-    GSList* trackedRectsList = DumpRenderTreeSupportGtk::trackedRepaintRects(mainFrame);
-    for (GSList* listElement = trackedRectsList; listElement; listElement = g_slist_next(listElement)) {
-        GdkRectangle* rect = static_cast&lt;GdkRectangle*&gt;(listElement-&gt;data);
-
-        cairo_set_operator(context, CAIRO_OPERATOR_CLEAR);
-        cairo_rectangle(context, rect-&gt;x, rect-&gt;y, rect-&gt;width, rect-&gt;height);
-        cairo_fill(context);
-    }
-
-    g_slist_free_full(trackedRectsList, g_free);
-    cairo_destroy(context);
-}
-
-static void fillRepaintOverlayIntoContext(cairo_t* context, gint width, gint height)
-{
-    cairo_surface_t* overlaySurface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
-    paintOverlay(overlaySurface);
-
-    cairo_set_source_surface(context, overlaySurface, 0, 0);
-    cairo_rectangle(context, 0, 0, width, height);
-    cairo_fill(context);
-
-    cairo_surface_destroy(overlaySurface);
-}
-
-PassRefPtr&lt;BitmapContext&gt; createBitmapContextFromWebView(bool, bool, bool, bool drawSelectionRect)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    GtkWidget* viewContainer = gtk_widget_get_parent(GTK_WIDGET(view));
-    gint width, height;
-#ifdef GTK_API_VERSION_2
-    GdkPixmap* pixmap = gtk_widget_get_snapshot(viewContainer, 0);
-    gdk_pixmap_get_size(pixmap, &amp;width, &amp;height);
-#else
-    width = gtk_widget_get_allocated_width(viewContainer);
-    height = gtk_widget_get_allocated_height(viewContainer);
-#endif
-
-    while (gtk_events_pending())
-        gtk_main_iteration();
-
-    cairo_surface_t* imageSurface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
-    cairo_t* context = cairo_create(imageSurface);
-
-#ifdef GTK_API_VERSION_2
-    gdk_cairo_set_source_pixmap(context, pixmap, 0, 0);
-    cairo_paint(context);
-    g_object_unref(pixmap);
-#else
-    gtk_widget_draw(viewContainer, context);
-#endif
-
-    if (DumpRenderTreeSupportGtk::isTrackingRepaints(mainFrame))
-        fillRepaintOverlayIntoContext(context, width, height);
-
-    if (drawSelectionRect) {
-        cairo_rectangle_int_t rectangle;
-        DumpRenderTreeSupportGtk::rectangleForSelection(mainFrame, &amp;rectangle);
-
-        cairo_set_line_width(context, 1.0);
-        cairo_rectangle(context, rectangle.x, rectangle.y, rectangle.width, rectangle.height);
-        cairo_set_source_rgba(context, 1.0, 0.0, 0.0, 1.0);
-        cairo_stroke(context);
-    }
-
-    cairo_surface_destroy(imageSurface);
-    return BitmapContext::createByAdoptingBitmapAndContext(0, context);
-}
</del></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkSelfScrollingWebKitWebViewcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.cpp (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.cpp        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.cpp        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,78 +0,0 @@
</span><del>-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) 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 APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 APPLE OR ITS 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.
- */
-
-#include &quot;config.h&quot;
-#include &quot;SelfScrollingWebKitWebView.h&quot;
-
-#include &lt;webkit/webkit.h&gt;
-
-G_BEGIN_DECLS
-
-#ifdef GTK_API_VERSION_2
-static void sizeRequestMethod(GtkWidget*, GtkRequisition*);
-#else
-static void getPreferredSizeMethod(GtkWidget*, gint* minimum, gint* natural);
-#endif
-
-G_DEFINE_TYPE(SelfScrollingWebKitWebView, self_scrolling_webkit_web_view, WEBKIT_TYPE_WEB_VIEW)
-
-static void self_scrolling_webkit_web_view_class_init(SelfScrollingWebKitWebViewClass* klass)
-{
-    GtkWidgetClass* widgetClass = GTK_WIDGET_CLASS(klass);
-#ifdef GTK_API_VERSION_2
-    widgetClass-&gt;size_request = sizeRequestMethod;
-#else
-    widgetClass-&gt;get_preferred_width = getPreferredSizeMethod;
-    widgetClass-&gt;get_preferred_height = getPreferredSizeMethod;
-#endif
-}
-
-static void self_scrolling_webkit_web_view_init(SelfScrollingWebKitWebView* webView)
-{
-}
-
-GtkWidget* self_scrolling_webkit_web_view_new()
-{
-    return GTK_WIDGET(g_object_new(self_scrolling_webkit_web_view_get_type(), &quot;self-scrolling&quot;, TRUE, NULL));
-}
-
-#ifdef GTK_API_VERSION_2
-static void sizeRequestMethod(GtkWidget*, GtkRequisition* requisition)
-{
-    requisition-&gt;width = 1;
-    requisition-&gt;height = 1;
-}
-#else
-static void getPreferredSizeMethod(GtkWidget*, gint* minimum, gint* natural)
-{
-    *minimum = 1;
-    *natural = 1;
-}
-#endif
-
-G_END_DECLS
</del></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkSelfScrollingWebKitWebViewh"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.h (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.h        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.h        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,51 +0,0 @@
</span><del>-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) 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 APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 APPLE OR ITS 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 SelfScrollingWebKitWebView_h
-#define SelfScrollingWebKitWebView_h
-
-#include &lt;webkit/webkit.h&gt;
-
-G_BEGIN_DECLS
-
-typedef struct _SelfScrollingWebKitWebView      SelfScrollingWebKitWebView;
-typedef struct _SelfScrollingWebKitWebViewClass SelfScrollingWebKitWebViewClass;
-
-struct _SelfScrollingWebKitWebView {
-    WebKitWebView web_view;
-};
-
-struct _SelfScrollingWebKitWebViewClass {
-    WebKitWebViewClass parent_class;
-};
-
-GtkWidget* self_scrolling_webkit_web_view_new();
-
-G_END_DECLS
-
-#endif // SelfScrollingWebKitWebView_h
</del></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkTestRunnerGtkcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,914 +0,0 @@
</span><del>-/*
- * Copyright (C) 2007, 2012 Apple Inc. All rights reserved.
- * Copyright (C) 2007 Eric Seidel &lt;eric@webkit.org&gt;
- * Copyright (C) 2008 Nuanti Ltd.
- * Copyright (C) 2009 Jan Michael Alonzo &lt;jmalonzo@gmail.com&gt;
- * Copyright (C) 2009,2011 Collabora Ltd.
- * Copyright (C) 2010 Joone Hur &lt;joone@kldp.org&gt;
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) 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 APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 APPLE OR ITS 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.
- */
-
-#include &quot;config.h&quot;
-#include &quot;TestRunner.h&quot;
-
-#include &quot;DumpRenderTree.h&quot;
-#include &quot;WebCoreSupport/DumpRenderTreeSupportGtk.h&quot;
-#include &quot;WorkQueue.h&quot;
-#include &quot;WorkQueueItem.h&quot;
-#include &lt;JavaScriptCore/JSRetainPtr.h&gt;
-#include &lt;JavaScriptCore/JSStringRef.h&gt;
-#include &lt;cstring&gt;
-#include &lt;iostream&gt;
-#include &lt;sstream&gt;
-#include &lt;stdio.h&gt;
-#include &lt;glib.h&gt;
-#include &lt;libsoup/soup.h&gt;
-#include &lt;webkit/webkit.h&gt;
-#include &lt;wtf/gobject/GUniquePtr.h&gt;
-#include &lt;wtf/text/WTFString.h&gt;
-
-extern &quot;C&quot; {
-void webkit_web_inspector_execute_script(WebKitWebInspector* inspector, const gchar* script);
-}
-
-TestRunner::~TestRunner()
-{
-    // FIXME: implement
-}
-
-void TestRunner::addDisallowedURL(JSStringRef url)
-{
-    // FIXME: implement
-}
-
-void TestRunner::clearBackForwardList()
-{
-    WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
-    WebKitWebBackForwardList* list = webkit_web_view_get_back_forward_list(webView);
-    WebKitWebHistoryItem* item = webkit_web_back_forward_list_get_current_item(list);
-    g_object_ref(item);
-
-    // We clear the history by setting the back/forward list's capacity to 0
-    // then restoring it back and adding back the current item.
-    gint limit = webkit_web_back_forward_list_get_limit(list);
-    webkit_web_back_forward_list_set_limit(list, 0);
-    webkit_web_back_forward_list_set_limit(list, limit);
-    webkit_web_back_forward_list_add_item(list, item);
-    webkit_web_back_forward_list_go_to_item(list, item);
-    g_object_unref(item);
-}
-
-JSStringRef TestRunner::copyDecodedHostName(JSStringRef name)
-{
-    // FIXME: implement
-    return 0;
-}
-
-JSStringRef TestRunner::copyEncodedHostName(JSStringRef name)
-{
-    // FIXME: implement
-    return 0;
-}
-
-void TestRunner::dispatchPendingLoadRequests()
-{
-    // FIXME: Implement for testing fix for 6727495
-}
-
-void TestRunner::display()
-{
-    displayWebView();
-}
-
-void TestRunner::keepWebHistory()
-{
-    // FIXME: implement
-}
-
-size_t TestRunner::webHistoryItemCount()
-{
-    WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
-    WebKitWebBackForwardList* list = webkit_web_view_get_back_forward_list(webView);
-
-    if (!list)
-        return -1;
-
-    // We do not add the current page to the total count as it's not
-    // considered in DRT tests
-    return webkit_web_back_forward_list_get_back_length(list) +
-            webkit_web_back_forward_list_get_forward_length(list);
-}
-
-void TestRunner::notifyDone()
-{
-    if (m_waitToDump &amp;&amp; !topLoadingFrame &amp;&amp; !WorkQueue::shared()-&gt;count())
-        dump();
-    m_waitToDump = false;
-    waitForPolicy = false;
-}
-
-JSStringRef TestRunner::pathToLocalResource(JSContextRef context, JSStringRef url)
-{
-    GUniquePtr&lt;char&gt; urlCString(JSStringCopyUTF8CString(url));
-    if (!g_str_has_prefix(urlCString.get(), &quot;file:///tmp/LayoutTests/&quot;))
-        return JSStringRetain(url);
-
-    const char* layoutTestsSuffix = urlCString.get() + strlen(&quot;file:///tmp/&quot;);
-    GUniquePtr&lt;char&gt; testPath(g_build_filename(getTopLevelPath().data(), layoutTestsSuffix, nullptr));
-    GUniquePtr&lt;char&gt; testURI(g_filename_to_uri(testPath.get(), 0, 0));
-    return JSStringCreateWithUTF8CString(testURI.get());
-}
-
-void TestRunner::queueLoad(JSStringRef url, JSStringRef target)
-{
-    GUniquePtr&lt;gchar&gt; relativeURL(JSStringCopyUTF8CString(url));
-    SoupURI* baseURI = soup_uri_new(webkit_web_frame_get_uri(mainFrame));
-    SoupURI* absoluteURI = soup_uri_new_with_base(baseURI, relativeURL.get());
-    soup_uri_free(baseURI);
-
-    if (!absoluteURI) {
-        WorkQueue::shared()-&gt;queue(new LoadItem(url, target));
-        return;
-    }
-
-    CString absoluteURIString = soupURIToStringPreservingPassword(absoluteURI);
-    JSRetainPtr&lt;JSStringRef&gt; absoluteURL(Adopt, JSStringCreateWithUTF8CString(absoluteURIString.data()));
-    WorkQueue::shared()-&gt;queue(new LoadItem(absoluteURL.get(), target));
-    soup_uri_free(absoluteURI);
-}
-
-void TestRunner::setAcceptsEditing(bool acceptsEditing)
-{
-    WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
-    webkit_web_view_set_editable(webView, acceptsEditing);
-}
-
-void TestRunner::setAlwaysAcceptCookies(bool alwaysAcceptCookies)
-{
-    SoupSession* session = webkit_get_default_session();
-    SoupCookieJar* jar = reinterpret_cast&lt;SoupCookieJar*&gt;(soup_session_get_feature(session, SOUP_TYPE_COOKIE_JAR));
-
-    /* If the jar was not created - we create it on demand, i.e, just
-       in case we have HTTP requests - then we must create it here in
-       order to set the proper accept policy */
-    if (!jar) {
-        jar = soup_cookie_jar_new();
-        soup_session_add_feature(session, SOUP_SESSION_FEATURE(jar));
-        g_object_unref(jar);
-    }
-
-    SoupCookieJarAcceptPolicy policy;
-
-    if (alwaysAcceptCookies)
-        policy = SOUP_COOKIE_JAR_ACCEPT_ALWAYS;
-    else
-        policy = SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY;
-
-    g_object_set(G_OBJECT(jar), SOUP_COOKIE_JAR_ACCEPT_POLICY, policy, NULL);
-}
-
-void TestRunner::setCustomPolicyDelegate(bool setDelegate, bool permissive)
-{
-    // FIXME: implement
-}
-
-void TestRunner::waitForPolicyDelegate()
-{
-    waitForPolicy = true;
-    setWaitToDump(true);
-}
-
-void TestRunner::setScrollbarPolicy(JSStringRef orientation, JSStringRef policy)
-{
-    // FIXME: implement
-}
-
-void TestRunner::addOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef protocol, JSStringRef host, bool includeSubdomains)
-{
-    gchar* sourceOriginGChar = JSStringCopyUTF8CString(sourceOrigin);
-    gchar* protocolGChar = JSStringCopyUTF8CString(protocol);
-    gchar* hostGChar = JSStringCopyUTF8CString(host);
-    DumpRenderTreeSupportGtk::whiteListAccessFromOrigin(sourceOriginGChar, protocolGChar, hostGChar, includeSubdomains);
-    g_free(sourceOriginGChar);
-    g_free(protocolGChar);
-    g_free(hostGChar);
-}
-
-void TestRunner::removeOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef protocol, JSStringRef host, bool includeSubdomains)
-{
-    GUniquePtr&lt;gchar&gt; sourceOriginGChar(JSStringCopyUTF8CString(sourceOrigin));
-    GUniquePtr&lt;gchar&gt; protocolGChar(JSStringCopyUTF8CString(protocol));
-    GUniquePtr&lt;gchar&gt; hostGChar(JSStringCopyUTF8CString(host));
-    DumpRenderTreeSupportGtk::removeWhiteListAccessFromOrigin(sourceOriginGChar.get(), protocolGChar.get(), hostGChar.get(), includeSubdomains);
-}
-
-void TestRunner::setMainFrameIsFirstResponder(bool flag)
-{
-    // FIXME: implement
-}
-
-void TestRunner::setTabKeyCyclesThroughElements(bool cycles)
-{
-    WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
-    WebKitWebSettings* settings = webkit_web_view_get_settings(webView);
-    g_object_set(G_OBJECT(settings), &quot;tab-key-cycles-through-elements&quot;, cycles, NULL);
-}
-
-void TestRunner::setUseDashboardCompatibilityMode(bool flag)
-{
-    // FIXME: implement
-}
-
-static gchar* userStyleSheet = NULL;
-static gboolean userStyleSheetEnabled = TRUE;
-
-void TestRunner::setUserStyleSheetEnabled(bool flag)
-{
-    userStyleSheetEnabled = flag;
-
-    WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
-    WebKitWebSettings* settings = webkit_web_view_get_settings(webView);
-    if (flag &amp;&amp; userStyleSheet)
-        g_object_set(G_OBJECT(settings), &quot;user-stylesheet-uri&quot;, userStyleSheet, NULL);
-    else
-        g_object_set(G_OBJECT(settings), &quot;user-stylesheet-uri&quot;, &quot;&quot;, NULL);
-}
-
-void TestRunner::setUserStyleSheetLocation(JSStringRef path)
-{
-    g_free(userStyleSheet);
-    userStyleSheet = JSStringCopyUTF8CString(path);
-    if (userStyleSheetEnabled)
-        setUserStyleSheetEnabled(true);
-}
-
-void TestRunner::setValueForUser(JSContextRef context, JSValueRef nodeObject, JSStringRef value)
-{
-    DumpRenderTreeSupportGtk::setValueForUser(context, nodeObject, value);
-}
-
-void TestRunner::setViewModeMediaFeature(JSStringRef mode)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    char* viewMode = JSStringCopyUTF8CString(mode);
-
-    if (!g_strcmp0(viewMode, &quot;windowed&quot;))
-        webkit_web_view_set_view_mode(view, WEBKIT_WEB_VIEW_VIEW_MODE_WINDOWED);
-    else if (!g_strcmp0(viewMode, &quot;floating&quot;))
-        webkit_web_view_set_view_mode(view, WEBKIT_WEB_VIEW_VIEW_MODE_FLOATING);
-    else if (!g_strcmp0(viewMode, &quot;fullscreen&quot;))
-        webkit_web_view_set_view_mode(view, WEBKIT_WEB_VIEW_VIEW_MODE_FULLSCREEN);
-    else if (!g_strcmp0(viewMode, &quot;maximized&quot;))
-        webkit_web_view_set_view_mode(view, WEBKIT_WEB_VIEW_VIEW_MODE_MAXIMIZED);
-    else if (!g_strcmp0(viewMode, &quot;minimized&quot;))
-        webkit_web_view_set_view_mode(view, WEBKIT_WEB_VIEW_VIEW_MODE_MINIMIZED);
-
-    g_free(viewMode);
-}
-
-void TestRunner::setWindowIsKey(bool windowIsKey)
-{
-    // FIXME: implement
-}
-
-static gboolean waitToDumpWatchdogFired(void*)
-{
-    setWaitToDumpWatchdog(0);
-    gTestRunner-&gt;waitToDumpWatchdogTimerFired();
-    return FALSE;
-}
-
-void TestRunner::setWaitToDump(bool waitUntilDone)
-{
-    static const int timeoutSeconds = 30;
-
-    m_waitToDump = waitUntilDone;
-    if (m_waitToDump &amp;&amp; shouldSetWaitToDumpWatchdog()) {
-        guint id = g_timeout_add_seconds(timeoutSeconds, waitToDumpWatchdogFired, 0);
-        g_source_set_name_by_id(id, &quot;[WebKit] waitToDumpWatchdogFired&quot;);
-        setWaitToDumpWatchdog(id);
-    }
-}
-
-int TestRunner::windowCount()
-{
-    // +1 -&gt; including the main view
-    return g_slist_length(webViewList) + 1;
-}
-
-void TestRunner::setPrivateBrowsingEnabled(bool flag)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    WebKitWebSettings* settings = webkit_web_view_get_settings(view);
-    g_object_set(G_OBJECT(settings), &quot;enable-private-browsing&quot;, flag, NULL);
-}
-
-void TestRunner::setJavaScriptCanAccessClipboard(bool flag)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    WebKitWebSettings* settings = webkit_web_view_get_settings(view);
-    g_object_set(G_OBJECT(settings), &quot;javascript-can-access-clipboard&quot;, flag, NULL);
-}
-
-void TestRunner::setXSSAuditorEnabled(bool flag)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    WebKitWebSettings* settings = webkit_web_view_get_settings(view);
-    g_object_set(G_OBJECT(settings), &quot;enable-xss-auditor&quot;, flag, NULL);
-}
-
-void TestRunner::setSpatialNavigationEnabled(bool flag)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    WebKitWebSettings* settings = webkit_web_view_get_settings(view);
-    g_object_set(G_OBJECT(settings), &quot;enable-spatial-navigation&quot;, flag, NULL);
-}
-
-void TestRunner::setAllowUniversalAccessFromFileURLs(bool flag)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    WebKitWebSettings* settings = webkit_web_view_get_settings(view);
-    g_object_set(G_OBJECT(settings), &quot;enable-universal-access-from-file-uris&quot;, flag, NULL);
-}
-
-void TestRunner::setAllowFileAccessFromFileURLs(bool flag)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    WebKitWebSettings* settings = webkit_web_view_get_settings(view);
-    g_object_set(G_OBJECT(settings), &quot;enable-file-access-from-file-uris&quot;, flag, NULL);
-}
-
-void TestRunner::setAuthorAndUserStylesEnabled(bool flag)
-{
-    // FIXME: implement
-}
-
-void TestRunner::setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma)
-{
-    // FIXME: Implement for DeviceOrientation layout tests.
-    // See https://bugs.webkit.org/show_bug.cgi?id=30335.
-}
-
-void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool, double, bool, double, bool, double, bool, double)
-{
-    WebKitWebView* view = WEBKIT_WEB_VIEW(g_slist_nth_data(webViewList, 0));
-    if (!view)
-        view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    DumpRenderTreeSupportGtk::setMockGeolocationPosition(view, latitude, longitude, accuracy);
-}
-
-void TestRunner::setMockGeolocationPositionUnavailableError(JSStringRef message)
-{
-    WebKitWebView* view = WEBKIT_WEB_VIEW(g_slist_nth_data(webViewList, 0));
-    if (!view)
-        view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    GUniquePtr&lt;gchar&gt; cMessage(JSStringCopyUTF8CString(message));
-    DumpRenderTreeSupportGtk::setMockGeolocationPositionUnavailableError(view, cMessage.get());
-}
-
-void TestRunner::setGeolocationPermission(bool allow)
-{
-    setGeolocationPermissionCommon(allow);
-    WebKitWebView* view = WEBKIT_WEB_VIEW(g_slist_nth_data(webViewList, 0));
-    if (!view)
-        view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    DumpRenderTreeSupportGtk::setMockGeolocationPermission(view, allow);
-}
-
-int TestRunner::numberOfPendingGeolocationPermissionRequests()
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    if (!view)
-        view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    return DumpRenderTreeSupportGtk::numberOfPendingGeolocationPermissionRequests(view);
-}
-
-void TestRunner::addMockSpeechInputResult(JSStringRef result, double confidence, JSStringRef language)
-{
-    // FIXME: Implement for speech input layout tests.
-    // See https://bugs.webkit.org/show_bug.cgi?id=39485.
-}
-
-void TestRunner::setMockSpeechInputDumpRect(bool flag)
-{
-    // FIXME: Implement for speech input layout tests.
-    // See https://bugs.webkit.org/show_bug.cgi?id=39485.
-}
-
-void TestRunner::startSpeechInput(JSContextRef inputElement)
-{
-    // FIXME: Implement for speech input layout tests.
-    // See https://bugs.webkit.org/show_bug.cgi?id=39485.
-}
-
-void TestRunner::setIconDatabaseEnabled(bool enabled)
-{
-    WebKitIconDatabase* database = webkit_get_icon_database();
-    if (enabled) {
-        GUniquePtr&lt;gchar&gt; iconDatabasePath(g_build_filename(g_get_tmp_dir(), &quot;DumpRenderTree&quot;, &quot;icondatabase&quot;, nullptr));
-        webkit_icon_database_set_path(database, iconDatabasePath.get());
-    } else
-        webkit_icon_database_set_path(database, 0);
-}
-
-void TestRunner::setPopupBlockingEnabled(bool flag)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    WebKitWebSettings* settings = webkit_web_view_get_settings(view);
-    g_object_set(G_OBJECT(settings), &quot;javascript-can-open-windows-automatically&quot;, !flag, NULL);
-
-}
-
-void TestRunner::setPluginsEnabled(bool flag)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    WebKitWebSettings* settings = webkit_web_view_get_settings(view);
-    g_object_set(G_OBJECT(settings), &quot;enable-plugins&quot;, flag, NULL);
-}
-
-void TestRunner::execCommand(JSStringRef name, JSStringRef value)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    gchar* cName = JSStringCopyUTF8CString(name);
-    gchar* cValue = JSStringCopyUTF8CString(value);
-    DumpRenderTreeSupportGtk::executeCoreCommandByName(view, cName, cValue);
-    g_free(cName);
-    g_free(cValue);
-}
-
-bool TestRunner::findString(JSContextRef context, JSStringRef target, JSObjectRef optionsArray)
-{
-    WebKitFindOptions findOptions = 0;
-    WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(webView);
-
-    JSRetainPtr&lt;JSStringRef&gt; lengthPropertyName(Adopt, JSStringCreateWithUTF8CString(&quot;length&quot;));
-    JSValueRef lengthValue = JSObjectGetProperty(context, optionsArray, lengthPropertyName.get(), 0); 
-    if (!JSValueIsNumber(context, lengthValue))
-        return false;
-
-    GUniquePtr&lt;gchar&gt; targetString(JSStringCopyUTF8CString(target));
-
-    size_t length = static_cast&lt;size_t&gt;(JSValueToNumber(context, lengthValue, 0));
-    for (size_t i = 0; i &lt; length; ++i) {
-        JSValueRef value = JSObjectGetPropertyAtIndex(context, optionsArray, i, 0); 
-        if (!JSValueIsString(context, value))
-            continue;
-    
-        JSRetainPtr&lt;JSStringRef&gt; optionName(Adopt, JSValueToStringCopy(context, value, 0));
-
-        if (JSStringIsEqualToUTF8CString(optionName.get(), &quot;CaseInsensitive&quot;))
-            findOptions |= WebKit::WebFindOptionsCaseInsensitive;
-        else if (JSStringIsEqualToUTF8CString(optionName.get(), &quot;AtWordStarts&quot;))
-            findOptions |= WebKit::WebFindOptionsAtWordStarts;
-        else if (JSStringIsEqualToUTF8CString(optionName.get(), &quot;TreatMedialCapitalAsWordStart&quot;))
-            findOptions |= WebKit::WebFindOptionsTreatMedialCapitalAsWordStart;
-        else if (JSStringIsEqualToUTF8CString(optionName.get(), &quot;Backwards&quot;))
-            findOptions |= WebKit::WebFindOptionsBackwards;
-        else if (JSStringIsEqualToUTF8CString(optionName.get(), &quot;WrapAround&quot;))
-            findOptions |= WebKit::WebFindOptionsWrapAround;
-        else if (JSStringIsEqualToUTF8CString(optionName.get(), &quot;StartInSelection&quot;))
-            findOptions |= WebKit::WebFindOptionsStartInSelection;
-    }   
-
-    return DumpRenderTreeSupportGtk::findString(webView, targetString.get(), findOptions); 
-}
-
-bool TestRunner::isCommandEnabled(JSStringRef name)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    gchar* cName = JSStringCopyUTF8CString(name);
-    bool result = DumpRenderTreeSupportGtk::isCommandEnabled(view, cName);
-    g_free(cName);
-    return result;
-}
-
-void TestRunner::setCacheModel(int cacheModel)
-{
-    // These constants are derived from the Mac cache model enum in Source/WebKit/mac/WebView/WebPreferences.h.
-    switch (cacheModel) {
-    case 0:
-        webkit_set_cache_model(WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER);
-        break;
-    case 1:
-        webkit_set_cache_model(WEBKIT_CACHE_MODEL_DOCUMENT_BROWSER);
-        break;
-    case 2:
-        webkit_set_cache_model(WEBKIT_CACHE_MODEL_WEB_BROWSER);
-        break;
-    default:
-        ASSERT_NOT_REACHED();
-    }
-}
-
-void TestRunner::setPersistentUserStyleSheetLocation(JSStringRef jsURL)
-{
-    // FIXME: implement
-}
-
-void TestRunner::clearPersistentUserStyleSheet()
-{
-    // FIXME: implement
-}
-
-void TestRunner::clearAllApplicationCaches()
-{
-    // FIXME: Implement to support application cache quotas.
-}
-
-void TestRunner::clearApplicationCacheForOrigin(OpaqueJSString*)
-{
-    // FIXME: Implement to support deleting all application caches for an origin.
-}
-
-long long TestRunner::localStorageDiskUsageForOrigin(JSStringRef originIdentifier)
-{
-    // FIXME: Implement to support getting disk usage in bytes for an origin.
-    return 0;
-}
-
-JSValueRef TestRunner::originsWithApplicationCache(JSContextRef context)
-{
-    // FIXME: Implement to get origins that contain application caches.
-    return JSValueMakeUndefined(context);
-}
-
-long long TestRunner::applicationCacheDiskUsageForOrigin(JSStringRef name)
-{
-    // FIXME: implement
-    return 0;
-}
-
-void TestRunner::clearAllDatabases()
-{
-    webkit_remove_all_web_databases();
-}

-void TestRunner::setDatabaseQuota(unsigned long long quota)
-{
-    WebKitSecurityOrigin* origin = webkit_web_frame_get_security_origin(mainFrame);
-    webkit_security_origin_set_web_database_quota(origin, quota);
-}
-
-JSValueRef TestRunner::originsWithLocalStorage(JSContextRef context)
-{
-    // FIXME: implement
-    return JSValueMakeUndefined(context);
-}
-
-void TestRunner::deleteAllLocalStorage()
-{
-        // FIXME: implement
-}
-
-void TestRunner::deleteLocalStorageForOrigin(JSStringRef originIdentifier)
-{
-        // FIXME: implement
-}
-
-void TestRunner::observeStorageTrackerNotifications(unsigned number)
-{
-        // FIXME: implement
-}
-
-void TestRunner::syncLocalStorage()
-{
-    // FIXME: implement
-}
-
-void TestRunner::setDomainRelaxationForbiddenForURLScheme(bool forbidden, JSStringRef scheme)
-{
-    GUniquePtr&lt;gchar&gt; urlScheme(JSStringCopyUTF8CString(scheme));
-    DumpRenderTreeSupportGtk::setDomainRelaxationForbiddenForURLScheme(forbidden, urlScheme.get());
-}
-
-void TestRunner::goBack()
-{
-    WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
-    webkit_web_view_go_back(webView);
-}
-
-void TestRunner::setDefersLoading(bool defers)
-{
-    WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
-    DumpRenderTreeSupportGtk::setDefersLoading(webView, defers);
-}
-
-void TestRunner::setAppCacheMaximumSize(unsigned long long size)
-{
-    webkit_application_cache_set_maximum_size(size);
-}
-
-static gboolean booleanFromValue(gchar* value)
-{
-    return !g_ascii_strcasecmp(value, &quot;true&quot;) || !g_ascii_strcasecmp(value, &quot;1&quot;);
-}
-
-void TestRunner::overridePreference(JSStringRef key, JSStringRef value)
-{
-    GUniquePtr&lt;gchar&gt; originalName(JSStringCopyUTF8CString(key));
-    GUniquePtr&lt;gchar&gt; valueAsString(JSStringCopyUTF8CString(value));
-
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    // This transformation could be handled by a hash table (and it once was), but
-    // having it prominent, makes it easier for people from other ports to keep the
-    // list up to date.
-    const gchar* propertyName = 0;
-    if (g_str_equal(originalName.get(), &quot;WebKitJavaScriptEnabled&quot;))
-        propertyName = &quot;enable-scripts&quot;;
-    else if (g_str_equal(originalName.get(), &quot;WebKitDefaultFontSize&quot;))
-        propertyName = &quot;default-font-size&quot;;
-    else if (g_str_equal(originalName.get(), &quot;WebKitEnableCaretBrowsing&quot;))
-        propertyName = &quot;enable-caret-browsing&quot;;
-    else if (g_str_equal(originalName.get(), &quot;WebKitUsesPageCachePreferenceKey&quot;))
-        propertyName = &quot;enable-page-cache&quot;;
-    else if (g_str_equal(originalName.get(), &quot;WebKitPluginsEnabled&quot;))
-        propertyName = &quot;enable-plugins&quot;;
-    else if (g_str_equal(originalName.get(), &quot;WebKitHyperlinkAuditingEnabled&quot;))
-        propertyName = &quot;enable-hyperlink-auditing&quot;;
-    else if (g_str_equal(originalName.get(), &quot;WebKitWebGLEnabled&quot;))
-        propertyName = &quot;enable-webgl&quot;;
-    else if (g_str_equal(originalName.get(), &quot;WebKitWebAudioEnabled&quot;))
-        propertyName = &quot;enable-webaudio&quot;;
-    else if (g_str_equal(originalName.get(), &quot;WebKitDisplayImagesKey&quot;))
-        propertyName = &quot;auto-load-images&quot;;
-    else if (g_str_equal(originalName.get(), &quot;WebKitShouldRespectImageOrientation&quot;))
-        propertyName = &quot;respect-image-orientation&quot;;
-    else if (g_str_equal(originalName.get(), &quot;WebKitMediaSourceEnabled&quot;))
-        propertyName = &quot;enable-mediasource&quot;;
-    else if (g_str_equal(originalName.get(), &quot;WebKitTabToLinksPreferenceKey&quot;)) {
-        DumpRenderTreeSupportGtk::setLinksIncludedInFocusChain(booleanFromValue(valueAsString.get()));
-        return;
-    } else if (g_str_equal(originalName.get(), &quot;WebKitPageCacheSupportsPluginsPreferenceKey&quot;)) {
-        DumpRenderTreeSupportGtk::setPageCacheSupportsPlugins(webkit_web_frame_get_web_view(mainFrame), booleanFromValue(valueAsString.get()));
-        return;
-    } else if (g_str_equal(originalName.get(), &quot;WebKitCSSGridLayoutEnabled&quot;)) {
-        DumpRenderTreeSupportGtk::setCSSGridLayoutEnabled(webkit_web_frame_get_web_view(mainFrame), booleanFromValue(valueAsString.get()));
-        return;
-    } else if (g_str_equal(originalName.get(), &quot;WebKitCSSRegionsEnabled&quot;)) {
-        DumpRenderTreeSupportGtk::setCSSRegionsEnabled(webkit_web_frame_get_web_view(mainFrame), booleanFromValue(valueAsString.get()));
-        return;
-    } else {
-        fprintf(stderr, &quot;TestRunner::overridePreference tried to override &quot;
-                &quot;unknown preference '%s'.\n&quot;, originalName.get());
-        return;
-    }
-
-    WebKitWebSettings* settings = webkit_web_view_get_settings(view);
-    GParamSpec* pspec = g_object_class_find_property(G_OBJECT_CLASS(
-        WEBKIT_WEB_SETTINGS_GET_CLASS(settings)), propertyName);
-    GValue currentPropertyValue = { 0, { { 0 } } };
-    g_value_init(&amp;currentPropertyValue, pspec-&gt;value_type);
-
-    if (G_VALUE_HOLDS_STRING(&amp;currentPropertyValue))
-        g_object_set(settings, propertyName, valueAsString.get(), NULL);
-    else if (G_VALUE_HOLDS_BOOLEAN(&amp;currentPropertyValue))
-        g_object_set(G_OBJECT(settings), propertyName, booleanFromValue(valueAsString.get()), NULL);
-    else if (G_VALUE_HOLDS_INT(&amp;currentPropertyValue))
-        g_object_set(G_OBJECT(settings), propertyName, atoi(valueAsString.get()), NULL);
-    else if (G_VALUE_HOLDS_FLOAT(&amp;currentPropertyValue)) {
-        gfloat newValue = g_ascii_strtod(valueAsString.get(), 0);
-        g_object_set(G_OBJECT(settings), propertyName, newValue, NULL);
-    } else
-        fprintf(stderr, &quot;TestRunner::overridePreference failed to override &quot;
-                &quot;preference '%s'.\n&quot;, originalName.get());
-}
-
-void TestRunner::addUserScript(JSStringRef source, bool runAtStart, bool allFrames)
-{
-    GUniquePtr&lt;gchar&gt; sourceCode(JSStringCopyUTF8CString(source));
-    DumpRenderTreeSupportGtk::addUserScript(mainFrame, sourceCode.get(), runAtStart, allFrames);
-}
-
-void TestRunner::addUserStyleSheet(JSStringRef source, bool allFrames)
-{
-    GUniquePtr&lt;gchar&gt; sourceCode(JSStringCopyUTF8CString(source));
-    DumpRenderTreeSupportGtk::addUserStyleSheet(mainFrame, sourceCode.get(), allFrames);
-    // FIXME: needs more investigation why userscripts/user-style-top-frame-only.html fails when allFrames is false.
-
-}
-
-void TestRunner::setDeveloperExtrasEnabled(bool enabled)
-{
-    WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
-    WebKitWebSettings* webSettings = webkit_web_view_get_settings(webView);
-
-    g_object_set(webSettings, &quot;enable-developer-extras&quot;, enabled, NULL);
-}
-
-void TestRunner::showWebInspector()
-{
-    WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
-    WebKitWebInspector* inspector = webkit_web_view_get_inspector(webView);
-
-    webkit_web_inspector_show(inspector);
-}
-
-void TestRunner::closeWebInspector()
-{
-    WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
-    WebKitWebInspector* inspector = webkit_web_view_get_inspector(webView);
-
-    webkit_web_inspector_close(inspector);
-}
-
-void TestRunner::evaluateInWebInspector(JSStringRef script)
-{
-    WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
-    WebKitWebInspector* inspector = webkit_web_view_get_inspector(webView);
-    char* scriptString = JSStringCopyUTF8CString(script);
-
-    webkit_web_inspector_execute_script(inspector, scriptString);
-    g_free(scriptString);
-}
-
-void TestRunner::evaluateScriptInIsolatedWorldAndReturnValue(unsigned worldID, JSObjectRef globalObject, JSStringRef script)
-{
-    // FIXME: Implement this.
-}
-
-void TestRunner::evaluateScriptInIsolatedWorld(unsigned worldID, JSObjectRef globalObject, JSStringRef script)
-{
-    // FIXME: Implement this.
-}
-
-void TestRunner::removeAllVisitedLinks()
-{
-    // FIXME: Implement this.
-}
-
-bool TestRunner::callShouldCloseOnWebView()
-{
-    return DumpRenderTreeSupportGtk::shouldClose(mainFrame);
-}
-
-void TestRunner::apiTestNewWindowDataLoadBaseURL(JSStringRef utf8Data, JSStringRef baseURL)
-{
-
-}
-
-void TestRunner::apiTestGoToCurrentBackForwardItem()
-{
-
-}
-
-void TestRunner::setWebViewEditable(bool)
-{
-}
-
-void TestRunner::authenticateSession(JSStringRef, JSStringRef, JSStringRef)
-{
-}
-
-void TestRunner::abortModal()
-{
-}
-
-void TestRunner::setSerializeHTTPLoads(bool serialize)
-{
-    DumpRenderTreeSupportGtk::setSerializeHTTPLoads(serialize);
-}
-
-void TestRunner::setTextDirection(JSStringRef direction)
-{
-    GUniquePtr&lt;gchar&gt; writingDirection(JSStringCopyUTF8CString(direction));
-
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    if (g_str_equal(writingDirection.get(), &quot;auto&quot;))
-        gtk_widget_set_direction(GTK_WIDGET(view), GTK_TEXT_DIR_NONE);
-    else if (g_str_equal(writingDirection.get(), &quot;ltr&quot;))
-        gtk_widget_set_direction(GTK_WIDGET(view), GTK_TEXT_DIR_LTR);
-    else if (g_str_equal(writingDirection.get(), &quot;rtl&quot;))
-        gtk_widget_set_direction(GTK_WIDGET(view), GTK_TEXT_DIR_RTL);
-    else
-        fprintf(stderr, &quot;TestRunner::setTextDirection called with unknown direction: '%s'.\n&quot;, writingDirection.get());
-}
-
-void TestRunner::addChromeInputField()
-{
-}
-
-void TestRunner::removeChromeInputField()
-{
-}
-
-void TestRunner::focusWebView()
-{
-}
-
-void TestRunner::setBackingScaleFactor(double)
-{
-}
-
-void TestRunner::grantWebNotificationPermission(JSStringRef origin)
-{
-}
-
-void TestRunner::denyWebNotificationPermission(JSStringRef jsOrigin)
-{
-}
-
-void TestRunner::removeAllWebNotificationPermissions()
-{
-}
-
-void TestRunner::simulateWebNotificationClick(JSValueRef jsNotification)
-{
-}
-
-void TestRunner::simulateLegacyWebNotificationClick(JSStringRef title)
-{
-}
-
-void TestRunner::resetPageVisibility()
-{
-    WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
-    DumpRenderTreeSupportGtk::setPageVisibility(webView, WebCore::PageVisibilityStateVisible, true);
-}
-
-void TestRunner::setPageVisibility(const char* visibility)
-{
-    WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
-    String visibilityString(visibility);
-    WebCore::PageVisibilityState visibilityState = WebCore::PageVisibilityStateVisible;
-
-    if (visibilityString == &quot;visible&quot;)
-        visibilityState = WebCore::PageVisibilityStateVisible;
-    else if (visibilityString == &quot;hidden&quot;)
-        visibilityState = WebCore::PageVisibilityStateHidden;
-    else
-        return;
-
-    DumpRenderTreeSupportGtk::setPageVisibility(webView, visibilityState, false);
-}
-
-void TestRunner::setAutomaticLinkDetectionEnabled(bool)
-{
-    // FIXME: Implement this.
-}
-
-void TestRunner::setStorageDatabaseIdleInterval(double)
-{
-    // FIXME: Implement this.
-}
-
-void TestRunner::closeIdleLocalStorageDatabases()
-{
-}
</del></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkTextInputControllercpp"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/TextInputController.cpp (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/TextInputController.cpp        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/TextInputController.cpp        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,215 +0,0 @@
</span><del>-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) 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 APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 APPLE OR ITS 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.
- */
-
-#include &quot;config.h&quot;
-#include &quot;TextInputController.h&quot;
-
-#include &quot;DumpRenderTree.h&quot;
-#include &quot;WebCoreSupport/DumpRenderTreeSupportGtk.h&quot;
-#include &lt;GUniquePtrGtk.h&gt;
-#include &lt;JavaScriptCore/JSObjectRef.h&gt;
-#include &lt;JavaScriptCore/JSRetainPtr.h&gt;
-#include &lt;JavaScriptCore/JSStringRef.h&gt;
-#include &lt;cstring&gt;
-#include &lt;webkit/webkit.h&gt;
-
-static JSValueRef setMarkedTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-    if (argumentCount &lt; 3)
-        return JSValueMakeUndefined(context);
-
-    JSStringRef string = JSValueToStringCopy(context, arguments[0], exception);
-    ASSERT(!exception || !*exception);
-
-    size_t bufferSize = JSStringGetMaximumUTF8CStringSize(string);
-    GUniquePtr&lt;gchar&gt; stringBuffer(static_cast&lt;gchar*&gt;(g_malloc(bufferSize)));
-    JSStringGetUTF8CString(string, stringBuffer.get(), bufferSize);
-    JSStringRelease(string);
-
-    int start = static_cast&lt;int&gt;(JSValueToNumber(context, arguments[1], exception));
-    ASSERT(!exception || !*exception);
-
-    int length = static_cast&lt;int&gt;(JSValueToNumber(context, arguments[2], exception));
-    ASSERT(!exception || !*exception);
-
-    DumpRenderTreeSupportGtk::setComposition(view, stringBuffer.get(), start, length);
-    return JSValueMakeUndefined(context);
-}
-
-static JSValueRef hasMarkedTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-    return JSValueMakeBoolean(context, DumpRenderTreeSupportGtk::hasComposition(view));
-}
-
-static JSValueRef markedRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    int start, length;
-    if (!DumpRenderTreeSupportGtk::compositionRange(view, &amp;start, &amp;length))
-        return JSValueMakeUndefined(context);
-
-    JSValueRef arrayValues[2];
-    arrayValues[0] = JSValueMakeNumber(context, start);
-    arrayValues[1] = JSValueMakeNumber(context, length);
-    JSObjectRef arrayObject = JSObjectMakeArray(context, 2, arrayValues, exception);
-    ASSERT(!exception || !*exception);
-    return arrayObject;
-}
-
-static JSValueRef insertTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    if (argumentCount &lt; 1)
-        return JSValueMakeUndefined(context);
-
-    JSStringRef string = JSValueToStringCopy(context, arguments[0], exception);
-    ASSERT(!exception || !*exception);
-
-    size_t bufferSize = JSStringGetMaximumUTF8CStringSize(string);
-    GUniquePtr&lt;gchar&gt; stringBuffer(static_cast&lt;gchar*&gt;(g_malloc(bufferSize)));
-    JSStringGetUTF8CString(string, stringBuffer.get(), bufferSize);
-    JSStringRelease(string);
-
-    DumpRenderTreeSupportGtk::confirmComposition(view, stringBuffer.get());
-    return JSValueMakeUndefined(context);
-}
-
-static JSValueRef unmarkTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    DumpRenderTreeSupportGtk::confirmComposition(view, 0);
-    return JSValueMakeUndefined(context);
-}
-
-static JSValueRef firstRectForCharacterRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-    if (argumentCount &lt; 2)
-        return JSValueMakeUndefined(context);
-
-    int location = static_cast&lt;int&gt;(JSValueToNumber(context, arguments[0], exception));
-    ASSERT(!exception || !*exception);
-
-    int length = static_cast&lt;int&gt;(JSValueToNumber(context, arguments[1], exception));
-    ASSERT(!exception || !*exception);
-
-    cairo_rectangle_int_t rect;
-    if (!DumpRenderTreeSupportGtk::firstRectForCharacterRange(view, location, length, &amp;rect))
-        return JSValueMakeUndefined(context);
-
-    JSValueRef arrayValues[4];
-    arrayValues[0] = JSValueMakeNumber(context, rect.x);
-    arrayValues[1] = JSValueMakeNumber(context, rect.y);
-    arrayValues[2] = JSValueMakeNumber(context, rect.width);
-    arrayValues[3] = JSValueMakeNumber(context, rect.height);
-    JSObjectRef arrayObject = JSObjectMakeArray(context, 4, arrayValues, exception);
-    ASSERT(!exception || !*exception);
-
-    return arrayObject;
-}
-
-static JSValueRef selectedRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-
-    int start, length;
-    if (!DumpRenderTreeSupportGtk::selectedRange(view, &amp;start, &amp;length))
-        return JSValueMakeUndefined(context);
-
-    JSValueRef arrayValues[2];
-    arrayValues[0] = JSValueMakeNumber(context, start);
-    arrayValues[1] = JSValueMakeNumber(context, length);
-    JSObjectRef arrayObject = JSObjectMakeArray(context, 2, arrayValues, exception);
-    ASSERT(!exception || !*exception);
-
-    return arrayObject;
-}
-
-static JSValueRef doCommandCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-    WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
-    ASSERT(view);
-    if (argumentCount &lt; 1)
-        return JSValueMakeUndefined(context);
-
-    JSStringRef string = JSValueToStringCopy(context, arguments[0], exception);
-    ASSERT(!exception || !*exception);
-
-    size_t bufferSize = JSStringGetMaximumUTF8CStringSize(string);
-    GUniquePtr&lt;gchar&gt; stringBuffer(static_cast&lt;gchar*&gt;(g_malloc(bufferSize)));
-    JSStringGetUTF8CString(string, stringBuffer.get(), bufferSize);
-    JSStringRelease(string);
-
-    DumpRenderTreeSupportGtk::doCommand(view, stringBuffer.get());
-    return JSValueMakeUndefined(context);
-}
-
-static JSStaticFunction staticFunctions[] = {
-    { &quot;setMarkedText&quot;, setMarkedTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;hasMarkedText&quot;, hasMarkedTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;markedRange&quot;, markedRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;insertText&quot;, insertTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;unmarkText&quot;, unmarkTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;firstRectForCharacterRange&quot;, firstRectForCharacterRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;selectedRange&quot;, selectedRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { &quot;doCommand&quot;, doCommandCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-    { 0, 0, 0 }
-};
-
-static JSClassRef getClass(JSContextRef context)
-{
-    static JSClassRef textInputControllerClass = 0;
-
-    if (!textInputControllerClass) {
-        JSClassDefinition classDefinition = {
-                0, 0, 0, 0, 0, 0,
-                0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
-        classDefinition.staticFunctions = staticFunctions;
-
-        textInputControllerClass = JSClassCreate(&amp;classDefinition);
-    }
-
-    return textInputControllerClass;
-}
-
-JSObjectRef makeTextInputController(JSContextRef context)
-{
-    return JSObjectMake(context, getClass(context), 0);
-}
</del></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkTextInputControllerh"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/TextInputController.h (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/TextInputController.h        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/TextInputController.h        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,37 +0,0 @@
</span><del>-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  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.
- * 3.  Neither the name of Apple Inc. (&quot;Apple&quot;) 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 APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; 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 APPLE OR ITS 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 TextInputController_h
-#define TextInputController_h
-
-typedef const struct OpaqueJSContext* JSContextRef;
-typedef struct OpaqueJSValue* JSObjectRef;
-
-JSObjectRef makeTextInputController(JSContextRef);
-
-#endif
</del></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkWorkQueueItemGtkcpp"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,102 +0,0 @@
</span><del>-/*
- * Copyright (C) 2007 Alp Toker &lt;alp@atoker.com&gt;
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB.  If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include &quot;config.h&quot;
-#include &quot;WorkQueueItem.h&quot;
-
-#include &quot;DumpRenderTree.h&quot;
-
-#include &lt;JavaScriptCore/JSStringRef.h&gt;
-#include &lt;string.h&gt;
-#include &lt;webkit/webkit.h&gt;
-#include &lt;wtf/gobject/GUniquePtr.h&gt;
-
-// Returns a newly allocated UTF-8 character buffer which must be freed with g_free()
-gchar* JSStringCopyUTF8CString(JSStringRef jsString)
-{
-    size_t dataSize = JSStringGetMaximumUTF8CStringSize(jsString);
-    gchar* utf8 = (gchar*)g_malloc(dataSize);
-    JSStringGetUTF8CString(jsString, utf8, dataSize);
-
-    return utf8;
-}
-
-bool LoadItem::invoke() const
-{
-    gchar* targetString = JSStringCopyUTF8CString(m_target.get());
-
-    WebKitWebFrame* targetFrame;
-    if (!strlen(targetString))
-        targetFrame = mainFrame;
-    else
-        targetFrame = webkit_web_frame_find_frame(mainFrame, targetString);
-    g_free(targetString);
-
-    gchar* urlString = JSStringCopyUTF8CString(m_url.get());
-    WebKitNetworkRequest* request = webkit_network_request_new(urlString);
-    g_free(urlString);
-    webkit_web_frame_load_request(targetFrame, request);
-    g_object_unref(request);
-
-    return true;
-}
-
-bool LoadHTMLStringItem::invoke() const
-{
-    GUniquePtr&lt;gchar&gt; content(JSStringCopyUTF8CString(m_content.get()));
-    GUniquePtr&lt;gchar&gt; baseURL(JSStringCopyUTF8CString(m_baseURL.get()));
-
-    if (m_unreachableURL) {
-        GUniquePtr&lt;gchar&gt; unreachableURL(JSStringCopyUTF8CString(m_unreachableURL.get()));
-        webkit_web_frame_load_alternate_string(mainFrame, content.get(), baseURL.get(), unreachableURL.get());
-        return true;
-    }
-    webkit_web_frame_load_string(mainFrame, content.get(), 0, 0, baseURL.get());
-    return true;
-}
-
-bool ReloadItem::invoke() const
-{
-    webkit_web_frame_reload(mainFrame);
-    return true;
-}
-
-bool ScriptItem::invoke() const
-{
-    WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
-    gchar* scriptString = JSStringCopyUTF8CString(m_script.get());
-    webkit_web_view_execute_script(webView, scriptString);
-    g_free(scriptString);
-    return true;
-}
-
-bool BackForwardItem::invoke() const
-{
-    WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
-    if (m_howFar == 1)
-        webkit_web_view_go_forward(webView);
-    else if (m_howFar == -1)
-        webkit_web_view_go_back(webView);
-    else {
-        WebKitWebBackForwardList* webBackForwardList = webkit_web_view_get_back_forward_list(webView);
-        WebKitWebHistoryItem* item = webkit_web_back_forward_list_get_nth_item(webBackForwardList, m_howFar);
-        webkit_web_view_go_to_back_forward_item(webView, item);
-    }
-    return true;
-}
</del></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkfontsAHEM____TTF"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/fonts/AHEM____.TTF (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/fonts/AHEM____.TTF        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/fonts/AHEM____.TTF        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,29 +0,0 @@
</span><del>- \x800OS/2xPJ\x8D8`cmap\xD6Flrgasp        0\xB0glyfI\xB3t\xDA \xE0dheadÖ¢N\xBC6hhea
-\xF4$hmtx\xB9 }\x98\xD4loca u'&quot;&amp;D\xECmaxp\xF8         name~\x8C\xB8(0hpost\x8D\xD0\x8A.\x98BQg_&lt;\xF5        \xE8\xB3o_Y\xC0-\xABI\xFF8\xE8  \xFF8\xE8\xE8\xF5\xF5\xE8\x90\xBC\x8A\x8F\xBC\x8A\xC52        \x80\xAF HW3C@ \xF0 \xFF8 \xC8 @   \xE8}\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8L&amp;
-        
- - !&quot;#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\xDB\x81\x82\x83\x84\xDD\x85\x86\x87\x88\xE3\x89\x8A\xEA\x8B\x8C\xE8\x8D\xEB\xEC\x8E\x8F\xE4\xE6\xE5\xD4\xE9\x90\x91\xD3\x92\x93\x94\x95\x96\xE7\xD1\xED\xD2\x97\x98\xDE\x9A\x9B\x9C\xCE\xCF\xD5\xD6\xD8\xD9\x9D\x9E\x9F\xEE\xA0\xD0\xE2\xA1\xE0\xE1\xDC\xA2\xD7\xDA\xDF\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC&amp;N@&amp;~\xFF1Sx\x92\xC7\xC9\xDD\x94\xA9\xBC\xC0     &quot; &amp; 0 : D!&quot;!&amp;&quot;&quot;&quot;&quot;&quot;&quot;&quot;+&quot;H&quot;`&quot;e&quot;\xF2%\xCA\xF0\xFF\xFF (\xA01Rx\x92\xC6\xC9\xD8\x94\xA9\xBC\xC0       &amp; 0 9 D!&quot;!&amp;&quot;&quot;&quot;&quot;&quot;&quot;&quot;+&quot;H&quot;`&quot;d&quot;\xF2%\xCA\xF0\xFF\xFF\xFF\xE3\xFF\xE2\xFF\x81\xFF|\xFFX\xFF?\xFD\xEC\xFD&gt;\xFD*\xFC\xD3\xFD\xDF\xFF\xE0\xC2\xE0\xBC\xE0\xBB\xE0\xB8\xE0\xAF\xE0\xA7\xE0\x9E\xDF\xC1ß­\xDE\xE2\xDE\xCC\xDE\xD6\xDE\xCAÞ¾Þ¥ÞŠÞ‡\xDD\xFB\xDB$\xEFJ\xFE\xEC\xEE\x99\x95\x82\x83\xA1\x8E\xBD\x84\x8A\x88\x90\x97\x96\xC4\x87\xB5\x81\x8D\xC7\xC8\x89\x8F\x85\xA2\xB9\xC6\x91\x98\xCA\xC9\xCB\x94\x9A\xA5\xA3\x9Bab\x8Bc\xA7d\xA4\xA6\xAB\xA8\xA9\xAA\xBEe\xAE\xAC\xAD\x9Cf\xC5\x8C\xB1\xAF\xB0g\xC0\xC2\x86ihjlkm\x92npoqrtsuv\xBFwyxz|{\x9F\x93~}\x80\xC1\xC3\xA0\xB3\xBC\xB6\xB7\xB8\xBB\xB4\xBA\x9D\x9E\xD7\xE6\xC4\xA2\xE7&amp;N@&amp;~\xFF1Sx\x92\xC7\xC9\xDD\x94\xA9\xBC\xC0     &quot; &amp; 0 : D!&quot;!&amp;&quot;&quot;&quot;&quot;&quot;&quot;&quot;+&quot;H&quot;`&quot;e&quot;\xF2%\xCA\xF0\xFF\xFF (\xA01Rx\x92\xC6\xC9\xD8\x94\xA9\xBC\xC0       &amp; 0 9 D!&quot;!&amp;&quot;&quot;&quot;&quot;&quot;&quot;&quot;+&quot;H&quot;`&quot;d&quot;\xF2%\xCA\xF0\xFF\xFF\xFF\xE3\xFF\xE2\xFF\x81\xFF|\xFFX\xFF?\xFD\xEC\xFD&gt;\xFD*\xFC\xD3\xFD\xDF\xFF\xE0\xC2\xE0\xBC\xE0\xBB\xE0\xB8\xE0\xAF\xE0\xA7\xE0\x9E\xDF\xC1ß­\xDE\xE2\xDE\xCC\xDE\xD6\xDE\xCAÞ¾Þ¥ÞŠÞ‡\xDD\xFB\xDB$\xEFJ\xFE\xEC\xEE\x99\x95\x82\x83\xA1\x8E\xBD\x84\x8A\x88\x90\x97\x96\xC4\x87\xB5\x81\x8D\xC7\xC8\x89\x8F\x85\xA2\xB9\xC6\x91\x98\xCA\xC9\xCB\x94\x9A\xA5\xA3\x9Bab\x8Bc\xA7d\xA4\xA6\xAB\xA8\xA9\xAA\xBEe\xAE\xAC\xAD\x9Cf\xC5\x8C\xB1\xAF\xB0g\xC0\xC2\x86ihjlkm\x92npoqrtsuv\xBFwyxz|{\x9F\x93~}\x80\xC1\xC3\xA0\xB3\xBC\xB6\xB7\xB8\xBB\xB4\xBA\x9D\x9E\xD7\xE6\xC4\xA2\xE7}k 3!%!!}\xEE\xFD\x8F\xF4\xFE  \xFC\xE0}&amp;\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE81!!\xE8\xFC\xC8\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xE8 !!\xE8\xFC \xFC\xE0\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC&quot;0&gt;LZhv\x84\x92\xA0\xAE\xBC\xCA\xD8\xE6\xF4,:HVdr\x80\x8E\x9C\xAA\xB8\xC6\xD4\xE2\xF0\xFE (6DR`n|\x8A\x98\xA6\xB4\xC2\xD0\xDE\xEC\xFA$2@N\jx\x86\x94\xA2\xB0\xBE\xCC\xDA\xE8\xF6 .&lt;JXdr\x80\x8E\x9C\xAA\xB8\xC6\xD4\xE2\xF0\xFE (6DR`n|\x8A\x98\xA6\xB4\xC2\xD0\xDE\xEC\xFA$2@N\jx\x86\x94\xA2\xB0\xBE\xCC\xDA\xE8\xF6 .&lt;JXft\x82\x90\x9E\xAC\xBA\xC8\xD6\xE4\xF2*88FTbp~\x8C\x9A\xA8\xB6\xC4\xD2\xE0\xEE\xFC        
-                &amp;        4        B        P        ^        l        z        \x88        \x96        \xA4        \xB2        \xC0        \xCE        \xDC        \xEA        \xF8
-
-
-&quot;
-0
-&gt;
-L
-Z
-h
-v
-\x84
-\x92
-\xA0
-\xAE
-\xBC
-\xCA
-\xD8
-\xE6
-\xF4    , : H V d r \x80 \x8E \x9C \xAA \xB8 \xC6 \xD4 \xE2 \xF0 \xFE  ( 6 D R ` n | \x8A \x98 \xA6 \xB4 \xC2 \xD0 \xDE \xEC \xFA - - -$ -2J\x9E\x9E\xA6 \xB4\xD4\xDC\xF2\xCF\xFA\xC9\xCD\xD4\xE4 \xE8\xF3\xF7\xFB        \x9E        \xA4        \xAC         \xBA        \xDA        \xE2        \xF8                        Most characters are the em square, except &amp;EAcute and &quot;p&quot;, which show ascent/descent from the baseline. Useful for testing composition systems. Produced by Todd Fahrner for the CSS Samurai's browser testing.AhemRegularVersion 1.1 AhemAhemVersion 1.1AhemMost characters are the em square, except &amp;EAcute and &quot;p&quot;, which show ascent/descent from the baseline. Useful for testing composition systems. Produced by Todd Fahrner for the CSS Samurai's browser testing.AhemRegularVersion 1.1 AhemAhemVersion 1.1AhemAhemRegularAhemMost characters are the em square, except &amp;EAcute and &quot;p&quot;, which show ascent/descent from the baseline. Useful for testing composition systems. Produced by Todd Fahrner for the CSS Samurai's browser testing.AhemRegularVersion 1.1 AhemAhemVersion 1.1AhemAhemRegularAhem\xFF{\xF5         - !&quot;#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x83\x84\x85\x86\x88\x89\x8A\x8B\x8D\x8E\x90\x91\x93\x96\x97\x9D\x9E\xA0\xA1\xA2\xA3\xA4\xA9\xAA\xAC\xAD\xAE\xAF\xB6\xB7\xB8\xBA\xBD\xC3\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xB0\xB1\xBB\xA6\xA8\x9F\x9B\xB2\xB3\xC4\xB4\xB5\xC5\x82\xC2\x87\xAB\xC6\xBE\xBF\xBC\x8C\x98\x9A\x99\xA5\x92\x9C\x8F\x94\x95\xA7\xB9\xD2\xC0\xC1NULLHTDEL\xFF\xFF
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkfontsFontWithNoValidEncodingfon"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/fonts/FontWithNoValidEncoding.fon (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/fonts/FontWithNoValidEncoding.fon        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/fonts/FontWithNoValidEncoding.fon        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,25 +0,0 @@
</span><del>-MZ -\xFF\xFF\xB8@\x80\xBA\xB4        \xCD!\xB8L\xCD!This Program cannot be run in DOS mode
-$NE\x95\x83?@@z\x95\x95\x80        P2\x80\xEC0P\x80FONTDIRFontWithNoValidEncoding;FONTRES 100,120,120 : FontWithNoValidEncoding 10 (8514 res)P\xB6Most characters are the em square, except &amp;EAcute and &quot;p&quot;, 
-xx -\x90 \xFF\xDFP -\x9E\xFEFontWithNoValidEncoding\xB6Most characters are the em square, except &amp;EAcute and &quot;p&quot;, 
-xx -\x90 \xFF\xDFP -\x9E\xFE\xFE&gt;^~\x9E\xBE\xDE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE        &gt;        ^        ~        \x9E        \xBE        \xDE        \xFE        
-&gt;
-^
-~
-\x9E
-\xBE
-\xDE
-\xFE
- &gt; ^ ~ \x9E \xBE \xDE \xFE  &gt; ^ ~ \x9E \xBE \xDE \xFE  -&gt; -^ -~ -\x9E -\xBE -\xDE -\xFE -&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xBE\xBE\xBE\xDE\xFE&gt;^~\x9E\xBE\xBE\xDE\xFE\xFE\xFE\xFE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^^^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^\x80\x90\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFFontWithNoValidEncoding
</del><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreegtkfontsfontsconf"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/DumpRenderTree/gtk/fonts/fonts.conf (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/gtk/fonts/fonts.conf        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/DumpRenderTree/gtk/fonts/fonts.conf        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,419 +0,0 @@
</span><del>-&lt;?xml version=&quot;1.0&quot;?&gt;
-&lt;!DOCTYPE fontconfig SYSTEM &quot;fonts.dtd&quot;&gt;
-&lt;fontconfig&gt;
-
-    &lt;!-- Due to patent (http://freetype.sourceforge.net/patents.html)
-         issues hinting gives different results depending on the
-         freetype version of the linux distribution, avoiding hinting
-         gives more consistent results. When all the distributions
-         release freetype the 2.4, which enables by default the
-         hinting method that was patented, we could undo this change
-         and try the hinting again. --&gt;
-    &lt;match target=&quot;font&quot;&gt;
-        &lt;edit name=&quot;hinting&quot; mode=&quot;assign&quot;&gt;
-            &lt;bool&gt;false&lt;/bool&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-
-    &lt;!-- This system may have turned off selection of bitmap fonts, but
-         we must turn it on again, because we want to be able to test that
-         bitmap fonts with no valid encodings are *never* selected regardless
-         of the Fontconfig settings. So force Fontconfig to select our cruddy
-         bitmap font --&gt;
-    &lt;selectfont&gt;
-        &lt;acceptfont&gt;
-            &lt;pattern&gt;
-                &lt;patelt name=&quot;family&quot;&gt;
-                    &lt;string&gt;FontWithNoValidEncoding&lt;/string&gt;
-                &lt;/patelt&gt;
-            &lt;/pattern&gt;
-        &lt;/acceptfont&gt;
-    &lt;/selectfont&gt;
-
-    &lt;!-- The sans-serif font should be Liberation Serif --&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-            &lt;string&gt;serif&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Serif&lt;/string&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-            &lt;string&gt;Times&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Serif&lt;/string&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-            &lt;string&gt;Times New Roman&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Serif&lt;/string&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-
-    &lt;!-- Until we find good fonts to use for cursive and fantasy
-         just use our serif font. --&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-            &lt;string&gt;cursive&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Serif&lt;/string&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-            &lt;string&gt;fantasy&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Serif&lt;/string&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-
-    &lt;!-- The sans-serif font should be Liberation Sans --&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-            &lt;string&gt;sans serif&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Sans&lt;/string&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-            &lt;string&gt;sans&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Sans&lt;/string&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-    &lt;!-- We need to ensure that layout tests that use &quot;Helvetica&quot; don't
-        fall back to the default serif font --&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-      &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-        &lt;string&gt;Helvetica&lt;/string&gt;
-      &lt;/test&gt;
-      &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-        &lt;string&gt;Liberation Sans&lt;/string&gt;
-      &lt;/edit&gt;
-    &lt;/match&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-      &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-        &lt;string&gt;Arial&lt;/string&gt;
-      &lt;/test&gt;
-      &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-        &lt;string&gt;Liberation Sans&lt;/string&gt;
-      &lt;/edit&gt;
-    &lt;/match&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-      &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-        &lt;string&gt;Lucida Grande&lt;/string&gt;
-      &lt;/test&gt;
-      &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-        &lt;string&gt;Liberation Sans&lt;/string&gt;
-      &lt;/edit&gt;
-    &lt;/match&gt;
-
-    &lt;!-- The Monospace font should be Liberation Mono --&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-            &lt;string&gt;monospace&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Mono&lt;/string&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-            &lt;string&gt;mono&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Mono&lt;/string&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-    &lt;!-- We need to ensure that layout tests that use &quot;Courier&quot;, &quot;Courier New&quot;,
-         and &quot;Monaco&quot; (all monospace fonts) don't fall back to the default
-         serif font --&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-      &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-        &lt;string&gt;Courier&lt;/string&gt;
-      &lt;/test&gt;
-      &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-        &lt;string&gt;Liberation Mono&lt;/string&gt;
-      &lt;/edit&gt;
-    &lt;/match&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-      &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-        &lt;string&gt;Courier New&lt;/string&gt;
-      &lt;/test&gt;
-      &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-        &lt;string&gt;Liberation Mono&lt;/string&gt;
-      &lt;/edit&gt;
-    &lt;/match&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-      &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-        &lt;string&gt;Monaco&lt;/string&gt;
-      &lt;/test&gt;
-      &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-        &lt;string&gt;Liberation Mono&lt;/string&gt;
-      &lt;/edit&gt;
-    &lt;/match&gt;
-
-    &lt;!-- The following hinting specializations are adapted from those in the
-         Chromium test_shell.  We try to duplicate their incredibly thorough
-         testing here --&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test name=&quot;family&quot; compare=&quot;eq&quot;&gt;
-            &lt;string&gt;NonAntiAliasedSans&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Sans&lt;/string&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;antialias&quot; mode=&quot;assign&quot;&gt;
-            &lt;bool&gt;false&lt;/bool&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-    
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test name=&quot;family&quot; compare=&quot;eq&quot;&gt;
-            &lt;string&gt;SlightHintedSerif&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Serif&lt;/string&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;hinting&quot; mode=&quot;assign&quot;&gt;
-            &lt;bool&gt;true&lt;/bool&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;hintstyle&quot; mode=&quot;assign&quot;&gt;
-            &lt;const&gt;hintslight&lt;/const&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-    
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test name=&quot;family&quot; compare=&quot;eq&quot;&gt;
-            &lt;string&gt;NonHintedSans&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Sans&lt;/string&gt;
-        &lt;/edit&gt;
-        &lt;!-- These deliberately contradict each other. The 'hinting' preference
-             should take priority --&gt;
-        &lt;edit name=&quot;hintstyle&quot; mode=&quot;assign&quot;&gt;
-            &lt;const&gt;hintfull&lt;/const&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;hinting&quot; mode=&quot;assign&quot;&gt;
-            &lt;bool&gt;false&lt;/bool&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-    
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test name=&quot;family&quot; compare=&quot;eq&quot;&gt;
-            &lt;string&gt;AutohintedSerif&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Serif&lt;/string&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;hinting&quot; mode=&quot;assign&quot;&gt;
-            &lt;bool&gt;true&lt;/bool&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;autohint&quot; mode=&quot;assign&quot;&gt;
-            &lt;bool&gt;true&lt;/bool&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;hintstyle&quot; mode=&quot;assign&quot;&gt;
-            &lt;const&gt;hintmedium&lt;/const&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-    
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test name=&quot;family&quot; compare=&quot;eq&quot;&gt;
-            &lt;string&gt;HintedSerif&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Serif&lt;/string&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;hinting&quot; mode=&quot;assign&quot;&gt;
-            &lt;bool&gt;true&lt;/bool&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;autohint&quot; mode=&quot;assign&quot;&gt;
-            &lt;bool&gt;false&lt;/bool&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;hintstyle&quot; mode=&quot;assign&quot;&gt;
-            &lt;const&gt;hintmedium&lt;/const&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-    
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test name=&quot;family&quot; compare=&quot;eq&quot;&gt;
-            &lt;string&gt;FullAndAutoHintedSerif&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Serif&lt;/string&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;hinting&quot; mode=&quot;assign&quot;&gt;
-            &lt;bool&gt;true&lt;/bool&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;autohint&quot; mode=&quot;assign&quot;&gt;
-            &lt;bool&gt;true&lt;/bool&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;hintstyle&quot; mode=&quot;assign&quot;&gt;
-            &lt;const&gt;hintfull&lt;/const&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-    
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test name=&quot;family&quot; compare=&quot;eq&quot;&gt;
-            &lt;string&gt;SubpixelEnabledSans&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Sans&lt;/string&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;rgba&quot; mode=&quot;assign&quot;&gt;
-            &lt;const&gt;rgb&lt;/const&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-    
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test name=&quot;family&quot; compare=&quot;eq&quot;&gt;
-            &lt;string&gt;SubpixelDisabledSans&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
-            &lt;string&gt;Liberation Sans&lt;/string&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;rgba&quot; mode=&quot;assign&quot;&gt;
-            &lt;const&gt;none&lt;/const&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-
-    &lt;!-- We need to enable simulated bold to for DejaVu Serif to ensure that we interpret
-         this property correctly in: platform/gtk/fonts/fontconfig-synthetic-bold.html --&gt;
-    &lt;match target=&quot;font&quot;&gt;
-        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-            &lt;string&gt;DejaVu Serif&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;test name=&quot;weight&quot; compare=&quot;less_eq&quot;&gt;
-            &lt;const&gt;medium&lt;/const&gt;
-        &lt;/test&gt;
-        &lt;test target=&quot;pattern&quot; name=&quot;weight&quot; compare=&quot;more&quot;&gt;
-            &lt;const&gt;medium&lt;/const&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;embolden&quot; mode=&quot;assign&quot;&gt;
-            &lt;bool&gt;true&lt;/bool&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;weight&quot; mode=&quot;assign&quot;&gt;
-            &lt;const&gt;bold&lt;/const&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-
-    &lt;!-- We need to enable simulated oblique to for DejaVu Serif to ensure that we interpret
-         this property correctly in: platform/gtk/fonts/fontconfig-synthetic-oblique.html --&gt;
-    &lt;match target=&quot;font&quot;&gt;
-        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
-            &lt;string&gt;DejaVu Serif&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;test name=&quot;slant&quot;&gt;
-            &lt;const&gt;roman&lt;/const&gt;
-        &lt;/test&gt;
-        &lt;test target=&quot;pattern&quot; name=&quot;slant&quot; compare=&quot;not_eq&quot;&gt;
-            &lt;const&gt;roman&lt;/const&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;matrix&quot; mode=&quot;assign&quot;&gt;
-            &lt;times&gt;
-                &lt;name&gt;matrix&lt;/name&gt;
-                &lt;matrix&gt;&lt;double&gt;1&lt;/double&gt;&lt;double&gt;0.2&lt;/double&gt;
-                    &lt;double&gt;0&lt;/double&gt;&lt;double&gt;1&lt;/double&gt;
-                &lt;/matrix&gt;
-            &lt;/times&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;slant&quot; mode=&quot;assign&quot;&gt;
-            &lt;const&gt;oblique&lt;/const&gt;
-        &lt;/edit&gt;
-        &lt;edit name=&quot;embeddedbitmap&quot; mode=&quot;assign&quot;&gt;
-            &lt;bool&gt;false&lt;/bool&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-
-    &lt;!-- If this font doesn't have a family name we are falling back. The fallback
-         font will certainly be one of the DejaVu fonts that we have in our
-         collection since they have a wide range of characters. Fontconfig might
-         choose DejaVu Sans or DejaVu Serif depending on the system, so we force
-         the use of DejaVu Sans in these situations to maintain consistency. --&gt;
-    &lt;match target=&quot;pattern&quot;&gt;
-        &lt;test qual=&quot;all&quot; name=&quot;family&quot; compare=&quot;eq&quot;&gt;
-            &lt;string&gt;&lt;/string&gt;
-        &lt;/test&gt;
-        &lt;edit name=&quot;family&quot; mode=&quot;append_last&quot;&gt;
-            &lt;string&gt;DejaVu Sans&lt;/string&gt;
-        &lt;/edit&gt;
-    &lt;/match&gt;
-
-    &lt;config&gt;
-        &lt;!-- These are the default Unicode chars that are expected to be blank
-             in fonts. All other blank chars are assumed to be broken and won't
-             appear in the resulting charsets --&gt;
-        &lt;blank&gt;
-            &lt;int&gt;0x0020&lt;/int&gt;    &lt;!-- SPACE --&gt;
-            &lt;int&gt;0x00A0&lt;/int&gt;    &lt;!-- NO-BREAK SPACE --&gt;
-            &lt;int&gt;0x00AD&lt;/int&gt;    &lt;!-- SOFT HYPHEN --&gt;
-            &lt;int&gt;0x034F&lt;/int&gt;    &lt;!-- COMBINING GRAPHEME JOINER --&gt;
-            &lt;int&gt;0x0600&lt;/int&gt;    &lt;!-- ARABIC NUMBER SIGN --&gt;
-            &lt;int&gt;0x0601&lt;/int&gt;    &lt;!-- ARABIC SIGN SANAH --&gt;
-            &lt;int&gt;0x0602&lt;/int&gt;    &lt;!-- ARABIC FOOTNOTE MARKER --&gt;
-            &lt;int&gt;0x0603&lt;/int&gt;    &lt;!-- ARABIC SIGN SAFHA --&gt;
-            &lt;int&gt;0x06DD&lt;/int&gt;    &lt;!-- ARABIC END OF AYAH --&gt;
-            &lt;int&gt;0x070F&lt;/int&gt;    &lt;!-- SYRIAC ABBREVIATION MARK --&gt;
-            &lt;int&gt;0x115F&lt;/int&gt;    &lt;!-- HANGUL CHOSEONG FILLER --&gt;
-            &lt;int&gt;0x1160&lt;/int&gt;    &lt;!-- HANGUL JUNGSEONG FILLER --&gt;
-            &lt;int&gt;0x1680&lt;/int&gt;    &lt;!-- OGHAM SPACE MARK --&gt;
-            &lt;int&gt;0x17B4&lt;/int&gt;    &lt;!-- KHMER VOWEL INHERENT AQ --&gt;
-            &lt;int&gt;0x17B5&lt;/int&gt;    &lt;!-- KHMER VOWEL INHERENT AA --&gt;
-            &lt;int&gt;0x180E&lt;/int&gt;    &lt;!-- MONGOLIAN VOWEL SEPARATOR --&gt;
-            &lt;int&gt;0x2000&lt;/int&gt;    &lt;!-- EN QUAD --&gt;
-            &lt;int&gt;0x2001&lt;/int&gt;    &lt;!-- EM QUAD --&gt;
-            &lt;int&gt;0x2002&lt;/int&gt;    &lt;!-- EN SPACE --&gt;
-            &lt;int&gt;0x2003&lt;/int&gt;    &lt;!-- EM SPACE --&gt;
-            &lt;int&gt;0x2004&lt;/int&gt;    &lt;!-- THREE-PER-EM SPACE --&gt;
-            &lt;int&gt;0x2005&lt;/int&gt;    &lt;!-- FOUR-PER-EM SPACE --&gt;
-            &lt;int&gt;0x2006&lt;/int&gt;    &lt;!-- SIX-PER-EM SPACE --&gt;
-            &lt;int&gt;0x2007&lt;/int&gt;    &lt;!-- FIGURE SPACE --&gt;
-            &lt;int&gt;0x2008&lt;/int&gt;    &lt;!-- PUNCTUATION SPACE --&gt;
-            &lt;int&gt;0x2009&lt;/int&gt;    &lt;!-- THIN SPACE --&gt;
-            &lt;int&gt;0x200A&lt;/int&gt;    &lt;!-- HAIR SPACE --&gt;
-            &lt;int&gt;0x200B&lt;/int&gt;    &lt;!-- ZERO WIDTH SPACE --&gt;
-            &lt;int&gt;0x200C&lt;/int&gt;    &lt;!-- ZERO WIDTH NON-JOINER --&gt;
-            &lt;int&gt;0x200D&lt;/int&gt;    &lt;!-- ZERO WIDTH JOINER --&gt;
-            &lt;int&gt;0x200E&lt;/int&gt;    &lt;!-- LEFT-TO-RIGHT MARK --&gt;
-            &lt;int&gt;0x200F&lt;/int&gt;    &lt;!-- RIGHT-TO-LEFT MARK --&gt;
-            &lt;int&gt;0x2028&lt;/int&gt;    &lt;!-- LINE SEPARATOR --&gt;
-            &lt;int&gt;0x2029&lt;/int&gt;    &lt;!-- PARAGRAPH SEPARATOR --&gt;
-            &lt;int&gt;0x202A&lt;/int&gt;    &lt;!-- LEFT-TO-RIGHT EMBEDDING --&gt;
-            &lt;int&gt;0x202B&lt;/int&gt;    &lt;!-- RIGHT-TO-LEFT EMBEDDING --&gt;
-            &lt;int&gt;0x202C&lt;/int&gt;    &lt;!-- POP DIRECTIONAL FORMATTING --&gt;
-            &lt;int&gt;0x202D&lt;/int&gt;    &lt;!-- LEFT-TO-RIGHT override --&gt;
-            &lt;int&gt;0x202E&lt;/int&gt;    &lt;!-- RIGHT-TO-LEFT override --&gt;
-            &lt;int&gt;0x202F&lt;/int&gt;    &lt;!-- NARROW NO-BREAK SPACE --&gt;
-            &lt;int&gt;0x205F&lt;/int&gt;    &lt;!-- MEDIUM MATHEMATICAL SPACE --&gt;
-            &lt;int&gt;0x2060&lt;/int&gt;    &lt;!-- WORD JOINER --&gt;
-            &lt;int&gt;0x2061&lt;/int&gt;    &lt;!-- FUNCTION APPLICATION --&gt;
-            &lt;int&gt;0x2062&lt;/int&gt;    &lt;!-- INVISIBLE TIMES --&gt;
-            &lt;int&gt;0x2063&lt;/int&gt;    &lt;!-- INVISIBLE SEPARATOR --&gt;
-            &lt;int&gt;0x206A&lt;/int&gt;    &lt;!-- INHIBIT SYMMETRIC SWAPPING --&gt;
-            &lt;int&gt;0x206B&lt;/int&gt;    &lt;!-- ACTIVATE SYMMETRIC SWAPPING --&gt;
-            &lt;int&gt;0x206C&lt;/int&gt;    &lt;!-- INHIBIT ARABIC FORM SHAPING --&gt;
-            &lt;int&gt;0x206D&lt;/int&gt;    &lt;!-- ACTIVATE ARABIC FORM SHAPING --&gt;
-            &lt;int&gt;0x206E&lt;/int&gt;    &lt;!-- NATIONAL DIGIT SHAPES --&gt;
-            &lt;int&gt;0x206F&lt;/int&gt;    &lt;!-- NOMINAL DIGIT SHAPES --&gt;
-            &lt;int&gt;0x3000&lt;/int&gt;    &lt;!-- IDEOGRAPHIC SPACE --&gt;
-            &lt;int&gt;0x3164&lt;/int&gt;    &lt;!-- HANGUL FILLER --&gt;
-            &lt;int&gt;0xFEFF&lt;/int&gt;    &lt;!-- ZERO WIDTH NO-BREAK SPACE --&gt;
-            &lt;int&gt;0xFFA0&lt;/int&gt;    &lt;!-- HALFWIDTH HANGUL FILLER --&gt;
-            &lt;int&gt;0xFFF9&lt;/int&gt;    &lt;!-- INTERLINEAR ANNOTATION ANCHOR --&gt;
-            &lt;int&gt;0xFFFA&lt;/int&gt;    &lt;!-- INTERLINEAR ANNOTATION SEPARATOR --&gt;
-            &lt;int&gt;0xFFFB&lt;/int&gt;    &lt;!-- INTERLINEAR ANNOTATION TERMINATOR --&gt;
-        &lt;/blank&gt;
-    &lt;/config&gt;
-&lt;/fontconfig&gt;
</del></span></pre></div>
<a id="trunkToolsGtkLauncherCMakeListstxt"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/GtkLauncher/CMakeLists.txt (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/GtkLauncher/CMakeLists.txt        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/GtkLauncher/CMakeLists.txt        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,30 +0,0 @@
</span><del>-add_definitions(-DWEBKIT_EXEC_PATH=&quot;${CMAKE_RUNTIME_OUTPUT_DIRECTORY}&quot;)
-
-include_directories(
-    ${CMAKE_BINARY_DIR}
-    ${CMAKE_SOURCE_DIR}/Source
-    ${CMAKE_SOURCE_DIR}/Source/JavaScriptCore/ForwardingHeaders
-    ${CMAKE_SOURCE_DIR}/Source/WebKit/gtk
-    ${DERIVED_SOURCES_DIR}
-    ${DERIVED_SOURCES_WEBKITGTK_DIR}
-    ${GLIB_INCLUDE_DIRS}
-    ${GSTREAMER_INCLUDE_DIRS}
-    ${GTK_INCLUDE_DIRS}
-    ${LIBSOUP_INCLUDE_DIRS}
-)
-
-add_executable(GtkLauncher
-    LauncherInspectorWindow.c
-    LauncherInspectorWindow.h
-    main.c
-)
-
-target_link_libraries(GtkLauncher
-    ${JavaScriptCore_LIBRARY_NAME}
-    WebKit
-    ${GLIB_LIBRARIES}
-    ${GSTREAMER_LIBRARIES}
-    ${GTK_LIBRARIES}
-    ${LIBSOUP_LIBRARIES}
-)
-
</del></span></pre></div>
<a id="trunkToolsGtkLauncherLauncherInspectorWindowc"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/GtkLauncher/LauncherInspectorWindow.c (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/GtkLauncher/LauncherInspectorWindow.c        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/GtkLauncher/LauncherInspectorWindow.c        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,115 +0,0 @@
</span><del>-/*
- * Copyright (C) 2012 Igalia S.L.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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.
- */
-
-#include &quot;LauncherInspectorWindow.h&quot;
-
-struct _LauncherInspectorWindow {
-    GtkWindow parent;
-
-    WebKitWebInspector *inspector;
-    GtkWidget *webView;
-};
-
-struct _LauncherInspectorWindowClass {
-    GtkWindowClass parent;
-};
-
-G_DEFINE_TYPE(LauncherInspectorWindow, launcher_inspector_window, GTK_TYPE_WINDOW)
-
-static void launcherInspectorWindowFinalize(GObject *gObject)
-{
-    LauncherInspectorWindow *inspectorWindow = LAUNCHER_INSPECTOR_WINDOW(gObject);
-    if (inspectorWindow-&gt;inspector)
-        g_object_unref(inspectorWindow-&gt;inspector);
-
-    G_OBJECT_CLASS(launcher_inspector_window_parent_class)-&gt;finalize(gObject);
-}
-
-static void launcher_inspector_window_init(LauncherInspectorWindow *inspectorWindow)
-{
-    gtk_window_set_title(GTK_WINDOW(inspectorWindow), &quot;Web Inspector&quot;);
-    gtk_window_set_default_size(GTK_WINDOW(inspectorWindow), 800, 600);
-}
-
-static void launcher_inspector_window_class_init(LauncherInspectorWindowClass *klass)
-{
-    GObjectClass *gobjectClass = G_OBJECT_CLASS(klass);
-    gobjectClass-&gt;finalize = launcherInspectorWindowFinalize;
-}
-
-static void inspectedURIChanged(WebKitWebInspector *inspector, GParamSpec *paramSpec, LauncherInspectorWindow *inspectorWindow)
-{
-    gchar *title = g_strdup_printf(&quot;Web Inspector - %s&quot;, webkit_web_inspector_get_inspected_uri(inspector));
-    gtk_window_set_title(GTK_WINDOW(inspectorWindow), title);
-    g_free(title);
-}
-
-static gboolean showInspectorWindow(WebKitWebInspector *inspector, LauncherInspectorWindow *inspectorWindow)
-{
-    gtk_widget_show(GTK_WIDGET(inspectorWindow));
-    return TRUE;
-}
-
-static gboolean closeInspectorWindow(WebKitWebInspector *inspector, LauncherInspectorWindow *inspectorWindow)
-{
-    gtk_widget_hide(GTK_WIDGET(inspectorWindow));
-    return TRUE;
-}
-
-static void inspectorWindowDestroyed(gpointer inspector, GObject* inspectorWindow)
-{
-    g_signal_handlers_disconnect_by_data(inspector, inspectorWindow);
-}
-
-GtkWidget *launcherInspectorWindowNew(WebKitWebInspector *inspector, GtkWindow *parent)
-{
-    LauncherInspectorWindow *inspectorWindow = LAUNCHER_INSPECTOR_WINDOW(g_object_new(LAUNCHER_TYPE_INSPECTOR_WINDOW, &quot;type&quot;, GTK_WINDOW_TOPLEVEL, NULL));
-    inspectorWindow-&gt;inspector = g_object_ref(inspector);
-    inspectorWindow-&gt;webView = webkit_web_view_new();
-    gtk_window_set_transient_for(GTK_WINDOW(inspectorWindow), parent);
-
-    GtkWidget *scrolledWindow = gtk_scrolled_window_new(NULL, NULL);
-    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-    gtk_container_add(GTK_CONTAINER(scrolledWindow), inspectorWindow-&gt;webView);
-    gtk_widget_show(inspectorWindow-&gt;webView);
-
-    gtk_container_add(GTK_CONTAINER(inspectorWindow), scrolledWindow);
-    gtk_widget_show(scrolledWindow);
-
-    g_signal_connect(inspector, &quot;notify::inspected-uri&quot;, G_CALLBACK(inspectedURIChanged), inspectorWindow);
-    g_signal_connect(inspector, &quot;show-window&quot;, G_CALLBACK(showInspectorWindow), inspectorWindow);
-    g_signal_connect(inspector, &quot;close-window&quot;, G_CALLBACK(closeInspectorWindow), inspectorWindow);
-
-    g_object_weak_ref(G_OBJECT(inspectorWindow), inspectorWindowDestroyed, inspector);
-
-    return GTK_WIDGET(inspectorWindow);
-}
-
-WebKitWebView *launcherInspectorWindowGetWebView(LauncherInspectorWindow *inspectorWindow)
-{
-    g_return_val_if_fail(LAUNCHER_IS_INSPECTOR_WINDOW(inspectorWindow), 0);
-
-    return WEBKIT_WEB_VIEW(inspectorWindow-&gt;webView);
-}
</del></span></pre></div>
<a id="trunkToolsGtkLauncherLauncherInspectorWindowh"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/GtkLauncher/LauncherInspectorWindow.h (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/GtkLauncher/LauncherInspectorWindow.h        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/GtkLauncher/LauncherInspectorWindow.h        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,51 +0,0 @@
</span><del>-/*
- * Copyright (C) 2012 Igalia S.L.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS 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 APPLE INC. OR ITS 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 LauncherInspectorWindow_h
-#define LauncherInspectorWindow_h
-
-#include &lt;gtk/gtk.h&gt;
-#include &lt;webkit/webkit.h&gt;
-
-G_BEGIN_DECLS
-
-#define LAUNCHER_TYPE_INSPECTOR_WINDOW            (launcher_inspector_window_get_type())
-#define LAUNCHER_INSPECTOR_WINDOW(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), LAUNCHER_TYPE_INSPECTOR_WINDOW, LauncherInspectorWindow))
-#define LAUNCHER_IS_INSPECTOR_WINDOW(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), LAUNCHER_TYPE_INSPECTOR_WINDOW))
-#define LAUNCHER_INSPECTOR_WINDOW_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass),  LAUNCHER_TYPE_INSPECTOR_WINDOW, LauncherInspectorWindowClass))
-#define LAUNCHER_IS_INSPECTOR_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),  LAUNCHER_TYPE_INSPECTOR_WINDOW))
-#define LAUNCHER_INSPECTOR_WINDOW_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj),  LAUNCHER_TYPE_INSPECTOR_WINDOW, LauncherInspectorWindowClass))
-
-typedef struct _LauncherInspectorWindow        LauncherInspectorWindow;
-typedef struct _LauncherInspectorWindowClass   LauncherInspectorWindowClass;
-
-GType launcher_inspector_window_get_type(void);
-
-GtkWidget *launcherInspectorWindowNew(WebKitWebInspector *, GtkWindow *parent);
-WebKitWebView *launcherInspectorWindowGetWebView(LauncherInspectorWindow *);
-
-G_END_DECLS
-
-#endif
</del></span></pre></div>
<a id="trunkToolsGtkLaunchermainc"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/GtkLauncher/main.c (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/GtkLauncher/main.c        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/GtkLauncher/main.c        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,557 +0,0 @@
</span><del>-/*
- * Copyright (C) 2006, 2007 Apple Inc.
- * Copyright (C) 2007 Alp Toker &lt;alp@atoker.com&gt;
- * Copyright (C) 2011 Lukasz Slachciak
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``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 APPLE INC. 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.
- */
-
-#include &quot;cmakeconfig.h&quot;
-#include &quot;LauncherInspectorWindow.h&quot;
-#include &lt;errno.h&gt;
-#include &lt;gdk/gdkkeysyms.h&gt;
-#ifdef WTF_USE_GSTREAMER
-#include &lt;gst/gst.h&gt;
-#endif
-#include &lt;gtk/gtk.h&gt;
-#include &lt;stdlib.h&gt;
-#include &lt;string.h&gt;
-#include &lt;webkit/webkit.h&gt;
-
-static gint windowCount = 0;
-
-static GtkWidget* createWindow(WebKitWebView** outWebView);
-
-static void activateUriEntryCb(GtkWidget* entry, gpointer data)
-{
-    WebKitWebView *webView = g_object_get_data(G_OBJECT(entry), &quot;web-view&quot;);
-    const gchar* uri = gtk_entry_get_text(GTK_ENTRY(entry));
-    g_assert(uri);
-    gtk_entry_set_icon_from_pixbuf(GTK_ENTRY(entry), GTK_ENTRY_ICON_PRIMARY, 0);
-    webkit_web_view_load_uri(webView, uri);
-}
-
-static void updateTitle(GtkWindow* window, WebKitWebView* webView)
-{
-    GString *string = g_string_new(webkit_web_view_get_title(webView));
-    gdouble loadProgress = webkit_web_view_get_progress(webView) * 100;
-    g_string_append(string, &quot; - WebKit Launcher&quot;);
-    if (loadProgress &lt; 100)
-        g_string_append_printf(string, &quot; (%f%%)&quot;, loadProgress);
-    gchar *title = g_string_free(string, FALSE);
-    gtk_window_set_title(window, title);
-    g_free(title);
-}
-
-static void linkHoverCb(WebKitWebView* page, const gchar* title, const gchar* link, GtkStatusbar* statusbar)
-{
-    guint statusContextId =
-      GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(statusbar), &quot;link-hover-context&quot;));
-    /* underflow is allowed */
-    gtk_statusbar_pop(statusbar, statusContextId);
-    if (link)
-        gtk_statusbar_push(statusbar, statusContextId, link);
-}
-
-static void notifyTitleCb(WebKitWebView* webView, GParamSpec* pspec, GtkWidget* window)
-{
-    updateTitle(GTK_WINDOW(window), webView);
-}
-
-static void notifyLoadStatusCb(WebKitWebView* webView, GParamSpec* pspec, GtkWidget* uriEntry)
-{
-    if (webkit_web_view_get_load_status(webView) == WEBKIT_LOAD_COMMITTED) {
-        WebKitWebFrame *frame = webkit_web_view_get_main_frame(webView);
-        const gchar *uri = webkit_web_frame_get_uri(frame);
-        if (uri)
-            gtk_entry_set_text(GTK_ENTRY(uriEntry), uri);
-    }
-}
-
-static void notifyProgressCb(WebKitWebView* webView, GParamSpec* pspec, GtkWidget* window)
-{
-    updateTitle(GTK_WINDOW(window), webView);
-}
-
-static void destroyCb(GtkWidget* widget, GtkWidget* window)
-{
-    if (g_atomic_int_dec_and_test(&amp;windowCount))
-      gtk_main_quit();
-}
-
-static void goBackCb(GtkWidget* widget,  WebKitWebView* webView)
-{
-    webkit_web_view_go_back(webView);
-}
-
-static void goForwardCb(GtkWidget* widget, WebKitWebView* webView)
-{
-    webkit_web_view_go_forward(webView);
-}
-
-static void reloadCb(GtkWidget* widget, WebKitWebView* webView)
-{
-    webkit_web_view_reload(webView);
-}
-
-static WebKitWebView*
-createWebViewCb(WebKitWebView* webView, WebKitWebFrame* web_frame, GtkWidget* window)
-{
-    WebKitWebView *newWebView;
-    createWindow(&amp;newWebView);
-    webkit_web_view_set_settings(newWebView, webkit_web_view_get_settings(webView));
-    return newWebView;
-}
-
-static gboolean webViewReadyCb(WebKitWebView* webView, GtkWidget* window)
-{
-    gtk_widget_grab_focus(GTK_WIDGET(webView));
-    gtk_widget_show_all(window);
-    return FALSE;
-}
-
-static gboolean closeWebViewCb(WebKitWebView* webView, GtkWidget* window)
-{
-    gtk_widget_destroy(window);
-    return TRUE;
-}
-
-static gboolean webViewFullscreenMessageWindowClose(GtkWidget *dialog)
-{
-    if (GTK_IS_WIDGET(dialog))
-        gtk_widget_destroy(dialog);
-    return FALSE;
-}
-
-static gboolean webViewWindowStateEvent(GtkWidget *widget, GdkEventWindowState *event, WebKitWebView *webView)
-{
-    if (event-&gt;new_window_state &amp; GDK_WINDOW_STATE_FULLSCREEN) {
-        WebKitWebFrame *frame = webkit_web_view_get_main_frame(webView);
-        const gchar *uri = webkit_web_frame_get_uri(frame);
-        GtkWidget *window = gtk_widget_get_toplevel(GTK_WIDGET(webView));
-        if (!gtk_widget_is_toplevel(window) || !GTK_IS_WINDOW(window) || GTK_IS_OFFSCREEN_WINDOW(window))
-            window = 0;
-
-        GtkWidget *dialog = gtk_message_dialog_new(window ? GTK_WINDOW(window) : 0,
-                                                    GTK_DIALOG_MODAL,
-                                                    GTK_MESSAGE_INFO,
-                                                    GTK_BUTTONS_CLOSE,
-                                                    &quot;%s is now full screen. Press ESC or f to exit.&quot;, uri);
-        g_signal_connect_swapped(dialog, &quot;response&quot;, G_CALLBACK(gtk_widget_destroy), dialog);
-        guint id = g_timeout_add(1500, (GSourceFunc) webViewFullscreenMessageWindowClose, dialog);
-        g_source_set_name_by_id(id, &quot;[WebKit] webViewFullscreenMessageWindowClose&quot;);
-        gtk_dialog_run(GTK_DIALOG(dialog));
-    }
-    return TRUE;
-}
-
-static void hideWidget(GtkWidget* widget, gpointer data)
-{
-    if (!GTK_IS_SCROLLED_WINDOW(widget))
-        gtk_widget_hide(widget);
-}
-
-static void showWidget(GtkWidget* widget, gpointer data)
-{
-    if (!GTK_IS_SCROLLED_WINDOW(widget))
-        gtk_widget_show(widget);
-}
-
-static gboolean webViewEnteringFullScreen(WebKitWebView *webView, GObject *element, GtkWidget* vbox)
-{
-    WebKitWebFrame *frame = webkit_web_view_get_main_frame(webView);
-    const gchar *uri = webkit_web_frame_get_uri(frame);
-    GtkWidget *window = gtk_widget_get_toplevel(GTK_WIDGET(webView));
-    if (!gtk_widget_is_toplevel(window) || !GTK_IS_WINDOW(window) || GTK_IS_OFFSCREEN_WINDOW(window))
-        window = 0;
-
-    GtkWidget *dialog = gtk_message_dialog_new(window ? GTK_WINDOW(window) : 0,
-                                               GTK_DIALOG_MODAL,
-                                               GTK_MESSAGE_INFO,
-                                               GTK_BUTTONS_YES_NO,
-                                               &quot;Allow full screen display of %s ?&quot;, uri);
-    gint result = gtk_dialog_run(GTK_DIALOG(dialog));
-    if (result == GTK_RESPONSE_YES) {
-        gtk_container_foreach(GTK_CONTAINER(vbox), (GtkCallback) hideWidget, NULL);
-        gtk_widget_destroy(GTK_WIDGET(dialog));
-        return FALSE;
-    }
-    gtk_widget_destroy(GTK_WIDGET(dialog));
-    return TRUE;
-}
-
-static gboolean webViewLeavingFullScreen(WebKitWebView *webView, GObject *element, GtkWidget* vbox)
-{
-    GtkWidget *window = gtk_widget_get_toplevel(GTK_WIDGET(webView));
-    if (gtk_widget_is_toplevel(window) &amp;&amp; GTK_IS_WINDOW(window) &amp;&amp; !GTK_IS_OFFSCREEN_WINDOW(window))
-        g_signal_handlers_disconnect_by_func(window, G_CALLBACK(webViewWindowStateEvent), webView);
-    gtk_container_foreach(GTK_CONTAINER(vbox), (GtkCallback) showWidget, NULL);
-    return FALSE;
-}
-
-static void iconLoadedCb(WebKitWebView* webView, const char* iconURI, GtkWidget* uriEntry)
-{
-    GdkPixbuf *icon = webkit_web_view_try_get_favicon_pixbuf(webView, 16, 16);
-    if (!icon)
-        return;
-
-    gtk_entry_set_icon_from_pixbuf(GTK_ENTRY(uriEntry), GTK_ENTRY_ICON_PRIMARY, icon);
-    g_object_unref(icon);
-}
-
-static GtkWidget *inspectorInspectWebViewCb(WebKitWebInspector *inspector, WebKitWebView *webView, GtkWindow* window)
-{
-    GtkWidget *inspectorWindow = launcherInspectorWindowNew(inspector, window);
-    return GTK_WIDGET(launcherInspectorWindowGetWebView(LAUNCHER_INSPECTOR_WINDOW(inspectorWindow)));
-}
-
-static GtkWidget* createBrowser(GtkWidget* window, GtkWidget* uriEntry, GtkWidget* statusbar, WebKitWebView* webView, GtkWidget* vbox)
-{
-    char *iconDatabasePath;
-    GtkWidget *scrolledWindow = gtk_scrolled_window_new(NULL, NULL);
-    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-
-    gtk_container_add(GTK_CONTAINER(scrolledWindow), GTK_WIDGET(webView));
-
-    iconDatabasePath = g_build_filename(g_get_user_cache_dir(), &quot;GtkLauncher&quot;, &quot;icondatabase&quot;, NULL);
-    webkit_favicon_database_set_path(webkit_get_favicon_database(), iconDatabasePath);
-    g_free(iconDatabasePath);
-
-    g_signal_connect(webView, &quot;notify::title&quot;, G_CALLBACK(notifyTitleCb), window);
-    g_signal_connect(webView, &quot;notify::load-status&quot;, G_CALLBACK(notifyLoadStatusCb), uriEntry);
-    g_signal_connect(webView, &quot;notify::progress&quot;, G_CALLBACK(notifyProgressCb), window);
-    g_signal_connect(webView, &quot;icon-loaded&quot;, G_CALLBACK(iconLoadedCb), uriEntry);
-    g_signal_connect(webView, &quot;hovering-over-link&quot;, G_CALLBACK(linkHoverCb), statusbar);
-    g_signal_connect(webView, &quot;create-web-view&quot;, G_CALLBACK(createWebViewCb), window);
-    g_signal_connect(webView, &quot;web-view-ready&quot;, G_CALLBACK(webViewReadyCb), window);
-    g_signal_connect(webView, &quot;close-web-view&quot;, G_CALLBACK(closeWebViewCb), window);
-    g_signal_connect(webView, &quot;entering-fullscreen&quot;, G_CALLBACK(webViewEnteringFullScreen), vbox);
-    g_signal_connect(webView, &quot;leaving-fullscreen&quot;, G_CALLBACK(webViewLeavingFullScreen), vbox);
-    g_signal_connect(webkit_web_view_get_inspector(webView), &quot;inspect-web-view&quot;, G_CALLBACK(inspectorInspectWebViewCb), window);
-
-    return scrolledWindow;
-}
-
-static GtkWidget* createStatusbar()
-{
-    GtkStatusbar *statusbar = GTK_STATUSBAR(gtk_statusbar_new());
-    guint statusContextId = gtk_statusbar_get_context_id(statusbar, &quot;Link Hover&quot;);
-    g_object_set_data(G_OBJECT(statusbar), &quot;link-hover-context&quot;,
-        GUINT_TO_POINTER(statusContextId));
-
-    return GTK_WIDGET(statusbar);
-}
-
-static GtkWidget* createToolbar(GtkWidget* window, GtkWidget* uriEntry, WebKitWebView* webView)
-{
-    GtkWidget *toolbar = gtk_toolbar_new();
-
-    gtk_orientable_set_orientation(GTK_ORIENTABLE(toolbar), GTK_ORIENTATION_HORIZONTAL);
-    gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH_HORIZ);
-
-    GtkToolItem *item;
-
-    /* Keyboard accelerators */
-    GtkAccelGroup *accelGroup = gtk_accel_group_new();
-    gtk_window_add_accel_group(GTK_WINDOW(window), accelGroup);
-
-    /* the back button */
-    item = gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
-    g_signal_connect(G_OBJECT(item), &quot;clicked&quot;, G_CALLBACK(goBackCb), webView);
-    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
-
-    /* The forward button */
-    item = gtk_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
-    g_signal_connect(G_OBJECT(item), &quot;clicked&quot;, G_CALLBACK(goForwardCb), webView);
-    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
-
-    /* The reload button */
-    item = gtk_tool_button_new_from_stock(GTK_STOCK_REFRESH);
-    g_signal_connect(G_OBJECT(item), &quot;clicked&quot;, G_CALLBACK(reloadCb), webView);
-    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
-    gtk_widget_add_accelerator(GTK_WIDGET(item), &quot;clicked&quot;, accelGroup, GDK_KEY_F5, 0, GTK_ACCEL_VISIBLE);
-
-    /* The URL entry */
-    item = gtk_tool_item_new();
-    gtk_tool_item_set_expand(item, TRUE);
-    gtk_container_add(GTK_CONTAINER(item), uriEntry);
-    g_signal_connect(G_OBJECT(uriEntry), &quot;activate&quot;, G_CALLBACK(activateUriEntryCb), NULL);
-    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
-
-    /* The go button */
-    g_object_set_data(G_OBJECT(uriEntry), &quot;web-view&quot;, webView);
-    item = gtk_tool_button_new_from_stock(GTK_STOCK_OK);
-    g_signal_connect_swapped(G_OBJECT(item), &quot;clicked&quot;, G_CALLBACK(activateUriEntryCb), (gpointer)uriEntry);
-    gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
-
-    return toolbar;
-}
-
-static GtkWidget* createWindow(WebKitWebView** outWebView)
-{
-    WebKitWebView *webView;
-    GtkWidget *vbox;
-    GtkWidget *window;
-    GtkWidget *uriEntry;
-    GtkWidget *statusbar;
-
-    g_atomic_int_inc(&amp;windowCount);
-
-    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-    gtk_window_set_default_size(GTK_WINDOW(window), 800, 600);
-    gtk_widget_set_name(window, &quot;GtkLauncher&quot;);
-
-    webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
-    uriEntry = gtk_entry_new();
-
-#ifdef GTK_API_VERSION_2
-    vbox = gtk_vbox_new(FALSE, 0);
-#else
-    vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
-#endif
-    statusbar = createStatusbar();
-    gtk_box_pack_start(GTK_BOX(vbox), createToolbar(window, uriEntry, webView), FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(vbox), createBrowser(window, uriEntry, statusbar, webView, vbox), TRUE, TRUE, 0);
-    gtk_box_pack_start(GTK_BOX(vbox), statusbar, FALSE, FALSE, 0);
-
-    gtk_container_add(GTK_CONTAINER(window), vbox);
-
-    g_signal_connect(window, &quot;destroy&quot;, G_CALLBACK(destroyCb), NULL);
-
-    if (outWebView)
-        *outWebView = webView;
-
-    return window;
-}
-
-static gchar* filenameToURL(const char* filename)
-{
-    if (!g_file_test(filename, G_FILE_TEST_EXISTS))
-        return NULL;
-
-    GFile *gfile = g_file_new_for_path(filename);
-    gchar *fileURL = g_file_get_uri(gfile);
-    g_object_unref(gfile);
-
-    return fileURL;
-}
-
-static gboolean parseOptionEntryCallback(const gchar *optionNameFull, const gchar *value, WebKitWebSettings *webSettings, GError **error)
-{
-    if (strlen(optionNameFull) &lt;= 2) {
-        g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_FAILED, &quot;Invalid option %s&quot;, optionNameFull);
-        return FALSE;
-    }
-
-    /* We have two -- in option name so remove them. */
-    const gchar *optionName = optionNameFull + 2;
-    GParamSpec *spec = g_object_class_find_property(G_OBJECT_GET_CLASS(webSettings), optionName);
-    if (!spec) {
-        g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_FAILED, &quot;Cannot find web settings for option %s&quot;, optionNameFull);
-        return FALSE;
-    }
-
-    switch (G_PARAM_SPEC_VALUE_TYPE(spec)) {
-    case G_TYPE_BOOLEAN: {
-        gboolean propertyValue = TRUE;
-        if (value &amp;&amp; g_ascii_strcasecmp(value, &quot;true&quot;) &amp;&amp; strcmp(value, &quot;1&quot;))
-            propertyValue = FALSE;
-        g_object_set(G_OBJECT(webSettings), optionName, propertyValue, NULL);
-        break;
-    }
-    case G_TYPE_STRING:
-        g_object_set(G_OBJECT(webSettings), optionName, value, NULL);
-        break;
-    case G_TYPE_INT: {
-        glong propertyValue;
-        gchar *end;
-
-        errno = 0;
-        propertyValue = g_ascii_strtoll(value, &amp;end, 0);
-        if (errno == ERANGE || propertyValue &gt; G_MAXINT || propertyValue &lt; G_MININT) {
-            g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, &quot;Integer value '%s' for %s out of range&quot;, value, optionNameFull);
-            return FALSE;
-        }
-        if (errno || value == end) {
-            g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, &quot;Cannot parse integer value '%s' for %s&quot;, value, optionNameFull);
-            return FALSE;
-        }
-        g_object_set(G_OBJECT(webSettings), optionName, propertyValue, NULL);
-        break;
-    }
-    case G_TYPE_FLOAT: {
-        gdouble propertyValue;
-        gchar *end;
-
-        errno = 0;
-        propertyValue = g_ascii_strtod(value, &amp;end);
-        if (errno == ERANGE || propertyValue &gt; G_MAXFLOAT || propertyValue &lt; G_MINFLOAT) {
-            g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, &quot;Float value '%s' for %s out of range&quot;, value, optionNameFull);
-            return FALSE;
-        }
-        if (errno || value == end) {
-            g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, &quot;Cannot parse float value '%s' for %s&quot;, value, optionNameFull);
-            return FALSE;
-        }
-        g_object_set(G_OBJECT(webSettings), optionName, propertyValue, NULL);
-        break;
-    }
-    default:
-        g_assert_not_reached();
-    }
-
-    return TRUE;
-}
-
-static gboolean isValidParameterType(GType gParamType)
-{
-    return (gParamType == G_TYPE_BOOLEAN || gParamType == G_TYPE_STRING || gParamType == G_TYPE_INT
-            || gParamType == G_TYPE_FLOAT);
-}
-
-static GOptionEntry* getOptionEntriesFromWebKitWebSettings(WebKitWebSettings *webSettings)
-{
-    GParamSpec **propertySpecs;
-    GOptionEntry *optionEntries;
-    guint numProperties, numEntries, i;
-
-    propertySpecs = g_object_class_list_properties(G_OBJECT_GET_CLASS(webSettings), &amp;numProperties);
-    if (!propertySpecs)
-        return NULL;
-
-    optionEntries = g_new0(GOptionEntry, numProperties + 1);
-    numEntries = 0;
-    for (i = 0; i &lt; numProperties; i++) {
-        GParamSpec *param = propertySpecs[i];
-
-        /* Fill in structures only for writable and not construct-only properties. */
-        if (!param || !(param-&gt;flags &amp; G_PARAM_WRITABLE) || (param-&gt;flags &amp; G_PARAM_CONSTRUCT_ONLY))
-            continue;
-
-        GType gParamType = G_PARAM_SPEC_VALUE_TYPE(param);
-        if (!isValidParameterType(gParamType))
-            continue;
-
-        GOptionEntry *optionEntry = &amp;optionEntries[numEntries++];
-        optionEntry-&gt;long_name = g_param_spec_get_name(param);
-
-        /* There is no easy way to figure our short name for generated option entries.
-           optionEntry.short_name=*/
-        /* For bool arguments &quot;enable&quot; type make option argument not required. */
-        if (gParamType == G_TYPE_BOOLEAN &amp;&amp; (strstr(optionEntry-&gt;long_name, &quot;enable&quot;)))
-            optionEntry-&gt;flags = G_OPTION_FLAG_OPTIONAL_ARG;
-        optionEntry-&gt;arg = G_OPTION_ARG_CALLBACK;
-        optionEntry-&gt;arg_data = parseOptionEntryCallback;
-        optionEntry-&gt;description = g_param_spec_get_blurb(param);
-        optionEntry-&gt;arg_description = g_type_name(gParamType);
-    }
-    g_free(propertySpecs);
-
-    return optionEntries;
-}
-
-static gboolean addWebSettingsGroupToContext(GOptionContext *context, WebKitWebSettings* webkitSettings)
-{
-    GOptionEntry *optionEntries = getOptionEntriesFromWebKitWebSettings(webkitSettings);
-    if (!optionEntries)
-        return FALSE;
-
-    GOptionGroup *webSettingsGroup = g_option_group_new(&quot;websettings&quot;,
-                                                        &quot;WebKitWebSettings writable properties for default WebKitWebView&quot;,
-                                                        &quot;WebKitWebSettings properties&quot;,
-                                                        webkitSettings,
-                                                        NULL);
-    g_option_group_add_entries(webSettingsGroup, optionEntries);
-    g_free(optionEntries);
-
-    /* Option context takes ownership of the group. */
-    g_option_context_add_group(context, webSettingsGroup);
-
-    return TRUE;
-}
-
-int main(int argc, char* argv[])
-{
-    WebKitWebSettings *webkitSettings = 0;
-    const gchar **uriArguments = 0;
-    const GOptionEntry commandLineOptions[] =
-    {
-        { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &amp;uriArguments, 0, &quot;[URL]&quot; },
-        { 0, 0, 0, 0, 0, 0, 0 }
-    };
-
-    gtk_init(&amp;argc, &amp;argv);
-
-    GOptionContext *context = g_option_context_new(0);
-    g_option_context_add_main_entries(context, commandLineOptions, 0);
-    g_option_context_add_group(context, gtk_get_option_group(TRUE));
-#ifdef WTF_USE_GSTREAMER
-    g_option_context_add_group(context, gst_init_get_option_group());
-#endif
-    webkitSettings = webkit_web_settings_new();
-    g_object_set(webkitSettings, &quot;enable-developer-extras&quot;, TRUE, NULL);
-    if (!addWebSettingsGroupToContext(context, webkitSettings)) {
-        g_object_unref(webkitSettings);
-        webkitSettings = 0;
-    }
-
-    GError *error = 0;
-    if (!g_option_context_parse(context, &amp;argc, &amp;argv, &amp;error)) {
-        g_printerr(&quot;Cannot parse arguments: %s\n&quot;, error-&gt;message);
-        g_error_free(error);
-        g_option_context_free(context);
-
-        return 1;
-    }
-    g_option_context_free(context);
-
-#ifdef SOUP_TYPE_PROXY_RESOLVER_DEFAULT
-    soup_session_add_feature_by_type(webkit_get_default_session(), SOUP_TYPE_PROXY_RESOLVER_DEFAULT);
-#else
-    const char *httpProxy = g_getenv(&quot;http_proxy&quot;);
-    if (httpProxy) {
-        SoupURI *proxyUri = soup_uri_new(httpProxy);
-        g_object_set(webkit_get_default_session(), SOUP_SESSION_PROXY_URI, proxyUri, NULL);
-        soup_uri_free(proxyUri);
-    }
-#endif
-
-    WebKitWebView *webView;
-    GtkWidget *main_window = createWindow(&amp;webView);
-
-    if (webkitSettings) {
-        webkit_web_view_set_settings(WEBKIT_WEB_VIEW(webView), webkitSettings);
-        g_object_unref(webkitSettings);
-    }
-
-    const gchar *uri = (uriArguments ? uriArguments[0] : &quot;http://www.google.com/&quot;);
-    gchar *fileURL = filenameToURL(uri);
-
-    webkit_web_view_load_uri(webView, fileURL ? fileURL : uri);
-    g_free(fileURL);
-
-    gtk_widget_grab_focus(GTK_WIDGET(webView));
-    gtk_widget_show_all(main_window);
-    gtk_main();
-
-    return 0;
-}
</del></span></pre></div>
<a id="trunkToolsGtkLaunchersimplesvg"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/GtkLauncher/simple.svg (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/GtkLauncher/simple.svg        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/GtkLauncher/simple.svg        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,15 +0,0 @@
</span><del>-&lt;?xml version=&quot;1.0&quot; standalone=&quot;no&quot;?&gt;
-&lt;!DOCTYPE svg PUBLIC &quot;-//W3C//DTD SVG 20010904//EN&quot;
-&quot;http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd&quot;&gt;
-&lt;svg width=&quot;5cm&quot; height=&quot;4cm&quot;
-xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
-&lt;desc&gt;Four separate rectangles
-&lt;/desc&gt;
-&lt;rect x=&quot;0.5cm&quot; y=&quot;0.5cm&quot; width=&quot;2cm&quot; height=&quot;1cm&quot;/&gt;
-&lt;rect x=&quot;0.5cm&quot; y=&quot;2cm&quot; width=&quot;1cm&quot; height=&quot;1.5cm&quot;/&gt;
-&lt;rect x=&quot;3cm&quot; y=&quot;0.5cm&quot; width=&quot;1.5cm&quot; height=&quot;2cm&quot;/&gt;
-&lt;rect x=&quot;3.5cm&quot; y=&quot;3cm&quot; width=&quot;1cm&quot; height=&quot;0.5cm&quot;/&gt;
-&lt;!-- Show outline of canvas using 'rect' element --&gt;
-&lt;rect x=&quot;.01cm&quot; y=&quot;.01cm&quot; width=&quot;4.98cm&quot; height=&quot;3.98cm&quot;
-fill=&quot;none&quot; stroke=&quot;blue&quot; stroke-width=&quot;.02cm&quot; /&gt;
-&lt;/svg&gt;
</del></span></pre></div>
<a id="trunkToolsGtkLaunchertexthtml"></a>
<div class="delfile"><h4>Deleted: trunk/Tools/GtkLauncher/text.html (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/GtkLauncher/text.html        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/GtkLauncher/text.html        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -1,9 +0,0 @@
</span><del>-&lt;html&gt;
-&lt;head&gt;
-&lt;title&gt;Hello World&lt;/title&gt; 
-&lt;body bgcolor=#00ffff text=#000000&gt; 
-&lt;p&gt;
-Hello world
-&lt;/p&gt;
-&lt;/body&gt;
-&lt;/html&gt; 
</del></span></pre></div>
<a id="trunkToolsWebKitTestRunnerPlatformGTKcmake"></a>
<div class="modfile"><h4>Modified: trunk/Tools/WebKitTestRunner/PlatformGTK.cmake (166972 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/PlatformGTK.cmake        2014-04-08 22:51:27 UTC (rev 166972)
+++ trunk/Tools/WebKitTestRunner/PlatformGTK.cmake        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -56,6 +56,6 @@
</span><span class="cx"> )
</span><span class="cx"> 
</span><span class="cx"> add_definitions(
</span><del>-    -DFONTS_CONF_DIR=&quot;${TOOLS_DIR}/DumpRenderTree/gtk/fonts&quot;
</del><ins>+    -DFONTS_CONF_DIR=&quot;${TOOLS_DIR}/WebKitTestRunner/gtk/fonts&quot;
</ins><span class="cx">     -DTOP_LEVEL_DIR=&quot;${CMAKE_SOURCE_DIR}&quot;
</span><span class="cx"> )
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnergtkfontsAHEM____TTFfromrev166971trunkToolsDumpRenderTreegtkfontsAHEM____TTF"></a>
<div class="copfile"><h4>Copied: trunk/Tools/WebKitTestRunner/gtk/fonts/AHEM____.TTF (from rev 166971, trunk/Tools/DumpRenderTree/gtk/fonts/AHEM____.TTF) (0 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/gtk/fonts/AHEM____.TTF                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/gtk/fonts/AHEM____.TTF        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -0,0 +1,29 @@
</span><ins>+ \x800OS/2xPJ\x8D8`cmap\xD6Flrgasp        0\xB0glyfI\xB3t\xDA \xE0dheadÖ¢N\xBC6hhea
+\xF4$hmtx\xB9 }\x98\xD4loca u'&quot;&amp;D\xECmaxp\xF8         name~\x8C\xB8(0hpost\x8D\xD0\x8A.\x98BQg_&lt;\xF5        \xE8\xB3o_Y\xC0-\xABI\xFF8\xE8  \xFF8\xE8\xE8\xF5\xF5\xE8\x90\xBC\x8A\x8F\xBC\x8A\xC52        \x80\xAF HW3C@ \xF0 \xFF8 \xC8 @   \xE8}\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8\xE8L&amp;
+        
+ + !&quot;#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\xDB\x81\x82\x83\x84\xDD\x85\x86\x87\x88\xE3\x89\x8A\xEA\x8B\x8C\xE8\x8D\xEB\xEC\x8E\x8F\xE4\xE6\xE5\xD4\xE9\x90\x91\xD3\x92\x93\x94\x95\x96\xE7\xD1\xED\xD2\x97\x98\xDE\x9A\x9B\x9C\xCE\xCF\xD5\xD6\xD8\xD9\x9D\x9E\x9F\xEE\xA0\xD0\xE2\xA1\xE0\xE1\xDC\xA2\xD7\xDA\xDF\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC&amp;N@&amp;~\xFF1Sx\x92\xC7\xC9\xDD\x94\xA9\xBC\xC0     &quot; &amp; 0 : D!&quot;!&amp;&quot;&quot;&quot;&quot;&quot;&quot;&quot;+&quot;H&quot;`&quot;e&quot;\xF2%\xCA\xF0\xFF\xFF (\xA01Rx\x92\xC6\xC9\xD8\x94\xA9\xBC\xC0       &amp; 0 9 D!&quot;!&amp;&quot;&quot;&quot;&quot;&quot;&quot;&quot;+&quot;H&quot;`&quot;d&quot;\xF2%\xCA\xF0\xFF\xFF\xFF\xE3\xFF\xE2\xFF\x81\xFF|\xFFX\xFF?\xFD\xEC\xFD&gt;\xFD*\xFC\xD3\xFD\xDF\xFF\xE0\xC2\xE0\xBC\xE0\xBB\xE0\xB8\xE0\xAF\xE0\xA7\xE0\x9E\xDF\xC1ß­\xDE\xE2\xDE\xCC\xDE\xD6\xDE\xCAÞ¾Þ¥ÞŠÞ‡\xDD\xFB\xDB$\xEFJ\xFE\xEC\xEE\x99\x95\x82\x83\xA1\x8E\xBD\x84\x8A\x88\x90\x97\x96\xC4\x87\xB5\x81\x8D\xC7\xC8\x89\x8F\x85\xA2\xB9\xC6\x91\x98\xCA\xC9\xCB\x94\x9A\xA5\xA3\x9Bab\x8Bc\xA7d\xA4\xA6\xAB\xA8\xA9\xAA\xBEe\xAE\xAC\xAD\x9Cf\xC5\x8C\xB1\xAF\xB0g\xC0\xC2\x86ihjlkm\x92npoqrtsuv\xBFwyxz|{\x9F\x93~}\x80\xC1\xC3\xA0\xB3\xBC\xB6\xB7\xB8\xBB\xB4\xBA\x9D\x9E\xD7\xE6\xC4\xA2\xE7&amp;N@&amp;~\xFF1Sx\x92\xC7\xC9\xDD\x94\xA9\xBC\xC0     &quot; &amp; 0 : D!&quot;!&amp;&quot;&quot;&quot;&quot;&quot;&quot;&quot;+&quot;H&quot;`&quot;e&quot;\xF2%\xCA\xF0\xFF\xFF (\xA01Rx\x92\xC6\xC9\xD8\x94\xA9\xBC\xC0       &amp; 0 9 D!&quot;!&amp;&quot;&quot;&quot;&quot;&quot;&quot;&quot;+&quot;H&quot;`&quot;d&quot;\xF2%\xCA\xF0\xFF\xFF\xFF\xE3\xFF\xE2\xFF\x81\xFF|\xFFX\xFF?\xFD\xEC\xFD&gt;\xFD*\xFC\xD3\xFD\xDF\xFF\xE0\xC2\xE0\xBC\xE0\xBB\xE0\xB8\xE0\xAF\xE0\xA7\xE0\x9E\xDF\xC1ß­\xDE\xE2\xDE\xCC\xDE\xD6\xDE\xCAÞ¾Þ¥ÞŠÞ‡\xDD\xFB\xDB$\xEFJ\xFE\xEC\xEE\x99\x95\x82\x83\xA1\x8E\xBD\x84\x8A\x88\x90\x97\x96\xC4\x87\xB5\x81\x8D\xC7\xC8\x89\x8F\x85\xA2\xB9\xC6\x91\x98\xCA\xC9\xCB\x94\x9A\xA5\xA3\x9Bab\x8Bc\xA7d\xA4\xA6\xAB\xA8\xA9\xAA\xBEe\xAE\xAC\xAD\x9Cf\xC5\x8C\xB1\xAF\xB0g\xC0\xC2\x86ihjlkm\x92npoqrtsuv\xBFwyxz|{\x9F\x93~}\x80\xC1\xC3\xA0\xB3\xBC\xB6\xB7\xB8\xBB\xB4\xBA\x9D\x9E\xD7\xE6\xC4\xA2\xE7}k 3!%!!}\xEE\xFD\x8F\xF4\xFE  \xFC\xE0}&amp;\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE81!!\xE8\xFC\xC8\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xE8 !!\xE8\xFC \xFC\xE0\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC\xFF8\xE8 !!\xE8\xFC \xFC&quot;0&gt;LZhv\x84\x92\xA0\xAE\xBC\xCA\xD8\xE6\xF4,:HVdr\x80\x8E\x9C\xAA\xB8\xC6\xD4\xE2\xF0\xFE (6DR`n|\x8A\x98\xA6\xB4\xC2\xD0\xDE\xEC\xFA$2@N\jx\x86\x94\xA2\xB0\xBE\xCC\xDA\xE8\xF6 .&lt;JXdr\x80\x8E\x9C\xAA\xB8\xC6\xD4\xE2\xF0\xFE (6DR`n|\x8A\x98\xA6\xB4\xC2\xD0\xDE\xEC\xFA$2@N\jx\x86\x94\xA2\xB0\xBE\xCC\xDA\xE8\xF6 .&lt;JXft\x82\x90\x9E\xAC\xBA\xC8\xD6\xE4\xF2*88FTbp~\x8C\x9A\xA8\xB6\xC4\xD2\xE0\xEE\xFC        
+                &amp;        4        B        P        ^        l        z        \x88        \x96        \xA4        \xB2        \xC0        \xCE        \xDC        \xEA        \xF8
+
+
+&quot;
+0
+&gt;
+L
+Z
+h
+v
+\x84
+\x92
+\xA0
+\xAE
+\xBC
+\xCA
+\xD8
+\xE6
+\xF4    , : H V d r \x80 \x8E \x9C \xAA \xB8 \xC6 \xD4 \xE2 \xF0 \xFE  ( 6 D R ` n | \x8A \x98 \xA6 \xB4 \xC2 \xD0 \xDE \xEC \xFA + + +$ +2J\x9E\x9E\xA6 \xB4\xD4\xDC\xF2\xCF\xFA\xC9\xCD\xD4\xE4 \xE8\xF3\xF7\xFB        \x9E        \xA4        \xAC         \xBA        \xDA        \xE2        \xF8                        Most characters are the em square, except &amp;EAcute and &quot;p&quot;, which show ascent/descent from the baseline. Useful for testing composition systems. Produced by Todd Fahrner for the CSS Samurai's browser testing.AhemRegularVersion 1.1 AhemAhemVersion 1.1AhemMost characters are the em square, except &amp;EAcute and &quot;p&quot;, which show ascent/descent from the baseline. Useful for testing composition systems. Produced by Todd Fahrner for the CSS Samurai's browser testing.AhemRegularVersion 1.1 AhemAhemVersion 1.1AhemAhemRegularAhemMost characters are the em square, except &amp;EAcute and &quot;p&quot;, which show ascent/descent from the baseline. Useful for testing composition systems. Produced by Todd Fahrner for the CSS Samurai's browser testing.AhemRegularVersion 1.1 AhemAhemVersion 1.1AhemAhemRegularAhem\xFF{\xF5         + !&quot;#$%&amp;'()*+,-./0123456789:;&lt;=&gt;?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~\x80\x81\x83\x84\x85\x86\x88\x89\x8A\x8B\x8D\x8E\x90\x91\x93\x96\x97\x9D\x9E\xA0\xA1\xA2\xA3\xA4\xA9\xAA\xAC\xAD\xAE\xAF\xB6\xB7\xB8\xBA\xBD\xC3\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xB0\xB1\xBB\xA6\xA8\x9F\x9B\xB2\xB3\xC4\xB4\xB5\xC5\x82\xC2\x87\xAB\xC6\xBE\xBF\xBC\x8C\x98\x9A\x99\xA5\x92\x9C\x8F\x94\x95\xA7\xB9\xD2\xC0\xC1NULLHTDEL\xFF\xFF
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnergtkfontsFontWithNoValidEncodingfonfromrev166971trunkToolsDumpRenderTreegtkfontsFontWithNoValidEncodingfon"></a>
<div class="copfile"><h4>Copied: trunk/Tools/WebKitTestRunner/gtk/fonts/FontWithNoValidEncoding.fon (from rev 166971, trunk/Tools/DumpRenderTree/gtk/fonts/FontWithNoValidEncoding.fon) (0 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/gtk/fonts/FontWithNoValidEncoding.fon                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/gtk/fonts/FontWithNoValidEncoding.fon        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -0,0 +1,25 @@
</span><ins>+MZ +\xFF\xFF\xB8@\x80\xBA\xB4        \xCD!\xB8L\xCD!This Program cannot be run in DOS mode
+$NE\x95\x83?@@z\x95\x95\x80        P2\x80\xEC0P\x80FONTDIRFontWithNoValidEncoding;FONTRES 100,120,120 : FontWithNoValidEncoding 10 (8514 res)P\xB6Most characters are the em square, except &amp;EAcute and &quot;p&quot;, 
+xx +\x90 \xFF\xDFP +\x9E\xFEFontWithNoValidEncoding\xB6Most characters are the em square, except &amp;EAcute and &quot;p&quot;, 
+xx +\x90 \xFF\xDFP +\x9E\xFE\xFE&gt;^~\x9E\xBE\xDE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE        &gt;        ^        ~        \x9E        \xBE        \xDE        \xFE        
+&gt;
+^
+~
+\x9E
+\xBE
+\xDE
+\xFE
+ &gt; ^ ~ \x9E \xBE \xDE \xFE  &gt; ^ ~ \x9E \xBE \xDE \xFE  +&gt; +^ +~ +\x9E +\xBE +\xDE +\xFE +&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xBE\xBE\xBE\xDE\xFE&gt;^~\x9E\xBE\xBE\xDE\xFE\xFE\xFE\xFE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^^^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^~\x9E\xBE\xDE\xFE&gt;^\x80\x90\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFFFontWithNoValidEncoding
</ins><span class="cx">\ No newline at end of file
</span></span></pre></div>
<a id="trunkToolsWebKitTestRunnergtkfontsfontsconffromrev166971trunkToolsDumpRenderTreegtkfontsfontsconf"></a>
<div class="copfile"><h4>Copied: trunk/Tools/WebKitTestRunner/gtk/fonts/fonts.conf (from rev 166971, trunk/Tools/DumpRenderTree/gtk/fonts/fonts.conf) (0 => 166973)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/WebKitTestRunner/gtk/fonts/fonts.conf                                (rev 0)
+++ trunk/Tools/WebKitTestRunner/gtk/fonts/fonts.conf        2014-04-08 22:52:26 UTC (rev 166973)
</span><span class="lines">@@ -0,0 +1,419 @@
</span><ins>+&lt;?xml version=&quot;1.0&quot;?&gt;
+&lt;!DOCTYPE fontconfig SYSTEM &quot;fonts.dtd&quot;&gt;
+&lt;fontconfig&gt;
+
+    &lt;!-- Due to patent (http://freetype.sourceforge.net/patents.html)
+         issues hinting gives different results depending on the
+         freetype version of the linux distribution, avoiding hinting
+         gives more consistent results. When all the distributions
+         release freetype the 2.4, which enables by default the
+         hinting method that was patented, we could undo this change
+         and try the hinting again. --&gt;
+    &lt;match target=&quot;font&quot;&gt;
+        &lt;edit name=&quot;hinting&quot; mode=&quot;assign&quot;&gt;
+            &lt;bool&gt;false&lt;/bool&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+
+    &lt;!-- This system may have turned off selection of bitmap fonts, but
+         we must turn it on again, because we want to be able to test that
+         bitmap fonts with no valid encodings are *never* selected regardless
+         of the Fontconfig settings. So force Fontconfig to select our cruddy
+         bitmap font --&gt;
+    &lt;selectfont&gt;
+        &lt;acceptfont&gt;
+            &lt;pattern&gt;
+                &lt;patelt name=&quot;family&quot;&gt;
+                    &lt;string&gt;FontWithNoValidEncoding&lt;/string&gt;
+                &lt;/patelt&gt;
+            &lt;/pattern&gt;
+        &lt;/acceptfont&gt;
+    &lt;/selectfont&gt;
+
+    &lt;!-- The sans-serif font should be Liberation Serif --&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+            &lt;string&gt;serif&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Serif&lt;/string&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+            &lt;string&gt;Times&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Serif&lt;/string&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+            &lt;string&gt;Times New Roman&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Serif&lt;/string&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+
+    &lt;!-- Until we find good fonts to use for cursive and fantasy
+         just use our serif font. --&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+            &lt;string&gt;cursive&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Serif&lt;/string&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+            &lt;string&gt;fantasy&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Serif&lt;/string&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+
+    &lt;!-- The sans-serif font should be Liberation Sans --&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+            &lt;string&gt;sans serif&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Sans&lt;/string&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+            &lt;string&gt;sans&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Sans&lt;/string&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+    &lt;!-- We need to ensure that layout tests that use &quot;Helvetica&quot; don't
+        fall back to the default serif font --&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+      &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+        &lt;string&gt;Helvetica&lt;/string&gt;
+      &lt;/test&gt;
+      &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+        &lt;string&gt;Liberation Sans&lt;/string&gt;
+      &lt;/edit&gt;
+    &lt;/match&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+      &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+        &lt;string&gt;Arial&lt;/string&gt;
+      &lt;/test&gt;
+      &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+        &lt;string&gt;Liberation Sans&lt;/string&gt;
+      &lt;/edit&gt;
+    &lt;/match&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+      &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+        &lt;string&gt;Lucida Grande&lt;/string&gt;
+      &lt;/test&gt;
+      &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+        &lt;string&gt;Liberation Sans&lt;/string&gt;
+      &lt;/edit&gt;
+    &lt;/match&gt;
+
+    &lt;!-- The Monospace font should be Liberation Mono --&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+            &lt;string&gt;monospace&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Mono&lt;/string&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+            &lt;string&gt;mono&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Mono&lt;/string&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+    &lt;!-- We need to ensure that layout tests that use &quot;Courier&quot;, &quot;Courier New&quot;,
+         and &quot;Monaco&quot; (all monospace fonts) don't fall back to the default
+         serif font --&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+      &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+        &lt;string&gt;Courier&lt;/string&gt;
+      &lt;/test&gt;
+      &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+        &lt;string&gt;Liberation Mono&lt;/string&gt;
+      &lt;/edit&gt;
+    &lt;/match&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+      &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+        &lt;string&gt;Courier New&lt;/string&gt;
+      &lt;/test&gt;
+      &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+        &lt;string&gt;Liberation Mono&lt;/string&gt;
+      &lt;/edit&gt;
+    &lt;/match&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+      &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+        &lt;string&gt;Monaco&lt;/string&gt;
+      &lt;/test&gt;
+      &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+        &lt;string&gt;Liberation Mono&lt;/string&gt;
+      &lt;/edit&gt;
+    &lt;/match&gt;
+
+    &lt;!-- The following hinting specializations are adapted from those in the
+         Chromium test_shell.  We try to duplicate their incredibly thorough
+         testing here --&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test name=&quot;family&quot; compare=&quot;eq&quot;&gt;
+            &lt;string&gt;NonAntiAliasedSans&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Sans&lt;/string&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;antialias&quot; mode=&quot;assign&quot;&gt;
+            &lt;bool&gt;false&lt;/bool&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+    
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test name=&quot;family&quot; compare=&quot;eq&quot;&gt;
+            &lt;string&gt;SlightHintedSerif&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Serif&lt;/string&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;hinting&quot; mode=&quot;assign&quot;&gt;
+            &lt;bool&gt;true&lt;/bool&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;hintstyle&quot; mode=&quot;assign&quot;&gt;
+            &lt;const&gt;hintslight&lt;/const&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+    
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test name=&quot;family&quot; compare=&quot;eq&quot;&gt;
+            &lt;string&gt;NonHintedSans&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Sans&lt;/string&gt;
+        &lt;/edit&gt;
+        &lt;!-- These deliberately contradict each other. The 'hinting' preference
+             should take priority --&gt;
+        &lt;edit name=&quot;hintstyle&quot; mode=&quot;assign&quot;&gt;
+            &lt;const&gt;hintfull&lt;/const&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;hinting&quot; mode=&quot;assign&quot;&gt;
+            &lt;bool&gt;false&lt;/bool&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+    
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test name=&quot;family&quot; compare=&quot;eq&quot;&gt;
+            &lt;string&gt;AutohintedSerif&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Serif&lt;/string&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;hinting&quot; mode=&quot;assign&quot;&gt;
+            &lt;bool&gt;true&lt;/bool&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;autohint&quot; mode=&quot;assign&quot;&gt;
+            &lt;bool&gt;true&lt;/bool&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;hintstyle&quot; mode=&quot;assign&quot;&gt;
+            &lt;const&gt;hintmedium&lt;/const&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+    
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test name=&quot;family&quot; compare=&quot;eq&quot;&gt;
+            &lt;string&gt;HintedSerif&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Serif&lt;/string&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;hinting&quot; mode=&quot;assign&quot;&gt;
+            &lt;bool&gt;true&lt;/bool&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;autohint&quot; mode=&quot;assign&quot;&gt;
+            &lt;bool&gt;false&lt;/bool&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;hintstyle&quot; mode=&quot;assign&quot;&gt;
+            &lt;const&gt;hintmedium&lt;/const&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+    
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test name=&quot;family&quot; compare=&quot;eq&quot;&gt;
+            &lt;string&gt;FullAndAutoHintedSerif&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Serif&lt;/string&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;hinting&quot; mode=&quot;assign&quot;&gt;
+            &lt;bool&gt;true&lt;/bool&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;autohint&quot; mode=&quot;assign&quot;&gt;
+            &lt;bool&gt;true&lt;/bool&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;hintstyle&quot; mode=&quot;assign&quot;&gt;
+            &lt;const&gt;hintfull&lt;/const&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+    
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test name=&quot;family&quot; compare=&quot;eq&quot;&gt;
+            &lt;string&gt;SubpixelEnabledSans&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Sans&lt;/string&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;rgba&quot; mode=&quot;assign&quot;&gt;
+            &lt;const&gt;rgb&lt;/const&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+    
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test name=&quot;family&quot; compare=&quot;eq&quot;&gt;
+            &lt;string&gt;SubpixelDisabledSans&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;assign&quot;&gt;
+            &lt;string&gt;Liberation Sans&lt;/string&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;rgba&quot; mode=&quot;assign&quot;&gt;
+            &lt;const&gt;none&lt;/const&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+
+    &lt;!-- We need to enable simulated bold to for DejaVu Serif to ensure that we interpret
+         this property correctly in: platform/gtk/fonts/fontconfig-synthetic-bold.html --&gt;
+    &lt;match target=&quot;font&quot;&gt;
+        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+            &lt;string&gt;DejaVu Serif&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;test name=&quot;weight&quot; compare=&quot;less_eq&quot;&gt;
+            &lt;const&gt;medium&lt;/const&gt;
+        &lt;/test&gt;
+        &lt;test target=&quot;pattern&quot; name=&quot;weight&quot; compare=&quot;more&quot;&gt;
+            &lt;const&gt;medium&lt;/const&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;embolden&quot; mode=&quot;assign&quot;&gt;
+            &lt;bool&gt;true&lt;/bool&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;weight&quot; mode=&quot;assign&quot;&gt;
+            &lt;const&gt;bold&lt;/const&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+
+    &lt;!-- We need to enable simulated oblique to for DejaVu Serif to ensure that we interpret
+         this property correctly in: platform/gtk/fonts/fontconfig-synthetic-oblique.html --&gt;
+    &lt;match target=&quot;font&quot;&gt;
+        &lt;test qual=&quot;any&quot; name=&quot;family&quot;&gt;
+            &lt;string&gt;DejaVu Serif&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;test name=&quot;slant&quot;&gt;
+            &lt;const&gt;roman&lt;/const&gt;
+        &lt;/test&gt;
+        &lt;test target=&quot;pattern&quot; name=&quot;slant&quot; compare=&quot;not_eq&quot;&gt;
+            &lt;const&gt;roman&lt;/const&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;matrix&quot; mode=&quot;assign&quot;&gt;
+            &lt;times&gt;
+                &lt;name&gt;matrix&lt;/name&gt;
+                &lt;matrix&gt;&lt;double&gt;1&lt;/double&gt;&lt;double&gt;0.2&lt;/double&gt;
+                    &lt;double&gt;0&lt;/double&gt;&lt;double&gt;1&lt;/double&gt;
+                &lt;/matrix&gt;
+            &lt;/times&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;slant&quot; mode=&quot;assign&quot;&gt;
+            &lt;const&gt;oblique&lt;/const&gt;
+        &lt;/edit&gt;
+        &lt;edit name=&quot;embeddedbitmap&quot; mode=&quot;assign&quot;&gt;
+            &lt;bool&gt;false&lt;/bool&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+
+    &lt;!-- If this font doesn't have a family name we are falling back. The fallback
+         font will certainly be one of the DejaVu fonts that we have in our
+         collection since they have a wide range of characters. Fontconfig might
+         choose DejaVu Sans or DejaVu Serif depending on the system, so we force
+         the use of DejaVu Sans in these situations to maintain consistency. --&gt;
+    &lt;match target=&quot;pattern&quot;&gt;
+        &lt;test qual=&quot;all&quot; name=&quot;family&quot; compare=&quot;eq&quot;&gt;
+            &lt;string&gt;&lt;/string&gt;
+        &lt;/test&gt;
+        &lt;edit name=&quot;family&quot; mode=&quot;append_last&quot;&gt;
+            &lt;string&gt;DejaVu Sans&lt;/string&gt;
+        &lt;/edit&gt;
+    &lt;/match&gt;
+
+    &lt;config&gt;
+        &lt;!-- These are the default Unicode chars that are expected to be blank
+             in fonts. All other blank chars are assumed to be broken and won't
+             appear in the resulting charsets --&gt;
+        &lt;blank&gt;
+            &lt;int&gt;0x0020&lt;/int&gt;    &lt;!-- SPACE --&gt;
+            &lt;int&gt;0x00A0&lt;/int&gt;    &lt;!-- NO-BREAK SPACE --&gt;
+            &lt;int&gt;0x00AD&lt;/int&gt;    &lt;!-- SOFT HYPHEN --&gt;
+            &lt;int&gt;0x034F&lt;/int&gt;    &lt;!-- COMBINING GRAPHEME JOINER --&gt;
+            &lt;int&gt;0x0600&lt;/int&gt;    &lt;!-- ARABIC NUMBER SIGN --&gt;
+            &lt;int&gt;0x0601&lt;/int&gt;    &lt;!-- ARABIC SIGN SANAH --&gt;
+            &lt;int&gt;0x0602&lt;/int&gt;    &lt;!-- ARABIC FOOTNOTE MARKER --&gt;
+            &lt;int&gt;0x0603&lt;/int&gt;    &lt;!-- ARABIC SIGN SAFHA --&gt;
+            &lt;int&gt;0x06DD&lt;/int&gt;    &lt;!-- ARABIC END OF AYAH --&gt;
+            &lt;int&gt;0x070F&lt;/int&gt;    &lt;!-- SYRIAC ABBREVIATION MARK --&gt;
+            &lt;int&gt;0x115F&lt;/int&gt;    &lt;!-- HANGUL CHOSEONG FILLER --&gt;
+            &lt;int&gt;0x1160&lt;/int&gt;    &lt;!-- HANGUL JUNGSEONG FILLER --&gt;
+            &lt;int&gt;0x1680&lt;/int&gt;    &lt;!-- OGHAM SPACE MARK --&gt;
+            &lt;int&gt;0x17B4&lt;/int&gt;    &lt;!-- KHMER VOWEL INHERENT AQ --&gt;
+            &lt;int&gt;0x17B5&lt;/int&gt;    &lt;!-- KHMER VOWEL INHERENT AA --&gt;
+            &lt;int&gt;0x180E&lt;/int&gt;    &lt;!-- MONGOLIAN VOWEL SEPARATOR --&gt;
+            &lt;int&gt;0x2000&lt;/int&gt;    &lt;!-- EN QUAD --&gt;
+            &lt;int&gt;0x2001&lt;/int&gt;    &lt;!-- EM QUAD --&gt;
+            &lt;int&gt;0x2002&lt;/int&gt;    &lt;!-- EN SPACE --&gt;
+            &lt;int&gt;0x2003&lt;/int&gt;    &lt;!-- EM SPACE --&gt;
+            &lt;int&gt;0x2004&lt;/int&gt;    &lt;!-- THREE-PER-EM SPACE --&gt;
+            &lt;int&gt;0x2005&lt;/int&gt;    &lt;!-- FOUR-PER-EM SPACE --&gt;
+            &lt;int&gt;0x2006&lt;/int&gt;    &lt;!-- SIX-PER-EM SPACE --&gt;
+            &lt;int&gt;0x2007&lt;/int&gt;    &lt;!-- FIGURE SPACE --&gt;
+            &lt;int&gt;0x2008&lt;/int&gt;    &lt;!-- PUNCTUATION SPACE --&gt;
+            &lt;int&gt;0x2009&lt;/int&gt;    &lt;!-- THIN SPACE --&gt;
+            &lt;int&gt;0x200A&lt;/int&gt;    &lt;!-- HAIR SPACE --&gt;
+            &lt;int&gt;0x200B&lt;/int&gt;    &lt;!-- ZERO WIDTH SPACE --&gt;
+            &lt;int&gt;0x200C&lt;/int&gt;    &lt;!-- ZERO WIDTH NON-JOINER --&gt;
+            &lt;int&gt;0x200D&lt;/int&gt;    &lt;!-- ZERO WIDTH JOINER --&gt;
+            &lt;int&gt;0x200E&lt;/int&gt;    &lt;!-- LEFT-TO-RIGHT MARK --&gt;
+            &lt;int&gt;0x200F&lt;/int&gt;    &lt;!-- RIGHT-TO-LEFT MARK --&gt;
+            &lt;int&gt;0x2028&lt;/int&gt;    &lt;!-- LINE SEPARATOR --&gt;
+            &lt;int&gt;0x2029&lt;/int&gt;    &lt;!-- PARAGRAPH SEPARATOR --&gt;
+            &lt;int&gt;0x202A&lt;/int&gt;    &lt;!-- LEFT-TO-RIGHT EMBEDDING --&gt;
+            &lt;int&gt;0x202B&lt;/int&gt;    &lt;!-- RIGHT-TO-LEFT EMBEDDING --&gt;
+            &lt;int&gt;0x202C&lt;/int&gt;    &lt;!-- POP DIRECTIONAL FORMATTING --&gt;
+            &lt;int&gt;0x202D&lt;/int&gt;    &lt;!-- LEFT-TO-RIGHT override --&gt;
+            &lt;int&gt;0x202E&lt;/int&gt;    &lt;!-- RIGHT-TO-LEFT override --&gt;
+            &lt;int&gt;0x202F&lt;/int&gt;    &lt;!-- NARROW NO-BREAK SPACE --&gt;
+            &lt;int&gt;0x205F&lt;/int&gt;    &lt;!-- MEDIUM MATHEMATICAL SPACE --&gt;
+            &lt;int&gt;0x2060&lt;/int&gt;    &lt;!-- WORD JOINER --&gt;
+            &lt;int&gt;0x2061&lt;/int&gt;    &lt;!-- FUNCTION APPLICATION --&gt;
+            &lt;int&gt;0x2062&lt;/int&gt;    &lt;!-- INVISIBLE TIMES --&gt;
+            &lt;int&gt;0x2063&lt;/int&gt;    &lt;!-- INVISIBLE SEPARATOR --&gt;
+            &lt;int&gt;0x206A&lt;/int&gt;    &lt;!-- INHIBIT SYMMETRIC SWAPPING --&gt;
+            &lt;int&gt;0x206B&lt;/int&gt;    &lt;!-- ACTIVATE SYMMETRIC SWAPPING --&gt;
+            &lt;int&gt;0x206C&lt;/int&gt;    &lt;!-- INHIBIT ARABIC FORM SHAPING --&gt;
+            &lt;int&gt;0x206D&lt;/int&gt;    &lt;!-- ACTIVATE ARABIC FORM SHAPING --&gt;
+            &lt;int&gt;0x206E&lt;/int&gt;    &lt;!-- NATIONAL DIGIT SHAPES --&gt;
+            &lt;int&gt;0x206F&lt;/int&gt;    &lt;!-- NOMINAL DIGIT SHAPES --&gt;
+            &lt;int&gt;0x3000&lt;/int&gt;    &lt;!-- IDEOGRAPHIC SPACE --&gt;
+            &lt;int&gt;0x3164&lt;/int&gt;    &lt;!-- HANGUL FILLER --&gt;
+            &lt;int&gt;0xFEFF&lt;/int&gt;    &lt;!-- ZERO WIDTH NO-BREAK SPACE --&gt;
+            &lt;int&gt;0xFFA0&lt;/int&gt;    &lt;!-- HALFWIDTH HANGUL FILLER --&gt;
+            &lt;int&gt;0xFFF9&lt;/int&gt;    &lt;!-- INTERLINEAR ANNOTATION ANCHOR --&gt;
+            &lt;int&gt;0xFFFA&lt;/int&gt;    &lt;!-- INTERLINEAR ANNOTATION SEPARATOR --&gt;
+            &lt;int&gt;0xFFFB&lt;/int&gt;    &lt;!-- INTERLINEAR ANNOTATION TERMINATOR --&gt;
+        &lt;/blank&gt;
+    &lt;/config&gt;
+&lt;/fontconfig&gt;
</ins></span></pre>
</div>
</div>

</body>
</html>