<?xml version="1.0"?>
<paste-with-annotations>
  <paste>
    <number>
      <integer>94313</integer>
    </number>
    <user>
      <string>kov</string>
    </user>
    <title>
      <string>javajavajava</string>
    </title>
    <contents>
      <string>From 8c897f01ce32e07dfb51185435739037a877b57c Mon Sep 17 00:00:00 2001
From: Gustavo Noronha Silva &lt;gustavo.noronha@collabora.co.uk&gt;
Date: Mon, 14 Sep 2009 17:57:53 -0300
Subject: [PATCH] Java

---
 JavaScriptCore/wtf/gtk/GOwnPtr.cpp           |    6 +++
 JavaScriptCore/wtf/gtk/GOwnPtr.h             |    2 +
 WebCore/plugins/gtk/PluginPackageGtk.cpp |   17 ++++++-
 WebCore/plugins/gtk/PluginViewGtk.cpp    |   72 ++++++++++++++---------------
 WebKit/gtk/webkit/webkitwebview.cpp      |    2 +
 5 files changed, 59 insertions(+), 40 deletions(-)

diff --git a/JavaScriptCore/wtf/gtk/GOwnPtr.cpp b/JavaScriptCore/wtf/gtk/GOwnPtr.cpp
index 432885f..7b763ec 100644
--- a/JavaScriptCore/wtf/gtk/GOwnPtr.cpp
+++ b/JavaScriptCore/wtf/gtk/GOwnPtr.cpp
@@ -62,4 +62,10 @@ template &lt;&gt; void freeOwnedGPtr&lt;GHashTable&gt;(GHashTable* ptr)
         g_hash_table_unref(ptr);
 }
 
+template &lt;&gt; void freeOwnedGPtr&lt;GFile&gt;(GFile* file)
+{
+    if (file)
+        g_object_unref(file);
+}
+
 } // namespace WTF
diff --git a/JavaScriptCore/wtf/gtk/GOwnPtr.h b/JavaScriptCore/wtf/gtk/GOwnPtr.h
index 4993348..b62ff7c 100644
--- a/JavaScriptCore/wtf/gtk/GOwnPtr.h
+++ b/JavaScriptCore/wtf/gtk/GOwnPtr.h
@@ -26,6 +26,7 @@
 #include &lt;glib.h&gt;
 #include &lt;wtf/Assertions.h&gt;
 #include &lt;wtf/Noncopyable.h&gt;
+#include &lt;gio/gio.h&gt;
 
 namespace WTF {
     template &lt;typename T&gt; inline void freeOwnedGPtr(T* ptr) { g_free(reinterpret_cast&lt;void*&gt;(ptr)); }
@@ -36,6 +37,7 @@ namespace WTF {
     template&lt;&gt; void freeOwnedGPtr&lt;GPatternSpec&gt;(GPatternSpec*);
     template&lt;&gt; void freeOwnedGPtr&lt;GDir&gt;(GDir*);
     template&lt;&gt; void freeOwnedGPtr&lt;GHashTable&gt;(GHashTable*);
+    template&lt;&gt; void freeOwnedGPtr&lt;GFile&gt;(GFile*);
 
     template &lt;typename T&gt; class GOwnPtr : public Noncopyable {
     public:
diff --git a/WebCore/plugins/gtk/PluginPackageGtk.cpp b/WebCore/plugins/gtk/PluginPackageGtk.cpp
index bcbd519..951fa84 100644
--- a/WebCore/plugins/gtk/PluginPackageGtk.cpp
+++ b/WebCore/plugins/gtk/PluginPackageGtk.cpp
@@ -29,14 +29,16 @@
 #include &quot;config.h&quot;
 #include &quot;PluginPackage.h&quot;
 
-#include &lt;stdio.h&gt;
-
 #include &quot;CString.h&quot;
+#include &lt;GOwnPtr.h&gt;
 #include &quot;MIMETypeRegistry.h&quot;
 #include &quot;NotImplemented.h&quot;
 #include &quot;npruntime_impl.h&quot;
 #include &quot;PluginDebug.h&quot;
 
+#include &lt;stdio.h&gt;
+#include &lt;gio/gio.h&gt;
+
 namespace WebCore {
 
 bool PluginPackage::fetchInfo()
@@ -105,7 +107,16 @@ bool PluginPackage::load()
         return true;
     }
 
-    m_module = g_module_open((m_path.utf8()).data(), G_MODULE_BIND_LOCAL);
+    GOwnPtr&lt;gchar&gt; finalPath(g_strdup(m_path.utf8().data()));
+    while (g_file_test(finalPath.get(), G_FILE_TEST_IS_SYMLINK)) {
+        GOwnPtr&lt;GFile&gt; file(g_file_new_for_path(finalPath.get()));
+        GOwnPtr&lt;gchar&gt; linkPath(g_file_read_link(finalPath.get(), NULL));
+
+        GOwnPtr&lt;GFile&gt; resolvedFile(g_file_resolve_relative_path(file.get(), linkPath.get()));
+        finalPath.set(g_file_get_path(resolvedFile.get()));
+    }
+
+    m_module = g_module_open(finalPath.get(), G_MODULE_BIND_LOCAL);
 
     if (!m_module) {
         LOG(Plugins,&quot;Module Load Failed :%s, Error:%s\n&quot;, (m_path.utf8()).data(), g_module_error());
diff --git a/WebCore/plugins/gtk/PluginViewGtk.cpp b/WebCore/plugins/gtk/PluginViewGtk.cpp
index 46b0fc7..89f952c 100644
--- a/WebCore/plugins/gtk/PluginViewGtk.cpp
+++ b/WebCore/plugins/gtk/PluginViewGtk.cpp
@@ -342,57 +342,55 @@ NPError PluginView::getValue(NPNVariable variable, void* value)
             return NPERR_GENERIC_ERROR;
 #endif
 
-#if ENABLE(NETSCAPE_PLUGIN_API)
-        case NPNVWindowNPObject: {
-            if (m_isJavaScriptPaused)
-                return NPERR_GENERIC_ERROR;
+    case NPNVWindowNPObject: {
+        if (m_isJavaScriptPaused)
+            return NPERR_GENERIC_ERROR;
 
-            NPObject* windowScriptObject = m_parentFrame-&gt;script()-&gt;windowScriptNPObject();
+        NPObject* windowScriptObject = m_parentFrame-&gt;script()-&gt;windowScriptNPObject();
 
-            // Return value is expected to be retained, as described here: &lt;http://www.mozilla.org/projects/plugin/npruntime.html&gt;
-            if (windowScriptObject)
-                _NPN_RetainObject(windowScriptObject);
+        // Return value is expected to be retained, as described here: &lt;http://www.mozilla.org/projects/plugin/npruntime.html&gt;
+        if (windowScriptObject)
+            _NPN_RetainObject(windowScriptObject);
 
-            void** v = (void**)value;
-            *v = windowScriptObject;
-            
-            return NPERR_NO_ERROR;
-        }
+        void** v = (void**)value;
+        *v = windowScriptObject;
+        
+        return NPERR_NO_ERROR;
+    }
 
-        case NPNVPluginElementNPObject: {
-            if (m_isJavaScriptPaused)
-                return NPERR_GENERIC_ERROR;
+    case NPNVPluginElementNPObject: {
+        if (m_isJavaScriptPaused)
+            return NPERR_GENERIC_ERROR;
 
-            NPObject* pluginScriptObject = 0;
+        NPObject* pluginScriptObject = 0;
 
-            if (m_element-&gt;hasTagName(appletTag) || m_element-&gt;hasTagName(embedTag) || m_element-&gt;hasTagName(objectTag))
-                pluginScriptObject = static_cast&lt;HTMLPlugInElement*&gt;(m_element)-&gt;getNPObject();
+        if (m_element-&gt;hasTagName(appletTag) || m_element-&gt;hasTagName(embedTag) || m_element-&gt;hasTagName(objectTag))
+            pluginScriptObject = static_cast&lt;HTMLPlugInElement*&gt;(m_element)-&gt;getNPObject();
 
-            // Return value is expected to be retained, as described here: &lt;http://www.mozilla.org/projects/plugin/npruntime.html&gt;
-            if (pluginScriptObject)
-                _NPN_RetainObject(pluginScriptObject);
+        // Return value is expected to be retained, as described here: &lt;http://www.mozilla.org/projects/plugin/npruntime.html&gt;
+        if (pluginScriptObject)
+            _NPN_RetainObject(pluginScriptObject);
 
-            void** v = (void**)value;
-            *v = pluginScriptObject;
+        void** v = (void**)value;
+        *v = pluginScriptObject;
 
-            return NPERR_NO_ERROR;
-        }
-#endif
+        return NPERR_NO_ERROR;
+    }
 
-        case NPNVnetscapeWindow: {
+    case NPNVnetscapeWindow: {
 #if defined(XP_UNIX)
-            void* w = reinterpret_cast&lt;void*&gt;(value);
-            *((XID *)w) = GDK_WINDOW_XWINDOW(m_parentFrame-&gt;view()-&gt;hostWindow()-&gt;platformWindow()-&gt;window);
+        void* w = reinterpret_cast&lt;void*&gt;(value);
+        *((XID *)w) = GDK_WINDOW_XWINDOW(m_parentFrame-&gt;view()-&gt;hostWindow()-&gt;platformWindow()-&gt;window);
 #endif
-#ifdef GDK_WINDOWING_WIN32
-            HGDIOBJ* w = reinterpret_cast&lt;HGDIOBJ*&gt;(value);
-            *w = GDK_WINDOW_HWND(m_parentFrame-&gt;view()-&gt;hostWindow()-&gt;platformWindow()-&gt;window);
+#if defined(GDK_WINDOWING_WIN32)
+        HGDIOBJ* w = reinterpret_cast&lt;HGDIOBJ*&gt;(value);
+        *w = GDK_WINDOW_HWND(m_parentFrame-&gt;view()-&gt;hostWindow()-&gt;platformWindow()-&gt;window);
 #endif
-            return NPERR_NO_ERROR;
-        }
+        return NPERR_NO_ERROR;
+     }
 
-        default:
-            return getValueStatic(variable, value);
+    default:
+        return getValueStatic(variable, value);
     }
 }
 
diff --git a/WebKit/gtk/webkit/webkitwebview.cpp b/WebKit/gtk/webkit/webkitwebview.cpp
index 0554ea1..4e91d1a 100644
--- a/WebKit/gtk/webkit/webkitwebview.cpp
+++ b/WebKit/gtk/webkit/webkitwebview.cpp
@@ -2422,6 +2422,8 @@ static void webkit_web_view_update_settings(WebKitWebView* webView)
     settings-&gt;setEditingBehavior(core(editingBehavior));
     settings-&gt;setAllowUniversalAccessFromFileURLs(enableUniversalAccessFromFileURI);
 
+    settings-&gt;setJavaEnabled(true);
+
     g_free(defaultEncoding);
     g_free(cursiveFontFamily);
     g_free(defaultFontFamily);
-- 
1.6.6.1
</string>
    </contents>
    <universal-time>
      <integer>3474214928</integer>
    </universal-time>
    <channel>
      <string>#webkit-gtk</string>
    </channel>
    <colorization-mode>
      <string>WebKit (text or diff)</string>
    </colorization-mode>
    <maybe-spam>
      <null/>
    </maybe-spam>
    <is-unicode>
      <keyword>TRUE</keyword>
    </is-unicode>
    <deletion-requested>
      <null/>
    </deletion-requested>
    <deletion-requested-email>
      <null/>
    </deletion-requested-email>
    <expiration-time>
      <null/>
    </expiration-time>
  </paste>
</paste-with-annotations>
