changeset 1630:d0694a669da3

Adding new plugin cookie related files.
author Deepak Bhole <dbhole@redhat.com>
date Thu, 09 Jul 2009 15:28:30 -0400
parents a50daec5fab4
children 02e02b5a01c0
files plugin/icedtea/sun/applet/PluginCookieInfoRequest.java plugin/icedtea/sun/applet/PluginCookieStore.java
diffstat 2 files changed, 195 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugin/icedtea/sun/applet/PluginCookieInfoRequest.java	Thu Jul 09 15:28:30 2009 -0400
@@ -0,0 +1,122 @@
+/* PluginCookieInfoRequest -- Object representing a request for cookie information from the browser
+   Copyright (C) 2009  Red Hat
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+package sun.applet;
+
+import java.net.HttpCookie;
+import java.net.URI;
+import java.util.ArrayList;
+import java.util.List;
+
+import com.sun.jndi.toolkit.url.UrlUtil;
+
+/**
+ * This class represents a request object for cookie information for a given URI
+ */
+
+public class PluginCookieInfoRequest extends PluginCallRequest {
+
+    List<HttpCookie> cookieObjects = new ArrayList<HttpCookie>();
+
+    public PluginCookieInfoRequest(String message, String returnString) {
+        super(message, returnString);
+    }
+    
+    public void parseReturn(String cookieInfo) {
+
+        // try to parse the proxy information. If things go wrong, do nothing .. 
+        // this will keep internal = null which forces a direct connection
+
+    	PluginDebug.debug ("PluginCookieInfoRequest GOT: " + cookieInfo);
+
+    	String encodedURI = cookieInfo.split(" ")[2];
+    	
+    	// Skip the first 3 components. We are guaranteed 3 components, 
+    	// so no index -1 to worry about
+    	cookieInfo = cookieInfo.substring(cookieInfo.indexOf(' ')+1);
+    	cookieInfo = cookieInfo.substring(cookieInfo.indexOf(' ')+1);
+    	cookieInfo = cookieInfo.substring(cookieInfo.indexOf(' ')+1);
+
+    	URI siteURI;
+    	try
+    	{
+    	    siteURI = new URI(UrlUtil.decode(encodedURI, "UTF-8"));
+    	} catch (Exception e)
+    	{
+    	    e.printStackTrace();
+    	    return;
+    	}
+
+    	if (cookieInfo != null && cookieInfo.length() > 0)
+    	{
+    	    String[] cookies = cookieInfo.split(";");
+
+    	    for (int i = 0; i < cookies.length; i++) 
+    	    {
+    	        ArrayList l = new ArrayList();
+
+    	        String cookie = cookies[i];
+    	        cookie = cookie.trim();
+    	        String cookieName = cookie.substring(0, cookie.indexOf("="));
+    	        String cookieValue = cookie.substring(cookie.indexOf("=")+1);
+
+    	        HttpCookie httpCookieObj = new HttpCookie(cookieName, cookieValue);
+    	        httpCookieObj.setPath(siteURI.getPath());
+    	        httpCookieObj.setVersion(0); // force v0
+
+    	        PluginDebug.debug("Adding cookie info COOKIEN=" + cookieName + " and COOKIEV=" + cookieValue);
+    	        cookieObjects.add(httpCookieObj);
+    	    }
+    	}
+
+        setDone(true);
+    }
+
+    /**
+     * Returns whether the given message is serviceable by this object
+     * 
+     * @param message The message to service
+     * @return boolean indicating if message is serviceable
+     */
+    public boolean serviceable(String message) {
+    	return message.startsWith(returnString);
+    }
+
+    public List<HttpCookie> getObject() {
+    	return this.cookieObjects;
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/plugin/icedtea/sun/applet/PluginCookieStore.java	Thu Jul 09 15:28:30 2009 -0400
@@ -0,0 +1,73 @@
+/* PluginCookieStore -- Storage for cookie information
+   Copyright (C) 2009  Red Hat
+
+This file is part of IcedTea.
+
+IcedTea is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+IcedTea 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
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with IcedTea; see the file COPYING.  If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library.  Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module.  An independent module is a module which is not derived from
+or based on this library.  If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so.  If you do not wish to do so, delete this
+exception statement from your version. */
+
+package sun.applet;
+
+import java.net.HttpCookie;
+import java.net.URI;
+import java.util.List;
+
+import sun.net.www.protocol.http.InMemoryCookieStore;
+
+public class PluginCookieStore extends InMemoryCookieStore 
+{
+    public List<HttpCookie> get(URI uri)
+    {
+        List<HttpCookie> cookies;
+
+        // Try to fetch it from the plugin, but if something goes 
+        // wrong, fall back. Don't crash!
+        try
+        {
+            cookies = (List<HttpCookie>) PluginAppletViewer.requestPluginCookieInfo(uri);
+
+            // If cookies is null, something went wrong. Fall back.
+            if (cookies == null) throw new NullPointerException("Null cookie");
+
+        } catch (Exception e)
+        {
+            PluginDebug.debug("Unable to fetch cookie information from plugin. " +
+            		          "Falling back to default.");
+            e.printStackTrace();
+            cookies = super.get(uri);
+        }
+
+        PluginDebug.debug("Returning cookies " + cookies + " for site: " + uri);
+        
+        return cookies;
+    }
+}