rpms/xulrunner/OLPC-3 xulrunner-olpc-no-native-theme.patch, NONE, 1.1 xulrunner-olpc-perms.patch, NONE, 1.1 xulrunner-olpc-pre-build.patch, NONE, 1.1 xulrunner-olpc-pre-dpi.patch, NONE, 1.1 xulrunner-olpc-xds.patch, NONE, 1.1 xulrunner.spec, 1.129, 1.130

Simon Schampijer (erikos) fedora-extras-commits at redhat.com
Sat Jul 12 21:29:46 UTC 2008


Author: erikos

Update of /cvs/pkgs/rpms/xulrunner/OLPC-3
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv10271

Modified Files:
	xulrunner.spec 
Added Files:
	xulrunner-olpc-no-native-theme.patch 
	xulrunner-olpc-perms.patch xulrunner-olpc-pre-build.patch 
	xulrunner-olpc-pre-dpi.patch xulrunner-olpc-xds.patch 
Log Message:
* Sat Jul 12 2008 Simon Schampijer <simon at laptop.org> - 1.9-1.2
- add the OLPC specific patches



xulrunner-olpc-no-native-theme.patch:

--- NEW FILE xulrunner-olpc-no-native-theme.patch ---
--- /tmp/nsNativeThemeGTK.cpp	2008-04-07 12:17:50.000000000 +0200
+++ widget/src/gtk2/nsNativeThemeGTK.cpp	2008-04-07 12:26:13.000000000 +0200
@@ -1273,93 +1273,18 @@
     return PR_FALSE;
 
   switch (aWidgetType) {
-  case NS_THEME_BUTTON:
-  case NS_THEME_BUTTON_FOCUS:
-  case NS_THEME_RADIO:
-  case NS_THEME_RADIO_SMALL:
-  case NS_THEME_CHECKBOX:
-  case NS_THEME_CHECKBOX_SMALL:
-  case NS_THEME_TOOLBOX: // N/A
-  case NS_THEME_TOOLBAR:
-  case NS_THEME_TOOLBAR_BUTTON:
-  case NS_THEME_TOOLBAR_DUAL_BUTTON: // so we can override the border with 0
-  case NS_THEME_TOOLBAR_BUTTON_DROPDOWN:
-  case NS_THEME_TOOLBAR_SEPARATOR:
-  case NS_THEME_TOOLBAR_GRIPPER:
-  case NS_THEME_STATUSBAR:
-  case NS_THEME_STATUSBAR_PANEL:
-  case NS_THEME_STATUSBAR_RESIZER_PANEL:
-  case NS_THEME_RESIZER:
-  case NS_THEME_LISTBOX:
-    // case NS_THEME_LISTBOX_LISTITEM:
-  case NS_THEME_TREEVIEW:
-    // case NS_THEME_TREEVIEW_TREEITEM:
-  case NS_THEME_TREEVIEW_TWISTY:
-    // case NS_THEME_TREEVIEW_LINE:
-    // case NS_THEME_TREEVIEW_HEADER:
-  case NS_THEME_TREEVIEW_HEADER_CELL:
-  case NS_THEME_TREEVIEW_HEADER_SORTARROW:
-  case NS_THEME_TREEVIEW_TWISTY_OPEN:
-    case NS_THEME_PROGRESSBAR:
-    case NS_THEME_PROGRESSBAR_CHUNK:
-    case NS_THEME_PROGRESSBAR_VERTICAL:
-    case NS_THEME_PROGRESSBAR_CHUNK_VERTICAL:
-    case NS_THEME_TAB:
-    // case NS_THEME_TAB_PANEL:
-    case NS_THEME_TAB_PANELS:
-    case NS_THEME_TAB_SCROLLARROW_BACK:
-    case NS_THEME_TAB_SCROLLARROW_FORWARD:
-  case NS_THEME_TOOLTIP:
-  case NS_THEME_SPINNER:
-  case NS_THEME_SPINNER_UP_BUTTON:
-  case NS_THEME_SPINNER_DOWN_BUTTON:
-  case NS_THEME_SPINNER_TEXTFIELD:
-    // case NS_THEME_SCROLLBAR:  (n/a for gtk)
-    // case NS_THEME_SCROLLBAR_SMALL: (n/a for gtk)
   case NS_THEME_SCROLLBAR_BUTTON_UP:
   case NS_THEME_SCROLLBAR_BUTTON_DOWN:
   case NS_THEME_SCROLLBAR_BUTTON_LEFT:
-  case NS_THEME_SCROLLBAR_BUTTON_RIGHT:
-  case NS_THEME_SCROLLBAR_TRACK_HORIZONTAL:
   case NS_THEME_SCROLLBAR_TRACK_VERTICAL:
   case NS_THEME_SCROLLBAR_THUMB_HORIZONTAL:
   case NS_THEME_SCROLLBAR_THUMB_VERTICAL:
-    // case NS_THEME_SCROLLBAR_GRIPPER_HORIZONTAL:  (n/a for gtk)
-    // case NS_THEME_SCROLLBAR_GRIPPER_VERTICAL:  (n/a for gtk)
-  case NS_THEME_TEXTFIELD:
-  case NS_THEME_TEXTFIELD_MULTILINE:
-    // case NS_THEME_TEXTFIELD_CARET:
-  case NS_THEME_DROPDOWN_TEXTFIELD:
-  case NS_THEME_SCALE_HORIZONTAL:
-  case NS_THEME_SCALE_THUMB_HORIZONTAL:
-  case NS_THEME_SCALE_VERTICAL:
-  case NS_THEME_SCALE_THUMB_VERTICAL:
-    // case NS_THEME_SCALE_THUMB_START:
-    // case NS_THEME_SCALE_THUMB_END:
-    // case NS_THEME_SCALE_TICK:
-  case NS_THEME_CHECKBOX_CONTAINER:
-  case NS_THEME_RADIO_CONTAINER:
-  case NS_THEME_CHECKBOX_LABEL:
-  case NS_THEME_RADIO_LABEL:
-  case NS_THEME_MENUBAR:
-  case NS_THEME_MENUPOPUP:
-  case NS_THEME_MENUITEM:
-  case NS_THEME_MENUARROW:
-  case NS_THEME_MENUSEPARATOR:
-  case NS_THEME_CHECKMENUITEM:
-  case NS_THEME_RADIOMENUITEM:
-  case NS_THEME_SPLITTER:
-  case NS_THEME_WINDOW:
-  case NS_THEME_DIALOG:
-  case NS_THEME_DROPDOWN:
-  case NS_THEME_DROPDOWN_TEXT:
     return !IsWidgetStyled(aPresContext, aFrame, aWidgetType);
-
-  case NS_THEME_DROPDOWN_BUTTON:
+    //case NS_THEME_DROPDOWN_BUTTON:
     // "Native" dropdown buttons cause padding and margin problems, but only
     // in HTML so allow them in XUL.
-    return (!aFrame || aFrame->GetContent()->IsNodeOfType(nsINode::eXUL)) &&
-           !IsWidgetStyled(aPresContext, aFrame, aWidgetType);
+    //return (!aFrame || aFrame->GetContent()->IsNodeOfType(nsINode::eXUL)) &&
+    //       !IsWidgetStyled(aPresContext, aFrame, aWidgetType);
 
   }
 

xulrunner-olpc-perms.patch:

--- NEW FILE xulrunner-olpc-perms.patch ---
--- modules/plugin/base/src/nsPluginHostImpl.cpp.old	2007-12-22 14:00:39.000000000 +0100
+++ modules/plugin/base/src/nsPluginHostImpl.cpp	2007-12-22 14:01:41.000000000 +0100
@@ -5573,7 +5573,7 @@
   if (NS_FAILED(rv))
     return rv;
 
-  rv = localFile->OpenNSPRFileDesc(PR_WRONLY | PR_CREATE_FILE | PR_TRUNCATE, 0600, &fd);
+  rv = localFile->OpenNSPRFileDesc(PR_WRONLY | PR_CREATE_FILE | PR_TRUNCATE, 0660, &fd);
   if (NS_FAILED(rv))
     return rv;
 
--- modules/libpref/src/nsPrefService.cpp.old	2007-12-22 14:02:25.000000000 +0100
+++ modules/libpref/src/nsPrefService.cpp	2007-12-22 14:02:42.000000000 +0100
@@ -501,7 +501,7 @@
   rv = NS_NewSafeLocalFileOutputStream(getter_AddRefs(outStreamSink),
                                        aFile,
                                        -1,
-                                       0600);
+                                       0660);
   if (NS_FAILED(rv)) 
       return rv;
   rv = NS_NewBufferedOutputStream(getter_AddRefs(outStream), outStreamSink, 4096);
--- security/nss/lib/softoken/legacydb/keydb.c.old	2007-12-22 14:03:34.000000000 +0100
+++ security/nss/lib/softoken/legacydb/keydb.c	2007-12-22 14:04:12.000000000 +0100
@@ -832,7 +832,7 @@
     if (appName) {
 	handle->db = rdbopen( appName, prefix, "key", NO_CREATE, &status);
     } else {
-	handle->db = dbopen( dbname, NO_CREATE, 0600, DB_HASH, 0 );
+	handle->db = dbopen( dbname, NO_CREATE, 0660, DB_HASH, 0 );
     }
     /* if create fails then we lose */
     if ( handle->db == NULL ) {
@@ -853,7 +853,7 @@
      */
     if (appName) {
         NSSLOWKEYDBHandle *updateHandle;
-	updatedb = dbopen( dbname, NO_RDONLY, 0600, DB_HASH, 0 );
+	updatedb = dbopen( dbname, NO_RDONLY, 0660, DB_HASH, 0 );
 	if (!updatedb) {
 	    goto noupdate;
 	}
@@ -892,7 +892,7 @@
      */
     updname = (*namecb)(cbarg, 2);
     if ( updname != NULL ) {
-	handle->updatedb = dbopen( updname, NO_RDONLY, 0600, DB_HASH, 0 );
+	handle->updatedb = dbopen( updname, NO_RDONLY, 0660, DB_HASH, 0 );
         PORT_Free( updname );
 
 	if ( handle->updatedb ) {
@@ -940,7 +940,7 @@
     if (appName) {
 	db = rdbopen( appName, prefix, "key", openflags, NULL);
     } else {
-	db = dbopen( dbname, openflags, 0600, DB_HASH, 0 );
+	db = dbopen( dbname, openflags, 0660, DB_HASH, 0 );
     }
 
     return db;
@@ -2080,7 +2080,7 @@
 	handle->db= 
 	    rdbopen(handle->appname, handle->dbname, "key", NO_CREATE, NULL);
     } else {
-	handle->db = dbopen( handle->dbname, NO_CREATE, 0600, DB_HASH, 0 );
+	handle->db = dbopen( handle->dbname, NO_CREATE, 0660, DB_HASH, 0 );
     }
     if (handle->db == NULL) {
 	/* set an error code */
--- security/nss/lib/softoken/legacydb/pcertdb.c.old	2007-12-22 14:04:53.000000000 +0100
+++ security/nss/lib/softoken/legacydb/pcertdb.c	2007-12-22 14:05:33.000000000 +0100
@@ -3998,7 +3998,7 @@
 
     tmpname = (* namecb)(cbarg, version);	/* get v6 db name */
     if ( tmpname ) {
-	updatedb = dbopen( tmpname, NO_RDONLY, 0600, DB_HASH, 0 );
+	updatedb = dbopen( tmpname, NO_RDONLY, 0660, DB_HASH, 0 );
 	PORT_Free(tmpname);
     }
     return updatedb;
@@ -4016,7 +4016,7 @@
     if (appName) {
 	handle->permCertDB=rdbopen( appName, prefix, "cert", NO_CREATE, &status);
     } else {
-	handle->permCertDB=dbsopen(certdbname, NO_CREATE, 0600, DB_HASH, 0);
+	handle->permCertDB=dbsopen(certdbname, NO_CREATE, 0660, DB_HASH, 0);
     }
 
     /* if create fails then we lose */
@@ -4042,7 +4042,7 @@
     /* rv must already be Success here because of previous if statement */
     /* try to upgrade old db here */
     if (appName &&
-       (updatedb = dbsopen(certdbname, NO_RDONLY, 0600, DB_HASH, 0)) != NULL) {
+       (updatedb = dbsopen(certdbname, NO_RDONLY, 0660, DB_HASH, 0)) != NULL) {
 	rv = UpdateV8DB(handle, updatedb);
     } else if ((updatedb = nsslowcert_openolddb(namecb,cbarg,7)) != NULL) {
 	rv = UpdateV7DB(handle, updatedb);
@@ -4107,7 +4107,7 @@
     if (appName) {
 	handle->permCertDB = rdbopen( appName, prefix, "cert", openflags, NULL);
     } else {
-	handle->permCertDB = dbsopen( certdbname, openflags, 0600, DB_HASH, 0 );
+	handle->permCertDB = dbsopen( certdbname, openflags, 0660, DB_HASH, 0 );
     }
 
     /* check for correct version number */
--- security/nss/lib/softoken/legacydb/pk11db.c	2007-06-13 02:24:57.000000000 +0200
+++ security/nss/lib/softoken/legacydb/pk11db.c.old	2007-12-22 14:06:55.000000000 +0100
@@ -543,7 +543,7 @@
 		PORT_Free(secname);
 		return pkcs11db;
 	    }
-	    updatedb = dbopen(dbName, NO_RDONLY, 0600, DB_HASH, 0);
+	    updatedb = dbopen(dbName, NO_RDONLY, 0660, DB_HASH, 0);
 	    if (updatedb) {
 		db_Copy(pkcs11db,updatedb);
 		(*updatedb->close)(updatedb);
@@ -558,14 +558,14 @@
     }
   
     /* I'm sure we should do more checks here sometime... */
-    pkcs11db = dbopen(dbName, readOnly ? NO_RDONLY : NO_RDWR, 0600, DB_HASH, 0);
+    pkcs11db = dbopen(dbName, readOnly ? NO_RDONLY : NO_RDWR, 0660, DB_HASH, 0);
 
     /* didn't exist? create it */
     if (pkcs11db == NULL) {
 	 if (readOnly) 
 	     return NULL;
 
-	 pkcs11db = dbopen( dbName, NO_CREATE, 0600, DB_HASH, 0 );
+	 pkcs11db = dbopen( dbName, NO_CREATE, 0660, DB_HASH, 0 );
 	 if (pkcs11db) 
 	     (* pkcs11db->sync)(pkcs11db, 0);
     }
--- netwerk/cache/src/nsDiskCacheBlockFile.cpp.old	2007-12-22 14:11:31.000000000 +0100
+++ netwerk/cache/src/nsDiskCacheBlockFile.cpp	2007-12-22 14:11:45.000000000 +0100
@@ -59,7 +59,7 @@
     mBlockSize = blockSize;
     
     // open the file - restricted to user, the data could be confidential
-    nsresult rv = blockFile->OpenNSPRFileDesc(PR_RDWR | PR_CREATE_FILE, 00600, &mFD);
+    nsresult rv = blockFile->OpenNSPRFileDesc(PR_RDWR | PR_CREATE_FILE, 00660, &mFD);
     if (NS_FAILED(rv))  return rv;  // unable to open or create file
     
     // allocate bit map buffer
--- netwerk/cache/src/nsDiskCacheDeviceSQL.cpp.old	2007-12-22 14:37:48.000000000 +0100
+++ netwerk/cache/src/nsDiskCacheDeviceSQL.cpp	2007-12-22 14:38:21.000000000 +0100
@@ -374,7 +374,7 @@
       rv = file->SetNativeLeafName(nsDependentCString(leaf));
       if (NS_FAILED(rv))
         return nsnull;
-      rv = file->Create(nsIFile::NORMAL_FILE_TYPE, 00600);
+      rv = file->Create(nsIFile::NORMAL_FILE_TYPE, 00660);
       if (NS_FAILED(rv) && rv != NS_ERROR_FILE_ALREADY_EXISTS)
         return nsnull;
       if (NS_SUCCEEDED(rv))
@@ -1105,7 +1105,7 @@
   nsCOMPtr<nsIOutputStream> out;
   NS_NewLocalFileOutputStream(getter_AddRefs(out), binding->mDataFile,
                               PR_WRONLY | PR_CREATE_FILE | PR_TRUNCATE,
-                              00600);
+                              00660);
   if (!out)
     return NS_ERROR_UNEXPECTED;
 
--- netwerk/cache/src/nsDiskCacheStreams.cpp.old	2007-12-22 14:37:28.000000000 +0100
+++ netwerk/cache/src/nsDiskCacheStreams.cpp	2007-12-22 14:38:06.000000000 +0100
@@ -666,8 +666,8 @@
                                                   getter_AddRefs(mLocalFile));
     if (NS_FAILED(rv))  return rv;
     
-    // create PRFileDesc for input stream - the 00600 is just for consistency
-    rv = mLocalFile->OpenNSPRFileDesc(flags, 00600, fd);
+    // create PRFileDesc for input stream - the 00660 is just for consistency
+    rv = mLocalFile->OpenNSPRFileDesc(flags, 00660, fd);
     if (NS_FAILED(rv))  return rv;  // unable to open file
 
     return NS_OK;
--- /tmp/sqlite3.c	2008-04-07 14:31:32.000000000 +0200
+++ db/sqlite3/src/sqlite3.c	2008-04-07 14:32:49.000000000 +0200
@@ -15768,7 +15768,7 @@
 ** Default permissions when creating a new file
 */
 #ifndef SQLITE_DEFAULT_FILE_PERMISSIONS
-# define SQLITE_DEFAULT_FILE_PERMISSIONS 0644
+# define SQLITE_DEFAULT_FILE_PERMISSIONS 0664
 #endif
 
 /* 
--- /tmp/nsDiskCacheMap.cpp	2008-04-07 14:27:11.000000000 +0200
+++ netwerk/cache/src/nsDiskCacheMap.cpp	2008-04-07 14:28:43.000000000 +0200
@@ -78,7 +78,7 @@
     NS_ENSURE_SUCCESS(rv, rv);
 
     // open the file - restricted to user, the data could be confidential
-    rv = localFile->OpenNSPRFileDesc(PR_RDWR | PR_CREATE_FILE, 00600, &mMapFD);
+    rv = localFile->OpenNSPRFileDesc(PR_RDWR | PR_CREATE_FILE, 00660, &mMapFD);
     NS_ENSURE_SUCCESS(rv, NS_ERROR_FILE_CORRUPTED);
 
     PRBool cacheFilesExist = CacheFilesExist();
@@ -676,7 +676,7 @@
 
         PRFileDesc * fd = nsnull;
         // open the file - restricted to user, the data could be confidential
-        rv = file->OpenNSPRFileDesc(PR_RDONLY, 00600, &fd);
+        rv = file->OpenNSPRFileDesc(PR_RDONLY, 00660, &fd);
         NS_ENSURE_SUCCESS(rv, nsnull);
         
         PRInt32 fileSize = PR_Available(fd);
@@ -826,8 +826,8 @@
         // open the file
         PRFileDesc * fd;
         // open the file - restricted to user, the data could be confidential
-        rv = localFile->OpenNSPRFileDesc(PR_RDWR | PR_TRUNCATE | PR_CREATE_FILE, 00600, &fd);
+        rv = localFile->OpenNSPRFileDesc(PR_RDWR | PR_TRUNCATE | PR_CREATE_FILE, 00660, &fd);
         NS_ENSURE_SUCCESS(rv, rv);
 
         // write the file
 

xulrunner-olpc-pre-build.patch:

--- NEW FILE xulrunner-olpc-pre-build.patch ---
--- /tmp/Makefile.in    2008-04-07 13:55:44.000000000 +0200
+++ extensions/python/dom/src/Makefile.in       2008-04-07 13:56:27.000000000 +0200
@@ -22,7 +22,7 @@
 # We always need the Python and pyxpcom includes and libs.
 LOCAL_INCLUDES = $(MOZ_PYTHON_INCLUDES)
 EXTRA_LIBS += $(MOZ_PYTHON_LIBS) \
-              $(call EXPAND_LIBNAME_PATH,pyxpcom,$(DIST)/lib) \
+              $(DIST)/lib/$(DLL_PREFIX)pyxpcom$(DLL_SUFFIX) \
               $(NULL)
 
 # In the shorter term we need JS too.
Index: config/rules.mk
===================================================================
RCS file: /cvsroot/mozilla/config/rules.mk,v
retrieving revision 3.554
diff -u -r3.554 rules.mk
--- config/rules.mk	14 May 2007 14:21:44 -0000	3.554
+++ config/rules.mk	21 May 2007 00:41:20 -0000
@@ -775,6 +775,12 @@
 install:: $(SDK_HEADERS)
 	$(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(includedir)/$(MODULE)
 endif
+
+ifneq (,$(SDK_LIBRARY))
+install:: $(SDK_LIBRARY)
+	$(SYSINSTALL) $(IFLAGS1) $^ $(DESTDIR)$(mozappdir)
+endif
+
 endif
 
 install:: $(SHARED_LIBRARY) $(IMPORT_LIBRARY) $(LIBRARY) $(PROGRAM) $(SIMPLE_PROGRAMS) $(JAVA_LIBRARY)
--- extensions/python/xpcom/src/module/Makefile.in.orig	2007-05-28 20:48:26.000000000 +0200
+++ extensions/python/xpcom/src/module/Makefile.in	2007-05-28 20:49:03.000000000 +0200
@@ -95,8 +95,8 @@
 
 install::
 ifneq ($(OS_ARCH),WINNT)
-	$(SYSINSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(DISTDIR)$(pyexecdir)/xpcom
-	mv $(DISTDIR)$(pyexecdir)/xpcom/$(SHARED_LIBRARY) $(DISTDIR)$(pyexecdir)/xpcom/_xpcom$(MOZ_PYTHON_DLL_SUFFIX)
+	$(SYSINSTALL) $(IFLAGS2) $(SHARED_LIBRARY) $(DESTDIR)$(pyexecdir)/xpcom
+	mv $(DESTDIR)$(pyexecdir)/xpcom/$(SHARED_LIBRARY) $(DESTDIR)$(pyexecdir)/xpcom/_xpcom$(MOZ_PYTHON_DLL_SUFFIX)
 endif
 
 clobber::
--- extensions/python/xpcom/Makefile.in.orig	2007-05-29 10:17:10.000000000 +0200
+++ extensions/python/xpcom/Makefile.in	2007-05-29 10:17:22.000000000 +0200
@@ -97,9 +97,9 @@
 	$(INSTALL) $(PYSRCS_XPCOMTOOLS) $(DIST)/bin/python/xpcom/tools
 
 install::
-	$(SYSINSTALL) $(IFLAGS1) $(PYSRCS_XPCOM) $(DISTDIR)$(pyexecdir)/xpcom
-	$(SYSINSTALL) $(IFLAGS1) $(PYSRCS_XPCOMCLIENT) $(DISTDIR)$(pyexecdir)/xpcom/client
-	$(SYSINSTALL) $(IFLAGS1) $(PYSRCS_XPCOMSERVER) $(DISTDIR)$(pyexecdir)/xpcom/server
+	$(SYSINSTALL) $(IFLAGS1) $(PYSRCS_XPCOM) $(DESTDIR)$(pyexecdir)/xpcom
+	$(SYSINSTALL) $(IFLAGS1) $(PYSRCS_XPCOMCLIENT) $(DESTDIR)$(pyexecdir)/xpcom/client
+	$(SYSINSTALL) $(IFLAGS1) $(PYSRCS_XPCOMSERVER) $(DESTDIR)$(pyexecdir)/xpcom/server
 
 clobber::
 	rm -rf $(DIST)/bin/python/xpcom
Index: extensions/python/dom/test/pyxultest/application.ini
===================================================================
RCS file: /cvsroot/mozilla/extensions/python/dom/test/pyxultest/application.ini,v
retrieving revision 1.2
diff -u -r1.2 application.ini
--- extensions/python/dom/test/pyxultest/application.ini	29 Apr 2006 01:56:36 -0000	1.2
+++ extensions/python/dom/test/pyxultest/application.ini	21 Aug 2007 22:36:44 -0000
@@ -15,7 +15,7 @@
 
 ; This field specifies your application's build ID (timestamp).  This field is
 ; required.
-BuildID=@BUILD_ID@
+BuildID=20070625
 
 ; This field specifies a compact copyright notice for your application.  This
 ; field is optional.

xulrunner-olpc-pre-dpi.patch:

--- NEW FILE xulrunner-olpc-pre-dpi.patch ---
Index: gfx/src/thebes/nsThebesDeviceContext.cpp
===================================================================
RCS file: /cvsroot/mozilla/gfx/src/thebes/nsThebesDeviceContext.cpp,v
retrieving revision 1.54
diff -u -r1.54 nsThebesDeviceContext.cpp
--- gfx/src/thebes/nsThebesDeviceContext.cpp	19 Mar 2007 23:16:15 -0000	1.54
+++ gfx/src/thebes/nsThebesDeviceContext.cpp	22 Mar 2007 15:10:19 -0000
@@ -228,6 +228,7 @@
 
     NS_ASSERTION(dpi != -1, "no dpi set");
 
+    dotsArePixels = PR_FALSE;
     if (dotsArePixels) {
         // First figure out the closest multiple of 96, which is the number of
         // dev pixels per CSS pixel.  Then, divide that into AppUnitsPerCSSPixel()

xulrunner-olpc-xds.patch:

--- NEW FILE xulrunner-olpc-xds.patch ---
Index: content/base/src/nsContentAreaDragDrop.cpp
===================================================================
RCS file: /cvsroot/mozilla/content/base/src/nsContentAreaDragDrop.cpp,v
retrieving revision 1.69
diff -u -r1.69 nsContentAreaDragDrop.cpp
--- content/base/src/nsContentAreaDragDrop.cpp	8 Jul 2007 07:08:07 -0000	1.69
+++ content/base/src/nsContentAreaDragDrop.cpp	16 Sep 2007 20:11:36 -0000
@@ -855,9 +855,6 @@
     return NS_ERROR_NO_INTERFACE;
   }
 
-  rv = inDestFile->CreateUnique(nsIFile::NORMAL_FILE_TYPE, 0600);
-  NS_ENSURE_SUCCESS(rv, rv);
-
   // we rely on the fact that the WPB is refcounted by the channel etc,
   // so we don't keep a ref to it. It will die when finished.
   nsCOMPtr<nsIWebBrowserPersist> persist =
@@ -921,21 +918,32 @@
     if (targetFilename.IsEmpty())
       return NS_ERROR_FAILURE;
 
-    // get the target directory from the kFilePromiseDirectoryMime
-    // flavor
-    nsCOMPtr<nsISupports> dirPrimitive;
+    nsCOMPtr<nsIFile> file;
+
+    nsCOMPtr<nsISupports> fullpathPrimitive;
     dataSize = 0;
-    aTransferable->GetTransferData(kFilePromiseDirectoryMime,
-                                   getter_AddRefs(dirPrimitive), &dataSize);
-    nsCOMPtr<nsILocalFile> destDirectory = do_QueryInterface(dirPrimitive);
-    if (!destDirectory)
-      return NS_ERROR_FAILURE;
+    aTransferable->GetTransferData(kFilePromiseFullpathMime,
+                                   getter_AddRefs(fullpathPrimitive), &dataSize);
+    file = do_QueryInterface(fullpathPrimitive);
+    if (!file) {
+      // get the target directory from the kFilePromiseDirectoryMime
+      // flavor
+      nsCOMPtr<nsISupports> dirPrimitive;
+      dataSize = 0;
+      aTransferable->GetTransferData(kFilePromiseDirectoryMime,
+                                     getter_AddRefs(dirPrimitive), &dataSize);
+      nsCOMPtr<nsILocalFile> destDirectory = do_QueryInterface(dirPrimitive);
+      if (!destDirectory)
+        return NS_ERROR_FAILURE;
 
-    nsCOMPtr<nsIFile> file;
-    rv = destDirectory->Clone(getter_AddRefs(file));
-    NS_ENSURE_SUCCESS(rv, rv);
+      rv = destDirectory->Clone(getter_AddRefs(file));
+      NS_ENSURE_SUCCESS(rv, rv);
 
-    file->Append(targetFilename);
+      file->Append(targetFilename);
+
+      rv = file->CreateUnique(nsIFile::NORMAL_FILE_TYPE, 0600);
+      NS_ENSURE_SUCCESS(rv, rv);
+    }
 
     // now save the file
     rv = SaveURIToFile(sourceURLString, file);
Index: widget/public/nsITransferable.idl
===================================================================
RCS file: /cvsroot/mozilla/widget/public/nsITransferable.idl,v
retrieving revision 1.12
diff -u -r1.12 nsITransferable.idl
--- widget/public/nsITransferable.idl	12 Jun 2006 17:30:22 -0000	1.12
+++ widget/public/nsITransferable.idl	16 Sep 2007 20:12:24 -0000
@@ -70,6 +70,7 @@
 #define kFilePromiseMime            "application/x-moz-file-promise"
 // a synthetic flavor, put into the transferable once we know the destination directory of a file drag
 #define kFilePromiseDirectoryMime   "application/x-moz-file-promise-dir"
+#define kFilePromiseFullpathMime    "application/x-moz-file-promise-fullpath"
 
 %}
 
Index: widget/src/gtk2/nsDragService.cpp
===================================================================
RCS file: /cvsroot/mozilla/widget/src/gtk2/nsDragService.cpp,v
retrieving revision 1.19
diff -u -r1.19 nsDragService.cpp
--- widget/src/gtk2/nsDragService.cpp	7 Aug 2007 15:18:38 -0000	1.19
+++ widget/src/gtk2/nsDragService.cpp	16 Sep 2007 20:12:26 -0000
@@ -60,11 +60,16 @@
 #include "gfxASurface.h"
 #include "nsImageToPixbuf.h"
 
+#define XDS_ATOM   gdk_atom_intern("XdndDirectSave0", FALSE)
+#define TEXT_ATOM  gdk_atom_intern("text/plain", FALSE)
+#define MAX_XDS_ATOM_VAL_LEN 4096
+
 static PRLogModuleInfo *sDragLm = NULL;
 
 static const char gMimeListType[] = "application/x-moz-internal-item-list";
 static const char gMozUrlType[] = "_NETSCAPE_URL";
 static const char gTextUriListType[] = "text/uri-list";
+static const char gDirectSaveType[] = "XdndDirectSave0";
 
 static void
 invisibleSourceDragEnd(GtkWidget        *aWidget,
@@ -79,6 +84,11 @@
                            guint32           aTime,
                            gpointer          aData);
 
+void
+invisibleSourceDragBegin(GtkWidget        *aWidget,
+                         GdkDragContext   *aContext,
+                         gpointer          aData);
+
 nsDragService::nsDragService()
 {
     // We have to destroy the hidden widget before the event loop stops
@@ -96,6 +106,8 @@
     // from our drag source
     gtk_signal_connect(GTK_OBJECT(mHiddenWidget), "drag_data_get",
                        GTK_SIGNAL_FUNC(invisibleSourceDragDataGet), this);
+    gtk_signal_connect(GTK_OBJECT(mHiddenWidget), "drag_begin",
+                       GTK_SIGNAL_FUNC(invisibleSourceDragBegin), this);
     gtk_signal_connect(GTK_OBJECT(mHiddenWidget), "drag_end",
                        GTK_SIGNAL_FUNC(invisibleSourceDragEnd), this);
 
@@ -989,6 +1001,21 @@
                                    id %ld\n", urlTarget->target, urlAtom));
                             targetArray.AppendElement(urlTarget);
                         }
+                        // XdndDirectSave
+                        if (strcmp(flavorStr, kFilePromiseMime) == 0) {
+                            // get the atom for the unicode string
+                            GdkAtom directsaveAtom =
+                              gdk_atom_intern(gDirectSaveType, FALSE);
+                            GtkTargetEntry *directsaveTarget =
+                             (GtkTargetEntry *)g_malloc(sizeof(GtkTargetEntry));
+                            directsaveTarget->target = g_strdup(gDirectSaveType);
+                            directsaveTarget->flags = 0;
+                            directsaveTarget->info = GPOINTER_TO_UINT(directsaveAtom);
+                            PR_LOG(sDragLm, PR_LOG_DEBUG,
+                                   ("automatically adding target %s with \
+                                   id %ld\n", directsaveTarget->target, directsaveAtom));
+                            targetArray.AppendElement(directsaveTarget);
+                        }
                     }
                 } // foreach flavor in item
             } // if valid flavor list
@@ -1024,6 +1051,52 @@
 }
 
 void
+nsDragService::SourceBeginDrag(GdkDragContext *context)
+{
+    nsCOMPtr<nsISupports> genericItem;
+    mSourceDataItems->GetElementAt(0, getter_AddRefs(genericItem));
+    nsCOMPtr<nsITransferable> transferable(do_QueryInterface(genericItem));
+
+    nsresult rv;
+    nsCOMPtr<nsISupportsArray> flavorList;
+    rv = transferable->FlavorsTransferableCanImport(getter_AddRefs(flavorList));
+    NS_ENSURE_SUCCESS(rv,);
+
+    PRUint32 cnt;
+    flavorList->Count(&cnt);
+
+    for (PRUint32 i = 0; i < cnt; ++i) {
+        nsCOMPtr<nsISupports> genericWrapper;
+        flavorList->GetElementAt(i, getter_AddRefs(genericWrapper));
+        nsCOMPtr<nsISupportsCString> currentFlavor(do_QueryInterface(genericWrapper, &rv));
+        NS_ENSURE_SUCCESS(rv,);
+
+        nsXPIDLCString flavorStr;
+        currentFlavor->ToString(getter_Copies(flavorStr));
+        if (strcmp(flavorStr, kFilePromiseDestFilename) == 0) {
+            PRUint32 dataSize = 0;
+            nsCOMPtr<nsISupports> tmp;
+            transferable->GetTransferData(kFilePromiseDestFilename,
+                                          getter_AddRefs(tmp), &dataSize);
+            nsCOMPtr<nsISupportsString> fileName = do_QueryInterface(tmp, &rv);
+            NS_ENSURE_SUCCESS(rv,);
+
+            nsAutoString filenameStr;
+            fileName->GetData(filenameStr);
+
+            nsCString filenameCStr;
+            CopyUTF16toUTF8(filenameStr, filenameCStr);
+
+            gdk_property_change(context->source_window,
+                                XDS_ATOM, TEXT_ATOM,
+                                8, GDK_PROP_MODE_REPLACE,
+                                (guchar *)filenameCStr.get(),
+                                filenameCStr.Length());
+        }
+    }
+}
+
+void
 nsDragService::SourceEndDrag(void)
 {
     // this just releases the list of data items that we provide
@@ -1106,6 +1179,8 @@
                              guint32           aTime)
 {
     PR_LOG(sDragLm, PR_LOG_DEBUG, ("nsDragService::SourceDataGet"));
+    nsresult rv;
+
     GdkAtom atom = (GdkAtom)aInfo;
     nsXPIDLCString mimeFlavor;
     gchar *typeName = 0;
@@ -1134,6 +1209,7 @@
         // we can convert it.
         PRBool needToDoConversionToPlainText = PR_FALSE;
         const char* actualFlavor = mimeFlavor;
+printf("%s\n", actualFlavor);
         if (strcmp(mimeFlavor,kTextMime) == 0) {
             actualFlavor = kUnicodeMime;
             needToDoConversionToPlainText = PR_TRUE;
@@ -1150,16 +1226,60 @@
             actualFlavor = gTextUriListType;
             needToDoConversionToPlainText = PR_TRUE;
         }
+        else if (strcmp(mimeFlavor, gTextUriListType) == 0) {
+            actualFlavor = gTextUriListType;
+            needToDoConversionToPlainText = PR_TRUE;
+        }
+        else if (strcmp(mimeFlavor, gDirectSaveType) == 0) {
+            guchar *propText;
+            gint propLen;
+
+            if (!gdk_property_get(aContext->source_window,
+                                 XDS_ATOM, TEXT_ATOM,
+                                 0, MAX_XDS_ATOM_VAL_LEN,
+                                 FALSE, NULL, NULL, &propLen,
+                                 (unsigned char **)&propText))
+                return;
+
+            /* Zero-terminate the string */
+            propText = (guchar *)g_realloc(propText, propLen + 1);
+            propText[propLen] = '\0';
+
+            char *fullpath;
+            fullpath = g_filename_from_uri((gchar *)propText, NULL, NULL);
+            if (!fullpath)
+                return;
+
+            nsCOMPtr<nsILocalFile> file;
+            rv = NS_NewNativeLocalFile(nsDependentCString(fullpath),
+                                       PR_FALSE, getter_AddRefs(file));
+            NS_ENSURE_SUCCESS(rv,);
+
+            item->SetTransferData(kFilePromiseFullpathMime, file,
+                                  sizeof(nsILocalFile*));
+
+            actualFlavor = kFilePromiseMime;
+
+            g_free(fullpath);
+        }
         else
             actualFlavor = mimeFlavor;
 
         PRUint32 tmpDataLen = 0;
         void    *tmpData = NULL;
-        nsresult rv;
         nsCOMPtr<nsISupports> data;
         rv = item->GetTransferData(actualFlavor,
                                    getter_AddRefs(data),
                                    &tmpDataLen);
+
+        if (strcmp(actualFlavor, kFilePromiseMime) == 0) {
+            const char *result = NS_SUCCEEDED(rv) ? "S" : "F";
+            gtk_selection_data_set(aSelectionData,
+                                   aSelectionData->target,
+                                   8, (guchar *)result, 1);
+            return;
+        }
+
         if (NS_SUCCEEDED(rv)) {
             nsPrimitiveHelpers::CreateDataFromPrimitive (actualFlavor, data,
                                                          &tmpData, tmpDataLen);
@@ -1224,6 +1344,18 @@
 
 /* static */
 void
+invisibleSourceDragBegin(GtkWidget        *aWidget,
+                         GdkDragContext   *aContext,
+                         gpointer          aData)
+{
+    PR_LOG(sDragLm, PR_LOG_DEBUG, ("invisibleDragBegin"));
+    nsDragService *dragService = (nsDragService *)aData;
+    // The drag has ended.  Release the hostages!
+    dragService->SourceBeginDrag(aContext);
+}
+
+/* static */
+void
 invisibleSourceDragEnd(GtkWidget        *aWidget,
                        GdkDragContext   *aContext,
                        gpointer          aData)
Index: widget/src/gtk2/nsDragService.h
===================================================================
RCS file: /cvsroot/mozilla/widget/src/gtk2/nsDragService.h,v
retrieving revision 1.4
diff -u -r1.4 nsDragService.h
--- widget/src/gtk2/nsDragService.h	12 Apr 2007 04:37:40 -0000	1.4
+++ widget/src/gtk2/nsDragService.h	16 Sep 2007 20:12:26 -0000
@@ -101,6 +101,7 @@
     // This is called when the drag started with the invisible widget
     // finishes.  It's called from within the drag service code but from
     // a callback - it needs to be public.
+    void           SourceBeginDrag(GdkDragContext *context);
     void           SourceEndDrag(void);
     void           SourceDataGet(GtkWidget        *widget,
                                  GdkDragContext   *context,


Index: xulrunner.spec
===================================================================
RCS file: /cvs/pkgs/rpms/xulrunner/OLPC-3/xulrunner.spec,v
retrieving revision 1.129
retrieving revision 1.130
diff -u -r1.129 -r1.130
--- xulrunner.spec	23 Jun 2008 22:32:47 -0000	1.129
+++ xulrunner.spec	12 Jul 2008 21:28:42 -0000	1.130
@@ -8,7 +8,7 @@
 Summary:        XUL Runtime for Gecko Applications
 Name:           xulrunner
 Version:        1.9
-Release:        1%{?dist}.1
+Release:        1%{?dist}.2
 URL:            http://www.mozilla.org/projects/xulrunner/
 License:        MPLv1.1 or GPLv2+ or LGPLv2+
 Group:          Applications/Internet
@@ -31,6 +31,12 @@
 Patch26:        mozilla-ps-pdf-simplify-operators.patch
 Patch27:        mozilla-ssl-exception.patch
 
+# OLPC
+Patch201:       xulrunner-olpc-no-native-theme.patch
+Patch202:       xulrunner-olpc-pre-dpi.patch
+Patch203:       xulrunner-olpc-pre-build.patch
+Patch204:       xulrunner-olpc-xds.patch
+Patch205:	xulrunner-olpc-perms.patch
 
 # ---------------------------------------------------
 
@@ -124,6 +130,12 @@
 %patch26 -p1 -b .ps-pdf-simplify-operators
 %patch27 -p1 -b .ssl-exception
 
+%patch201 -p0 -b .no-native-theme
+%patch202 -p0 -b .dpi
+%patch203 -p0 -b .build
+%patch204 -p0 -b .xds
+%patch205 -p0 -b .perms
+
 %{__rm} -f .mozconfig
 %{__cp} %{SOURCE10} .mozconfig
 
@@ -407,6 +419,9 @@
 #---------------------------------------------------------------------
 
 %changelog
+* Sat Jul 12 2008 Simon Schampijer <simon at laptop.org> - 1.9-1.2
+- add the OLPC specific patches
+
 * Mon Jun 23 2008 Dennis Gilmore <dennis at ausil.us> 1.9-1.1
 - us xulrunner-pyxpcom instead of python-xulrunner
 




More information about the fedora-extras-commits mailing list