mozilla-kde.patch
changeset 1045 f645c886d36b
parent 1033 51bfdd19b9e9
child 1050 bf0d08380dcf
equal deleted inserted replaced
1044:142a0c92607c 1045:f645c886d36b
     1 # HG changeset patch
     1 # HG changeset patch
     2 # Parent  97234138e3aafe66fc7f17c8f530e7c534af2fc2
     2 # Parent  9cc0c990890e64f69ed068cf1a4534535bcc50a7
     3 Description: Add KDE integration to Firefox (toolkit parts)
     3 Description: Add KDE integration to Firefox (toolkit parts)
     4 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
     4 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
     5 Author: Lubos Lunak <lunak@suse.com>
     5 Author: Lubos Lunak <lunak@suse.com>
     6 Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751
     6 Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751
     7      https://bugzilla.novell.com/show_bug.cgi?id=170055
     7      https://bugzilla.novell.com/show_bug.cgi?id=170055
    25  #endif
    25  #endif
    26  
    26  
    27  using namespace mozilla;
    27  using namespace mozilla;
    28  
    28  
    29  #ifdef DEBUG
    29  #ifdef DEBUG
    30 @@ -4235,25 +4236,37 @@ Preferences::InitInitialObjects()
    30 @@ -3868,25 +3869,37 @@ Preferences::InitInitialObjects()
    31    // application pref files for backwards compatibility.
    31    // application pref files for backwards compatibility.
    32    static const char* specialFiles[] = {
    32    static const char* specialFiles[] = {
    33  #if defined(XP_MACOSX)
    33  #if defined(XP_MACOSX)
    34      "macprefs.js"
    34      "macprefs.js"
    35  #elif defined(XP_WIN)
    35  #elif defined(XP_WIN)
    63      NS_WARNING("Error parsing application default preferences.");
    63      NS_WARNING("Error parsing application default preferences.");
    64    }
    64    }
    65  
    65  
    66    // Load jar:$app/omni.jar!/defaults/preferences/*.js
    66    // Load jar:$app/omni.jar!/defaults/preferences/*.js
    67    // or jar:$gre/omni.jar!/defaults/preferences/*.js.
    67    // or jar:$gre/omni.jar!/defaults/preferences/*.js.
    68 @@ -4302,17 +4315,17 @@ Preferences::InitInitialObjects()
    68 @@ -3935,17 +3948,17 @@ Preferences::InitInitialObjects()
    69        }
    69        }
    70  
    70  
    71        nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
    71        nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
    72        if (!path) {
    72        if (!path) {
    73          continue;
    73          continue;
   151          self.base = base
   151          self.base = base
   152          self.flags = Flags(*flags)
   152          self.flags = Flags(*flags)
   153 diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build
   153 diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build
   154 --- a/toolkit/components/downloads/moz.build
   154 --- a/toolkit/components/downloads/moz.build
   155 +++ b/toolkit/components/downloads/moz.build
   155 +++ b/toolkit/components/downloads/moz.build
   156 @@ -17,9 +17,13 @@ XPIDL_SOURCES += [
   156 @@ -41,10 +41,14 @@ EXTRA_JS_MODULES += [
   157  XPIDL_MODULE = 'downloads'
   157  
   158  
   158  if CONFIG['MOZ_PLACES']:
   159  UNIFIED_SOURCES += [
   159      EXTRA_JS_MODULES += [
   160      'nsDownloadManager.cpp'
   160          'DownloadHistory.jsm',
   161  ]
   161      ]
   162  
   162  
   163  FINAL_LIBRARY = 'xul'
   163  FINAL_LIBRARY = 'xul'
   164  
   164  
   165 +LOCAL_INCLUDES += [
   165 +LOCAL_INCLUDES += [
   166 +    '/toolkit/xre'
   166 +    '/toolkit/xre'
   167 +]
   167 +]
   168 +
   168 +
   169  CXXFLAGS += CONFIG['TK_CFLAGS']
   169  with Files('**'):
       
   170      BUG_COMPONENT = ('Toolkit', 'Download Manager')
   170 diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
   171 diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
   171 --- a/toolkit/content/jar.mn
   172 --- a/toolkit/content/jar.mn
   172 +++ b/toolkit/content/jar.mn
   173 +++ b/toolkit/content/jar.mn
   173 @@ -67,16 +67,18 @@ toolkit.jar:
   174 @@ -69,16 +69,18 @@ toolkit.jar:
   174     content/global/bindings/checkbox.xml        (widgets/checkbox.xml)
   175     content/global/bindings/checkbox.xml        (widgets/checkbox.xml)
   175     content/global/bindings/colorpicker.xml     (widgets/colorpicker.xml)
   176     content/global/bindings/colorpicker.xml     (widgets/colorpicker.xml)
   176     content/global/bindings/datekeeper.js       (widgets/datekeeper.js)
   177     content/global/bindings/datekeeper.js       (widgets/datekeeper.js)
   177     content/global/bindings/datepicker.js       (widgets/datepicker.js)
   178     content/global/bindings/datepicker.js       (widgets/datepicker.js)
   178     content/global/bindings/datetimepopup.xml   (widgets/datetimepopup.xml)
   179     content/global/bindings/datetimepopup.xml   (widgets/datetimepopup.xml)
   191     content/global/bindings/menulist.xml        (widgets/menulist.xml)
   192     content/global/bindings/menulist.xml        (widgets/menulist.xml)
   192 diff --git a/toolkit/content/widgets/dialog-kde.xml b/toolkit/content/widgets/dialog-kde.xml
   193 diff --git a/toolkit/content/widgets/dialog-kde.xml b/toolkit/content/widgets/dialog-kde.xml
   193 new file mode 100644
   194 new file mode 100644
   194 --- /dev/null
   195 --- /dev/null
   195 +++ b/toolkit/content/widgets/dialog-kde.xml
   196 +++ b/toolkit/content/widgets/dialog-kde.xml
   196 @@ -0,0 +1,477 @@
   197 @@ -0,0 +1,478 @@
   197 +<?xml version="1.0"?>
   198 +<?xml version="1.0"?>
   198 +<!-- This Source Code Form is subject to the terms of the Mozilla Public
   199 +<!-- This Source Code Form is subject to the terms of the Mozilla Public
   199 +   - License, v. 2.0. If a copy of the MPL was not distributed with this
   200 +   - License, v. 2.0. If a copy of the MPL was not distributed with this
   200 +   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
   201 +   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
   201 +
   202 +
   207 +<bindings id="dialogBindings"
   208 +<bindings id="dialogBindings"
   208 +          xmlns="http://www.mozilla.org/xbl"
   209 +          xmlns="http://www.mozilla.org/xbl"
   209 +          xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
   210 +          xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
   210 +          xmlns:xbl="http://www.mozilla.org/xbl">
   211 +          xmlns:xbl="http://www.mozilla.org/xbl">
   211 +
   212 +
   212 +  <binding id="dialog" extends="chrome://global/content/bindings/general.xml#root-element">
   213 +  <binding id="dialog">
   213 +    <resources>
   214 +    <resources>
   214 +      <stylesheet src="chrome://global/skin/dialog.css"/>
   215 +      <stylesheet src="chrome://global/skin/dialog.css"/>
   215 +    </resources>
   216 +    </resources>
   216 +    <content>
   217 +    <content>
   217 +      <xul:vbox class="box-inherit dialog-content-box" flex="1">
   218 +      <xul:vbox class="box-inherit dialog-content-box" flex="1">
   446 +        <getter>
   447 +        <getter>
   447 +        <![CDATA[
   448 +        <![CDATA[
   448 +          if (!this._mStrBundle) {
   449 +          if (!this._mStrBundle) {
   449 +            // need to create string bundle manually instead of using <xul:stringbundle/>
   450 +            // need to create string bundle manually instead of using <xul:stringbundle/>
   450 +            // see bug 63370 for details
   451 +            // see bug 63370 for details
   451 +            this._mStrBundle = Components.classes["@mozilla.org/intl/stringbundle;1"]
   452 +            this._mStrBundle = Cc["@mozilla.org/intl/stringbundle;1"]
   452 +                                         .getService(Components.interfaces.nsIStringBundleService)
   453 +                                 .getService(Ci.nsIStringBundleService)
   453 +                                         .createBundle("chrome://global/locale/dialog.properties");
   454 +                                 .createBundle("chrome://global/locale/dialog.properties");
   454 +          }
   455 +          }
   455 +          return this._mStrBundle;
   456 +          return this._mStrBundle;
   456 +        ]]></getter>
   457 +        ]]></getter>
   457 +      </property>
   458 +      </property>
   458 +
   459 +
   623 +          // handle any xml attribute event handlers
   624 +          // handle any xml attribute event handlers
   624 +          var handler = this.getAttribute("ondialog" + aDlgType);
   625 +          var handler = this.getAttribute("ondialog" + aDlgType);
   625 +          if (handler != "") {
   626 +          if (handler != "") {
   626 +            var fn = new Function("event", handler);
   627 +            var fn = new Function("event", handler);
   627 +            var returned = fn(event);
   628 +            var returned = fn(event);
       
   629 +            // eslint-disable-next-line mozilla/no-compare-against-boolean-literals
   628 +            if (returned == false)
   630 +            if (returned == false)
   629 +              noCancel = false;
   631 +              noCancel = false;
   630 +          }
   632 +          }
   631 +
   633 +
   632 +          return noCancel;
   634 +          return noCancel;
   661 +      <handler event="keypress" key="." modifiers="meta" phase="capturing" action="this.cancelDialog();"/>
   663 +      <handler event="keypress" key="." modifiers="meta" phase="capturing" action="this.cancelDialog();"/>
   662 +#else
   664 +#else
   663 +      <handler event="focus" phase="capturing">
   665 +      <handler event="focus" phase="capturing">
   664 +        var btn = this.getButton(this.defaultButton);
   666 +        var btn = this.getButton(this.defaultButton);
   665 +        if (btn)
   667 +        if (btn)
   666 +          btn.setAttribute("default", event.originalTarget == btn || !(event.originalTarget instanceof Components.interfaces.nsIDOMXULButtonElement));
   668 +          btn.setAttribute("default", event.originalTarget == btn || !(event.originalTarget instanceof Ci.nsIDOMXULButtonElement));
   667 +      </handler>
   669 +      </handler>
   668 +#endif
   670 +#endif
   669 +    </handlers>
   671 +    </handlers>
   670 +
   672 +
   671 +  </binding>
   673 +  </binding>
   672 +
   674 +
   673 +</bindings>
   675 +</bindings>
   674 diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downloads/nsHelperAppDlg.js
   676 diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downloads/nsHelperAppDlg.js
   675 --- a/toolkit/mozapps/downloads/nsHelperAppDlg.js
   677 --- a/toolkit/mozapps/downloads/nsHelperAppDlg.js
   676 +++ b/toolkit/mozapps/downloads/nsHelperAppDlg.js
   678 +++ b/toolkit/mozapps/downloads/nsHelperAppDlg.js
   677 @@ -626,17 +626,17 @@ nsUnknownContentTypeDialog.prototype = {
   679 @@ -627,17 +627,17 @@ nsUnknownContentTypeDialog.prototype = {
   678        else
   680        else
   679          typeString = mimeInfo.MIMEType;
   681          typeString = mimeInfo.MIMEType;
   680      }
   682      }
   681      // When the length is unknown, contentLength would be -1
   683      // When the length is unknown, contentLength would be -1
   682      if (this.mLauncher.contentLength >= 0) {
   684      if (this.mLauncher.contentLength >= 0) {
   691        type.value = typeString;
   693        type.value = typeString;
   692      }
   694      }
   693    },
   695    },
   694  
   696  
   695    // Returns true if opening the default application makes sense.
   697    // Returns true if opening the default application makes sense.
   696 @@ -800,17 +800,17 @@ nsUnknownContentTypeDialog.prototype = {
   698 @@ -801,17 +801,17 @@ nsUnknownContentTypeDialog.prototype = {
   697        switch (this.dialogElement("openHandler").selectedIndex) {
   699        switch (this.dialogElement("openHandler").selectedIndex) {
   698        case 0:
   700        case 0:
   699          // No app need be specified in this case.
   701          // No app need be specified in this case.
   700          ok = true;
   702          ok = true;
   701          break;
   703          break;
   710  
   712  
   711      // Enable Ok button if ok to press.
   713      // Enable Ok button if ok to press.
   712      this.mDialog.document.documentElement.getButton("accept").disabled = !ok;
   714      this.mDialog.document.documentElement.getButton("accept").disabled = !ok;
   713    },
   715    },
   714  
   716  
   715 @@ -1065,30 +1065,57 @@ nsUnknownContentTypeDialog.prototype = {
   717 @@ -1066,30 +1066,57 @@ nsUnknownContentTypeDialog.prototype = {
   716  
   718  
   717        if (params.handlerApp &&
   719        if (params.handlerApp &&
   718            params.handlerApp.executable &&
   720            params.handlerApp.executable &&
   719            params.handlerApp.executable.isFile()) {
   721            params.handlerApp.executable.isFile()) {
   720          // Remember the file they chose to run.
   722          // Remember the file they chose to run.
   721          this.chosenApp = params.handlerApp;
   723          this.chosenApp = params.handlerApp;
   722        }
   724        }
   723      } else if ("@mozilla.org/applicationchooser;1" in Components.classes) {
   725      } else if ("@mozilla.org/applicationchooser;1" in Cc) {
   724 -      var nsIApplicationChooser = Components.interfaces.nsIApplicationChooser;
   726 -      var nsIApplicationChooser = Ci.nsIApplicationChooser;
   725 -      var appChooser = Components.classes["@mozilla.org/applicationchooser;1"]
   727 -      var appChooser = Cc["@mozilla.org/applicationchooser;1"]
   726 -                                 .createInstance(nsIApplicationChooser);
   728 -                         .createInstance(nsIApplicationChooser);
   727 -      appChooser.init(this.mDialog, this.dialogElement("strings").getString("chooseAppFilePickerTitle"));
   729 -      appChooser.init(this.mDialog, this.dialogElement("strings").getString("chooseAppFilePickerTitle"));
   728 -      var contentTypeDialogObj = this;
   730 -      var contentTypeDialogObj = this;
   729 -      let appChooserCallback = function appChooserCallback_done(aResult) {
   731 -      let appChooserCallback = function appChooserCallback_done(aResult) {
   730 -        if (aResult) {
   732 -        if (aResult) {
   731 -           contentTypeDialogObj.chosenApp = aResult.QueryInterface(Components.interfaces.nsILocalHandlerApp);
   733 -           contentTypeDialogObj.chosenApp = aResult.QueryInterface(Ci.nsILocalHandlerApp);
   732 +      // handle the KDE case which is implemented in the filepicker
   734 +      // handle the KDE case which is implemented in the filepicker
   733 +      // therefore falling back to Gtk2 like behaviour if KDE is running
   735 +      // therefore falling back to Gtk2 like behaviour if KDE is running
   734 +      // FIXME this should be better handled in the nsIApplicationChooser
   736 +      // FIXME this should be better handled in the nsIApplicationChooser
   735 +      // interface
   737 +      // interface
   736 +      var env = Components.classes["@mozilla.org/process/environment;1"]
   738 +      var env = Components.classes["@mozilla.org/process/environment;1"]
   748 +
   750 +
   749 +        if (fp.show() == nsIFilePicker.returnOK && fp.file) {
   751 +        if (fp.show() == nsIFilePicker.returnOK && fp.file) {
   750 +          // Remember the file they chose to run.
   752 +          // Remember the file they chose to run.
   751 +          var localHandlerApp =
   753 +          var localHandlerApp =
   752 +            Components.classes["@mozilla.org/uriloader/local-handler-app;1"].
   754 +            Components.classes["@mozilla.org/uriloader/local-handler-app;1"].
   753 +                       createInstance(Components.interfaces.nsILocalHandlerApp);
   755 +                      createInstance(Components.interfaces.nsILocalHandlerApp);
   754 +          localHandlerApp.executable = fp.file;
   756 +          localHandlerApp.executable = fp.file;
   755 +          this.chosenApp = localHandlerApp;
   757 +          this.chosenApp = localHandlerApp;
   756          }
   758          }
   757 -        contentTypeDialogObj.finishChooseApp();
   759 -        contentTypeDialogObj.finishChooseApp();
   758 -      };
   760 -      };
   759 -      appChooser.open(this.mLauncher.MIMEInfo.MIMEType, appChooserCallback);
   761 -      appChooser.open(this.mLauncher.MIMEInfo.MIMEType, appChooserCallback);
   760 -      // The finishChooseApp is called from appChooserCallback
   762 -      // The finishChooseApp is called from appChooserCallback
   761 -      return;
   763 -      return;
   762 +      } else {
   764 +      } else {
   763 +        var nsIApplicationChooser = Components.interfaces.nsIApplicationChooser;
   765 +        var nsIApplicationChooser = Ci.nsIApplicationChooser;
   764 +        var appChooser = Components.classes["@mozilla.org/applicationchooser;1"]
   766 +        var appChooser = Cc["@mozilla.org/applicationchooser;1"]
   765 +                                   .createInstance(nsIApplicationChooser);
   767 +                           .createInstance(nsIApplicationChooser);
   766 +        appChooser.init(this.mDialog, this.dialogElement("strings").getString("chooseAppFilePickerTitle"));
   768 +        appChooser.init(this.mDialog, this.dialogElement("strings").getString("chooseAppFilePickerTitle"));
   767 +        var contentTypeDialogObj = this;
   769 +        var contentTypeDialogObj = this;
   768 +        let appChooserCallback = function appChooserCallback_done(aResult) {
   770 +        let appChooserCallback = function appChooserCallback_done(aResult) {
   769 +          if (aResult) {
   771 +          if (aResult) {
   770 +             contentTypeDialogObj.chosenApp = aResult.QueryInterface(Components.interfaces.nsILocalHandlerApp);
   772 +             contentTypeDialogObj.chosenApp = aResult.QueryInterface(Ci.nsILocalHandlerApp);
   771 +          }
   773 +          }
   772 +          contentTypeDialogObj.finishChooseApp();
   774 +          contentTypeDialogObj.finishChooseApp();
   773 +        };
   775 +        };
   774 +        appChooser.open(this.mLauncher.MIMEInfo.MIMEType, appChooserCallback);
   776 +        appChooser.open(this.mLauncher.MIMEInfo.MIMEType, appChooserCallback);
   775 +        // The finishChooseApp is called from appChooserCallback
   777 +        // The finishChooseApp is called from appChooserCallback
   776 +        return;
   778 +        return;
   777 +      }
   779 +      }
   778      } else {
   780      } else {
   779        var nsIFilePicker = Components.interfaces.nsIFilePicker;
   781        var nsIFilePicker = Ci.nsIFilePicker;
   780        var fp = Components.classes["@mozilla.org/filepicker;1"]
   782        var fp = Cc["@mozilla.org/filepicker;1"]
   781                           .createInstance(nsIFilePicker);
   783                   .createInstance(nsIFilePicker);
   782        fp.init(this.mDialog,
   784        fp.init(this.mDialog,
   783                this.dialogElement("strings").getString("chooseAppFilePickerTitle"),
   785                this.dialogElement("strings").getString("chooseAppFilePickerTitle"),
   784                nsIFilePicker.modeOpen);
   786                nsIFilePicker.modeOpen);
   785  
   787  
   786 diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
   788 diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
   878 +}
   880 +}
   879 +
   881 +
   880 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
   882 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
   881 --- a/toolkit/xre/moz.build
   883 --- a/toolkit/xre/moz.build
   882 +++ b/toolkit/xre/moz.build
   884 +++ b/toolkit/xre/moz.build
   883 @@ -61,17 +61,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
   885 @@ -65,17 +65,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
   884          '../components/printingui',
   886          '../components/printingui',
   885      ]
   887      ]
   886  elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
   888  elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
   887      UNIFIED_SOURCES += [
   889      UNIFIED_SOURCES += [
   888          'nsNativeAppSupportDefault.cpp',
   890          'nsNativeAppSupportDefault.cpp',
  1877    GtkWindow *parent_widget =
  1879    GtkWindow *parent_widget =
  1878      GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
  1880      GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
  1879  
  1881  
  1880    GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
  1882    GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
  1881  
  1883  
  1882 @@ -603,8 +630,233 @@ nsFilePicker::Done(GtkWidget* file_choos
  1884 @@ -608,8 +635,233 @@ nsFilePicker::Done(GtkWidget* file_choos
  1883    if (mCallback) {
  1885    if (mCallback) {
  1884      mCallback->Done(result);
  1886      mCallback->Done(result);
  1885      mCallback = nullptr;
  1887      mCallback = nullptr;
  1886    } else {
  1888    } else {
  1887      mResult = result;
  1889      mResult = result;
  2156  struct ManifestDirective
  2158  struct ManifestDirective
  2157  {
  2159  {
  2158    const char* directive;
  2160    const char* directive;
  2159    int argc;
  2161    int argc;
  2160  
  2162  
  2161 @@ -466,16 +467,17 @@ ParseManifest(NSLocationType aType, File
  2163 @@ -444,16 +445,17 @@ ParseManifest(NSLocationType aType, File
  2162    NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled");
  2164    NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled");
  2163    NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired");
  2165    NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired");
  2164    NS_NAMED_LITERAL_STRING(kApplication, "application");
  2166    NS_NAMED_LITERAL_STRING(kApplication, "application");
  2165    NS_NAMED_LITERAL_STRING(kAppVersion, "appversion");
  2167    NS_NAMED_LITERAL_STRING(kAppVersion, "appversion");
  2166    NS_NAMED_LITERAL_STRING(kGeckoVersion, "platformversion");
  2168    NS_NAMED_LITERAL_STRING(kGeckoVersion, "platformversion");
  2174  #endif
  2176  #endif
  2175  
  2177  
  2176    NS_NAMED_LITERAL_STRING(kMain, "main");
  2178    NS_NAMED_LITERAL_STRING(kMain, "main");
  2177    NS_NAMED_LITERAL_STRING(kContent, "content");
  2179    NS_NAMED_LITERAL_STRING(kContent, "content");
  2178  
  2180  
  2179 @@ -526,44 +528,49 @@ ParseManifest(NSLocationType aType, File
  2181 @@ -499,44 +501,49 @@ ParseManifest(NSLocationType aType, File
  2180          CopyUTF8toUTF16(s, abi);
  2182          CopyUTF8toUTF16(s, abi);
  2181          abi.Insert(char16_t('_'), 0);
  2183          abi.Insert(char16_t('_'), 0);
  2182          abi.Insert(osTarget, 0);
  2184          abi.Insert(osTarget, 0);
  2183        }
  2185        }
  2184      }
  2186      }
  2224      process = kContent;
  2226      process = kContent;
  2225    } else {
  2227    } else {
  2226      process = kMain;
  2228      process = kMain;
  2227    }
  2229    }
  2228  
  2230  
  2229 @@ -666,25 +673,27 @@ ParseManifest(NSLocationType aType, File
  2231 @@ -638,25 +645,27 @@ ParseManifest(NSLocationType aType, File
  2230      TriState stOsVersion = eUnspecified;
  2232      TriState stOsVersion = eUnspecified;
  2231      TriState stOs = eUnspecified;
  2233      TriState stOs = eUnspecified;
  2232      TriState stABI = eUnspecified;
  2234      TriState stABI = eUnspecified;
  2233      TriState stProcess = eUnspecified;
  2235      TriState stProcess = eUnspecified;
  2234  #if defined(MOZ_WIDGET_ANDROID)
  2236  #if defined(MOZ_WIDGET_ANDROID)
  2252            CheckVersionFlag(kGeckoVersion, wtoken, geckoVersion, stGeckoVersion)) {
  2254            CheckVersionFlag(kGeckoVersion, wtoken, geckoVersion, stGeckoVersion)) {
  2253          continue;
  2255          continue;
  2254        }
  2256        }
  2255  
  2257  
  2256  #if defined(MOZ_WIDGET_ANDROID)
  2258  #if defined(MOZ_WIDGET_ANDROID)
  2257 @@ -729,16 +738,17 @@ ParseManifest(NSLocationType aType, File
  2259 @@ -701,16 +710,17 @@ ParseManifest(NSLocationType aType, File
  2258      }
  2260      }
  2259  
  2261  
  2260      if (!ok ||
  2262      if (!ok ||
  2261          stApp == eBad ||
  2263          stApp == eBad ||
  2262          stAppVersion == eBad ||
  2264          stAppVersion == eBad ||
  2290  if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
  2292  if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
  2291      CXXFLAGS += CONFIG['TK_CFLAGS']
  2293      CXXFLAGS += CONFIG['TK_CFLAGS']
  2292 diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
  2294 diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
  2293 --- a/xpcom/io/nsLocalFileUnix.cpp
  2295 --- a/xpcom/io/nsLocalFileUnix.cpp
  2294 +++ b/xpcom/io/nsLocalFileUnix.cpp
  2296 +++ b/xpcom/io/nsLocalFileUnix.cpp
  2295 @@ -45,16 +45,17 @@
  2297 @@ -46,16 +46,17 @@
  2296  #include "prproces.h"
  2298  #include "prproces.h"
  2297  #include "nsIDirectoryEnumerator.h"
  2299  #include "nsIDirectoryEnumerator.h"
  2298  #include "nsISimpleEnumerator.h"
  2300  #include "nsISimpleEnumerator.h"
  2299  #include "private/pprio.h"
  2301  #include "private/pprio.h"
  2300  #include "prlink.h"
  2302  #include "prlink.h"
  2308  #include <Carbon/Carbon.h>
  2310  #include <Carbon/Carbon.h>
  2309  #include "CocoaFileUtils.h"
  2311  #include "CocoaFileUtils.h"
  2310  #include "prmem.h"
  2312  #include "prmem.h"
  2311  #include "plbase64.h"
  2313  #include "plbase64.h"
  2312  
  2314  
  2313 @@ -1934,59 +1935,74 @@ nsLocalFile::SetPersistentDescriptor(con
  2315 @@ -1955,59 +1956,74 @@ nsLocalFile::SetPersistentDescriptor(con
  2314    return InitWithNativePath(aPersistentDescriptor);
  2316    return InitWithNativePath(aPersistentDescriptor);
  2315  #endif
  2317  #endif
  2316  }
  2318  }
  2317  
  2319  
  2318  NS_IMETHODIMP
  2320  NS_IMETHODIMP