mozilla-kde.patch
author Wolfgang Rosenauer <wr@rosenauer.org>
Fri, 04 Aug 2023 12:30:24 +0200
branchfirefox116
changeset 1191 37e065158be7
parent 1190 2a24a948b5cf
child 1196 954851a35787
permissions -rw-r--r--
initial 116 changes
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
828
59013b3a51f5 update to 36.0b3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 807
diff changeset
     1
# HG changeset patch
1097
840132a4a9b3 Firefox 68.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1093
diff changeset
     2
# User msirringhaus@suse.de
840132a4a9b3 Firefox 68.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1093
diff changeset
     3
# Date 1559294891 -7200
840132a4a9b3 Firefox 68.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1093
diff changeset
     4
#      Fri May 31 11:28:11 2019 +0200
840132a4a9b3 Firefox 68.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1093
diff changeset
     5
# Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
     6
# Parent  eaadcfc5cb5ee0eed248051a657a69646334aad7
398
937669e1c537 ported and reenabled KDE integration (bnc#746591)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 368
diff changeset
     7
Description: Add KDE integration to Firefox (toolkit parts)
937669e1c537 ported and reenabled KDE integration (bnc#746591)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 368
diff changeset
     8
Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
937669e1c537 ported and reenabled KDE integration (bnc#746591)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 368
diff changeset
     9
Author: Lubos Lunak <lunak@suse.com>
937669e1c537 ported and reenabled KDE integration (bnc#746591)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 368
diff changeset
    10
Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751
937669e1c537 ported and reenabled KDE integration (bnc#746591)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 368
diff changeset
    11
     https://bugzilla.novell.com/show_bug.cgi?id=170055
937669e1c537 ported and reenabled KDE integration (bnc#746591)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 368
diff changeset
    12
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    13
diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    14
--- a/modules/libpref/Preferences.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    15
+++ b/modules/libpref/Preferences.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    16
@@ -90,16 +90,17 @@
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    17
 #include "PLDHashTable.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    18
 #include "prdtoa.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    19
 #include "prlink.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    20
 #include "xpcpublic.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    21
 #include "js/RootingAPI.h"
1156
c3d884659acf Firefox 87.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1152
diff changeset
    22
 #ifdef MOZ_BACKGROUNDTASKS
c3d884659acf Firefox 87.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1152
diff changeset
    23
 #  include "mozilla/BackgroundTasks.h"
c3d884659acf Firefox 87.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1152
diff changeset
    24
 #endif
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    25
+#include "nsKDEUtils.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    26
 
1106
6c6375987b6c rebased
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1099
diff changeset
    27
 #ifdef DEBUG
6c6375987b6c rebased
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1099
diff changeset
    28
 #  include <map>
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    29
 #endif
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    30
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    31
 #ifdef MOZ_MEMORY
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    32
 #  include "mozmemory.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    33
 #endif
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    34
@@ -4901,16 +4902,26 @@ nsresult Preferences::InitInitialObjects
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    35
     "unix.js"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    36
 #  if defined(_AIX)
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    37
     ,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    38
     "aix.js"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    39
 #  endif
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    40
 #endif
340
aabcc7895695 update to version 8.0b1 (just merged stuff; build might still fail)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 294
diff changeset
    41
   };
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    42
 
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
    43
+  if (nsKDEUtils::kdeSession()) {  // TODO what if some setup actually requires
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
    44
+                                   // the helper?
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
    45
+    for (int i = 0; i < MOZ_ARRAY_LENGTH(specialFiles); ++i) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
    46
+      if (*specialFiles[i] == '\0') {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
    47
+        specialFiles[i] = "kde.js";
340
aabcc7895695 update to version 8.0b1 (just merged stuff; build might still fail)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 294
diff changeset
    48
+        break;
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
    49
+      }
127
4c86470ed796 Reenabling KDE integration patches (part 1: rebase and reenable; might need post-fixes)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 64
diff changeset
    50
+    }
340
aabcc7895695 update to version 8.0b1 (just merged stuff; build might still fail)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 294
diff changeset
    51
+  }
127
4c86470ed796 Reenabling KDE integration patches (part 1: rebase and reenable; might need post-fixes)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 64
diff changeset
    52
+
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
    53
   rv = pref_LoadPrefsInDir(defaultPrefDir, specialFiles,
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
    54
                            ArrayLength(specialFiles));
1020
d2c159cb9bf2 rebased patches; updated spec file
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1014
diff changeset
    55
   if (NS_FAILED(rv)) {
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    56
     NS_WARNING("Error parsing application default preferences.");
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    57
   }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    58
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    59
   // Load jar:$app/omni.jar!/defaults/preferences/*.js
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    60
   // or jar:$gre/omni.jar!/defaults/preferences/*.js.
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    61
@@ -4975,17 +4986,17 @@ nsresult Preferences::InitInitialObjects
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    62
       }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    63
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    64
       nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    65
       if (!path) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    66
         continue;
1032
8220ea23b47d remove obsolete patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1021
diff changeset
    67
       }
8220ea23b47d remove obsolete patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1021
diff changeset
    68
 
8220ea23b47d remove obsolete patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1021
diff changeset
    69
       // Do we care if a file provided by this process fails to load?
8220ea23b47d remove obsolete patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1021
diff changeset
    70
-      pref_LoadPrefsInDir(path, nullptr, 0);
8220ea23b47d remove obsolete patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1021
diff changeset
    71
+      pref_LoadPrefsInDir(path, specialFiles, ArrayLength(specialFiles));
8220ea23b47d remove obsolete patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1021
diff changeset
    72
     }
8220ea23b47d remove obsolete patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1021
diff changeset
    73
   }
8220ea23b47d remove obsolete patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1021
diff changeset
    74
 
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    75
 #if defined(MOZ_WIDGET_GTK)
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    76
   // To ensure the system-wide preferences are not overwritten by
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    77
   // firefox/browser/defauts/preferences/*.js we need to load
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    78
   // the /etc/firefox/defaults/pref/*.js settings as last.
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    79
   // Under Flatpak, the NS_OS_SYSTEM_CONFIG_DIR points to /app/etc/firefox
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    80
diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    81
--- a/modules/libpref/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    82
+++ b/modules/libpref/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    83
@@ -121,16 +121,20 @@ EXPORTS.mozilla += [
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    84
 ]
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    85
 EXPORTS.mozilla += sorted(["!" + g for g in gen_h])
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    86
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    87
 UNIFIED_SOURCES += [
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    88
     "Preferences.cpp",
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
    89
     "SharedPrefMap.cpp",
904
6a889427cd4f 45.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 901
diff changeset
    90
 ]
6a889427cd4f 45.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 901
diff changeset
    91
 
6a889427cd4f 45.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 901
diff changeset
    92
+LOCAL_INCLUDES += [
1093
3942c205588b 67.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1089
diff changeset
    93
+    '/toolkit/xre'
904
6a889427cd4f 45.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 901
diff changeset
    94
+]
6a889427cd4f 45.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 901
diff changeset
    95
+
1112
8a4f5aea2475 Firefox 70.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1106
diff changeset
    96
 gen_all_tuple = tuple(gen_h + gen_cpp + gen_rs)
8a4f5aea2475 Firefox 70.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1106
diff changeset
    97
 
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
    98
 GeneratedFile(
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
    99
     *gen_all_tuple,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   100
     script="init/generate_static_pref_list.py",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   101
     entry_point="emit_code",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   102
     inputs=["init/StaticPrefList.yaml"]
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   103
 )
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   104
diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/chrome/flags.py
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   105
--- a/python/mozbuild/mozpack/chrome/flags.py
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   106
+++ b/python/mozbuild/mozpack/chrome/flags.py
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   107
@@ -229,16 +229,17 @@ class Flags(OrderedDict):
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   108
         "os": StringFlag,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   109
         "osversion": VersionFlag,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   110
         "abi": StringFlag,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   111
         "platform": Flag,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   112
         "xpcnativewrappers": Flag,
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   113
         "tablet": Flag,
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   114
         "process": StringFlag,
1156
c3d884659acf Firefox 87.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1152
diff changeset
   115
         "backgroundtask": StringFlag,
c3d884659acf Firefox 87.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1152
diff changeset
   116
+        "desktop": StringFlag,
637
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   117
     }
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   118
     RE = re.compile(r"([!<>=]+)")
637
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   119
 
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   120
     def __init__(self, *flags):
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   121
         """
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   122
         Initialize a set of flags given in string form.
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   123
            flags = Flags('contentaccessible=yes', 'appversion>=3.5')
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   124
         """
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   125
diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpack/chrome/manifest.py
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   126
--- a/python/mozbuild/mozpack/chrome/manifest.py
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   127
+++ b/python/mozbuild/mozpack/chrome/manifest.py
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   128
@@ -38,16 +38,17 @@ class ManifestEntry(object):
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   129
         "os",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   130
         "osversion",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   131
         "abi",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   132
         "xpcnativewrappers",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   133
         "tablet",
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   134
         "process",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   135
         "contentaccessible",
1156
c3d884659acf Firefox 87.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1152
diff changeset
   136
         "backgroundtask",
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   137
+        "desktop",
637
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   138
     ]
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   139
 
73640b76d6c3 first building version of FF21
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 612
diff changeset
   140
     def __init__(self, base, *flags):
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   141
         """
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   142
         Initialize a manifest entry with the given base path and flags.
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   143
         """
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   144
         self.base = base
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   145
         self.flags = Flags(*flags)
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   146
diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   147
--- a/toolkit/components/downloads/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   148
+++ b/toolkit/components/downloads/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   149
@@ -46,10 +46,14 @@ XPCOM_MANIFESTS += [
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   150
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   151
 if CONFIG["MOZ_PLACES"]:
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   152
     EXTRA_JS_MODULES += [
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   153
         "DownloadHistory.sys.mjs",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   154
     ]
779
354c672efefa rebased patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 766
diff changeset
   155
 
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   156
 FINAL_LIBRARY = "xul"
251
4c9ebbedd59c adopt patches to new base
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 244
diff changeset
   157
 
1020
d2c159cb9bf2 rebased patches; updated spec file
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1014
diff changeset
   158
+LOCAL_INCLUDES += [
d2c159cb9bf2 rebased patches; updated spec file
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1014
diff changeset
   159
+    '/toolkit/xre'
d2c159cb9bf2 rebased patches; updated spec file
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1014
diff changeset
   160
+]
d2c159cb9bf2 rebased patches; updated spec file
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1014
diff changeset
   161
+
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   162
 with Files("**"):
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   163
     BUG_COMPONENT = ("Toolkit", "Downloads API")
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   164
diff --git a/toolkit/mozapps/downloads/HelperAppDlg.sys.mjs b/toolkit/mozapps/downloads/HelperAppDlg.sys.mjs
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   165
--- a/toolkit/mozapps/downloads/HelperAppDlg.sys.mjs
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   166
+++ b/toolkit/mozapps/downloads/HelperAppDlg.sys.mjs
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   167
@@ -1241,36 +1241,66 @@ nsUnknownContentTypeDialog.prototype = {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   168
         params.handlerApp &&
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   169
         params.handlerApp.executable &&
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   170
         params.handlerApp.executable.isFile()
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   171
       ) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   172
         // Remember the file they chose to run.
944
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   173
         this.chosenApp = params.handlerApp;
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   174
       }
1045
f645c886d36b rebased
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1033
diff changeset
   175
     } else if ("@mozilla.org/applicationchooser;1" in Cc) {
f645c886d36b rebased
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1033
diff changeset
   176
-      var nsIApplicationChooser = Ci.nsIApplicationChooser;
1099
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   177
-      var appChooser = Cc["@mozilla.org/applicationchooser;1"].createInstance(
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   178
-        nsIApplicationChooser
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   179
-      );
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   180
-      appChooser.init(
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   181
-        this.mDialog,
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   182
-        this.dialogElement("strings").getString("chooseAppFilePickerTitle")
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   183
-      );
944
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   184
-      var contentTypeDialogObj = this;
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   185
-      let appChooserCallback = function appChooserCallback_done(aResult) {
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   186
-        if (aResult) {
1099
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   187
-          contentTypeDialogObj.chosenApp = aResult.QueryInterface(
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   188
-            Ci.nsILocalHandlerApp
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   189
-          );
1050
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   190
-        }
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   191
-        contentTypeDialogObj.finishChooseApp();
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   192
-      };
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   193
-      appChooser.open(this.mLauncher.MIMEInfo.MIMEType, appChooserCallback);
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   194
-      // The finishChooseApp is called from appChooserCallback
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   195
-      return;
944
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   196
+      // handle the KDE case which is implemented in the filepicker
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   197
+      // therefore falling back to Gtk2 like behaviour if KDE is running
994
9fc447b00040 Firefox 56.0b12
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 985
diff changeset
   198
+      // FIXME this should be better handled in the nsIApplicationChooser
9fc447b00040 Firefox 56.0b12
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 985
diff changeset
   199
+      // interface
944
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   200
+      var env = Components.classes["@mozilla.org/process/environment;1"]
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   201
+                          .getService(Components.interfaces.nsIEnvironment);
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   202
+      if (env.get('KDE_FULL_SESSION') == "true")
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   203
+      {
1050
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   204
+        var nsIFilePicker = Ci.nsIFilePicker;
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   205
+        var fp = Cc["@mozilla.org/filepicker;1"]
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   206
+                    .createInstance(nsIFilePicker);
944
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   207
+        fp.init(this.mDialog,
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   208
+                this.dialogElement("strings").getString("chooseAppFilePickerTitle"),
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   209
+                nsIFilePicker.modeOpen);
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   210
+
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   211
+        fp.appendFilters(nsIFilePicker.filterApps);
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   212
+
1050
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   213
+        fp.open(aResult => {
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   214
+          if (aResult == nsIFilePicker.returnOK && fp.file) {
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   215
+            // Remember the file they chose to run.
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   216
+            var localHandlerApp =
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   217
+              Cc["@mozilla.org/uriloader/local-handler-app;1"].
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   218
+                         createInstance(Ci.nsILocalHandlerApp);
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   219
+            localHandlerApp.executable = fp.file;
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   220
+            this.chosenApp = localHandlerApp;
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   221
+          }
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   222
+          this.finishChooseApp();
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   223
+        });
944
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   224
+      } else {
1045
f645c886d36b rebased
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1033
diff changeset
   225
+        var nsIApplicationChooser = Ci.nsIApplicationChooser;
1099
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   226
+        var appChooser = Cc["@mozilla.org/applicationchooser;1"].createInstance(
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   227
+          nsIApplicationChooser
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   228
+        );
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   229
+        appChooser.init(
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   230
+          this.mDialog,
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   231
+          this.dialogElement("strings").getString("chooseAppFilePickerTitle")
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   232
+        );
944
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   233
+        var contentTypeDialogObj = this;
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   234
+        let appChooserCallback = function appChooserCallback_done(aResult) {
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   235
+          if (aResult) {
1099
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   236
+            contentTypeDialogObj.chosenApp = aResult.QueryInterface(
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   237
+              Ci.nsILocalHandlerApp
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   238
+            );
944
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   239
+          }
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   240
+          contentTypeDialogObj.finishChooseApp();
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   241
+        };
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   242
+        appChooser.open(this.mLauncher.MIMEInfo.MIMEType, appChooserCallback);
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   243
+        // The finishChooseApp is called from appChooserCallback
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   244
+        return;
ce8a98f8d8d7 Firefox 52.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 942
diff changeset
   245
+      }
994
9fc447b00040 Firefox 56.0b12
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 985
diff changeset
   246
     } else {
1045
f645c886d36b rebased
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1033
diff changeset
   247
       var nsIFilePicker = Ci.nsIFilePicker;
1099
8a3c73e74e65 68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate68.1.0 candidate
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1097
diff changeset
   248
       var fp = Cc["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   249
       fp.init(
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   250
         this.mDialog,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   251
         this.dialogElement("strings").getString("chooseAppFilePickerTitle"),
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   252
         nsIFilePicker.modeOpen
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   253
       );
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   254
diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   255
--- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   256
+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   257
@@ -11,16 +11,18 @@
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   258
 #include "prenv.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   259
 #include "nsInterfaceHashtable.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   260
 #include "nsHashtablesFwd.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   261
 #include "nsHashKeys.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   262
 #include "nsNetUtil.h"
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   263
 #include "nsISupportsPrimitives.h"
399
20f8b5f0aea6 port KDE patches to Gecko 11
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 398
diff changeset
   264
 #include "nsIGSettingsService.h"
1182
cb6f01567cf8 108.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1181
diff changeset
   265
 #include "nsReadableUtils.h"
1176
f871aac89885 fix includes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1175
diff changeset
   266
+#include "nsPrintfCString.h"
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   267
+#include "nsKDEUtils.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   268
 
1093
3942c205588b 67.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1089
diff changeset
   269
 using namespace mozilla;
3942c205588b 67.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1089
diff changeset
   270
 
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   271
 class nsUnixSystemProxySettings final : public nsISystemProxySettings {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   272
  public:
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   273
   NS_DECL_ISUPPORTS
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   274
   NS_DECL_NSISYSTEMPROXYSETTINGS
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   275
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   276
@@ -34,16 +36,18 @@ class nsUnixSystemProxySettings final : 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   277
   nsCOMPtr<nsIGSettingsCollection> mProxySettings;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   278
   nsInterfaceHashtable<nsCStringHashKey, nsIGSettingsCollection>
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   279
       mSchemeProxySettings;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   280
   nsresult GetProxyFromGSettings(const nsACString& aScheme,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   281
                                  const nsACString& aHost, int32_t aPort,
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
   282
                                  nsACString& aResult);
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
   283
   nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType,
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
   284
                                        nsACString& aResult);
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
   285
+  nsresult GetProxyFromKDE(const nsACString& aScheme, const nsACString& aHost,
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
   286
+                           PRInt32 aPort, nsACString& aResult);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   287
 };
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   288
 
738
f118b88b7d7f Aurora 31 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 718
diff changeset
   289
 NS_IMPL_ISUPPORTS(nsUnixSystemProxySettings, nsISystemProxySettings)
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   290
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   291
 NS_IMETHODIMP
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   292
 nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   293
   // dbus prevents us from being threadsafe, but this routine should not block
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   294
   // anyhow
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   295
@@ -391,21 +395,46 @@ nsresult nsUnixSystemProxySettings::GetP
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   296
   return NS_OK;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   297
 }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   298
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   299
 nsresult nsUnixSystemProxySettings::GetProxyForURI(const nsACString& aSpec,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   300
                                                    const nsACString& aScheme,
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
   301
                                                    const nsACString& aHost,
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
   302
                                                    const int32_t aPort,
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
   303
                                                    nsACString& aResult) {
596
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 589
diff changeset
   304
+  if (nsKDEUtils::kdeSupport())
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 546
diff changeset
   305
+    return GetProxyFromKDE(aScheme, aHost, aPort, aResult);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   306
+
419
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
   307
   if (mProxySettings) {
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 546
diff changeset
   308
     nsresult rv = GetProxyFromGSettings(aScheme, aHost, aPort, aResult);
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
   309
     if (NS_SUCCEEDED(rv)) return rv;
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   310
   }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   311
 
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
   312
   return GetProxyFromEnvironment(aScheme, aHost, aPort, aResult);
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
   313
 }
284
ccddc8555cdb readd lost method for non libproxy builds
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 260
diff changeset
   314
 
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   315
+nsresult nsUnixSystemProxySettings::GetProxyFromKDE(const nsACString& aScheme,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   316
+                                                    const nsACString& aHost,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   317
+                                                    PRInt32 aPort,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   318
+                                                    nsACString& aResult) {
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 546
diff changeset
   319
+  nsAutoCString url;
284
ccddc8555cdb readd lost method for non libproxy builds
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 260
diff changeset
   320
+  url = aScheme;
ccddc8555cdb readd lost method for non libproxy builds
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 260
diff changeset
   321
+  url += "://";
ccddc8555cdb readd lost method for non libproxy builds
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 260
diff changeset
   322
+  url += aHost;
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   323
+  if (aPort >= 0) {
284
ccddc8555cdb readd lost method for non libproxy builds
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 260
diff changeset
   324
+    url += ":";
ccddc8555cdb readd lost method for non libproxy builds
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 260
diff changeset
   325
+    url += nsPrintfCString("%d", aPort);
ccddc8555cdb readd lost method for non libproxy builds
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 260
diff changeset
   326
+  }
367
3fabd9f66322 begin Firefox 10 cycle
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 356
diff changeset
   327
+  nsTArray<nsCString> command;
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   328
+  command.AppendElement("GETPROXY"_ns);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   329
+  command.AppendElement(url);
367
3fabd9f66322 begin Firefox 10 cycle
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 356
diff changeset
   330
+  nsTArray<nsCString> result;
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   331
+  if (!nsKDEUtils::command(command, &result) || result.Length() != 1)
284
ccddc8555cdb readd lost method for non libproxy builds
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 260
diff changeset
   332
+    return NS_ERROR_FAILURE;
398
937669e1c537 ported and reenabled KDE integration (bnc#746591)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 368
diff changeset
   333
+  aResult = result[0];
284
ccddc8555cdb readd lost method for non libproxy builds
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 260
diff changeset
   334
+  return NS_OK;
ccddc8555cdb readd lost method for non libproxy builds
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 260
diff changeset
   335
+}
ccddc8555cdb readd lost method for non libproxy builds
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 260
diff changeset
   336
+
1093
3942c205588b 67.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1089
diff changeset
   337
 NS_IMPL_COMPONENT_FACTORY(nsUnixSystemProxySettings) {
3942c205588b 67.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1089
diff changeset
   338
   auto result = MakeRefPtr<nsUnixSystemProxySettings>();
3942c205588b 67.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1089
diff changeset
   339
   result->Init();
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   340
   return result.forget().downcast<nsISupports>();
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   341
 }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   342
diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   343
--- a/toolkit/xre/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   344
+++ b/toolkit/xre/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   345
@@ -91,17 +91,19 @@ elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "co
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   346
         "../components/printingui",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   347
     ]
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   348
 elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "uikit":
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   349
     UNIFIED_SOURCES += [
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   350
         "nsNativeAppSupportDefault.cpp",
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   351
         "UIKitDirProvider.mm",
659
fa96cf6ffd14 Aurora 24 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 653
diff changeset
   352
     ]
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   353
 elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
659
fa96cf6ffd14 Aurora 24 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 653
diff changeset
   354
+    EXPORTS += ['nsKDEUtils.h']
703
c4aab80e472f Firefox 28.0beta1
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 691
diff changeset
   355
     UNIFIED_SOURCES += [
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   356
+        "nsKDEUtils.cpp",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   357
         "nsNativeAppSupportUnix.cpp",
659
fa96cf6ffd14 Aurora 24 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 653
diff changeset
   358
     ]
1169
7481543bab31 Firefox 95.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1168
diff changeset
   359
     CXXFLAGS += CONFIG["MOZ_X11_SM_CFLAGS"]
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   360
 else:
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   361
     UNIFIED_SOURCES += [
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   362
         "nsNativeAppSupportDefault.cpp",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   363
     ]
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   364
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   365
diff --git a/toolkit/xre/nsKDEUtils.cpp b/toolkit/xre/nsKDEUtils.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   366
new file mode 100644
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   367
--- /dev/null
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   368
+++ b/toolkit/xre/nsKDEUtils.cpp
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   369
@@ -0,0 +1,286 @@
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   370
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
546
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   371
+/* This Source Code Form is subject to the terms of the Mozilla Public
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   372
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   373
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   374
+
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   375
+#include "nsKDEUtils.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   376
+#include "nsIWidget.h"
398
937669e1c537 ported and reenabled KDE integration (bnc#746591)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 368
diff changeset
   377
+#include "nsISupportsPrimitives.h"
937669e1c537 ported and reenabled KDE integration (bnc#746591)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 368
diff changeset
   378
+#include "nsIMutableArray.h"
937669e1c537 ported and reenabled KDE integration (bnc#746591)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 368
diff changeset
   379
+#include "nsComponentManagerUtils.h"
937669e1c537 ported and reenabled KDE integration (bnc#746591)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 368
diff changeset
   380
+#include "nsArrayUtils.h"
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   381
+
10
1920f0ff04a3 Make mozilla-kde.patch compile with 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 9
diff changeset
   382
+#include <gtk/gtk.h>
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   383
+
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   384
+#include <limits.h>
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   385
+#include <stdio.h>
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   386
+#include <sys/wait.h>
517
fa93154734b8 Fix mozilla-kde.patch to include sys/resource.h for getrlimit etc (glibc 2.16)
Andreas Jaeger <aj@suse.de>
parents: 515
diff changeset
   387
+#include <sys/resource.h>
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   388
+#include <unistd.h>
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   389
+#include <X11/Xlib.h>
935
9ae2b79d3bb1 prepare FF 51 -> 51.0b14
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 932
diff changeset
   390
+// copied from X11/X.h as a hack since for an unknown
9ae2b79d3bb1 prepare FF 51 -> 51.0b14
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 932
diff changeset
   391
+// reason it's not picked up from X11/X.h
9ae2b79d3bb1 prepare FF 51 -> 51.0b14
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 932
diff changeset
   392
+#ifndef None
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   393
+#  define None 0L /* universal null resource or null atom */
935
9ae2b79d3bb1 prepare FF 51 -> 51.0b14
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 932
diff changeset
   394
+#endif
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   395
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   396
+// #define DEBUG_KDE
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   397
+#ifdef DEBUG_KDE
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   398
+#  define KMOZILLAHELPER "kmozillahelper"
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   399
+#else
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   400
+// not need for lib64, it's a binary
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   401
+#  define KMOZILLAHELPER "/usr/lib/mozilla/kmozillahelper"
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   402
+#endif
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   403
+
538
be682f8c9361 revert API version change for kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 537
diff changeset
   404
+#define KMOZILLAHELPER_VERSION 6
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   405
+#define MAKE_STR2(n) #n
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   406
+#define MAKE_STR(n) MAKE_STR2(n)
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   407
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   408
+static bool getKdeSession() {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   409
+  if (PR_GetEnv("KDE_FULL_SESSION")) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   410
+    return true;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   411
+  }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   412
+  return false;
1168
c384af864671 Firefox 94.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1164
diff changeset
   413
+}
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   414
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   415
+static bool getKdeSupport() {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   416
+  nsTArray<nsCString> command;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   417
+  command.AppendElement("CHECK"_ns);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   418
+  command.AppendElement("KMOZILLAHELPER_VERSION"_ns);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   419
+  bool kde = nsKDEUtils::command(command);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   420
+#ifdef DEBUG_KDE
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   421
+  fprintf(stderr, "KDE RUNNING %d\n", kde);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   422
+#endif
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   423
+  return kde;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   424
+}
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   425
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   426
+nsKDEUtils::nsKDEUtils() : commandFile(NULL), replyFile(NULL) {}
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   427
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   428
+nsKDEUtils::~nsKDEUtils() {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   429
+  //    closeHelper(); not actually useful, exiting will close the fd too
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   430
+}
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   431
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   432
+nsKDEUtils* nsKDEUtils::self() {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   433
+  static nsKDEUtils s;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   434
+  return &s;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   435
+}
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   436
+
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   437
+static bool helperRunning = false;
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   438
+static bool helperFailed = false;
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   439
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   440
+bool nsKDEUtils::kdeSession() {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   441
+  static bool session = getKdeSession();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   442
+  return session;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   443
+}
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   444
+
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   445
+bool nsKDEUtils::kdeSupport() {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   446
+  static bool support = kdeSession() && getKdeSupport();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   447
+  return support && helperRunning;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   448
+}
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   449
+
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   450
+struct nsKDECommandData {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   451
+  FILE* file;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   452
+  nsTArray<nsCString>* output;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   453
+  GMainLoop* loop;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   454
+  bool success;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   455
+};
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   456
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   457
+static gboolean kdeReadFunc(GIOChannel*, GIOCondition, gpointer data) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   458
+  nsKDECommandData* p = static_cast<nsKDECommandData*>(data);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   459
+  char buf[8192];  // TODO big enough
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   460
+  bool command_done = false;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   461
+  bool command_failed = false;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   462
+  while (!command_done && !command_failed &&
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   463
+         fgets(buf, 8192, p->file) !=
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   464
+             NULL) {  // TODO what if the kernel splits a line into two chunks?
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   465
+                      // #ifdef DEBUG_KDE
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   466
+    //         fprintf( stderr, "READ: %s %d\n", buf, feof( p->file ));
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   467
+    // #endif
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   468
+    if (char* eol = strchr(buf, '\n')) *eol = '\0';
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   469
+    command_done = (strcmp(buf, "\\1") == 0);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   470
+    command_failed = (strcmp(buf, "\\0") == 0);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   471
+    nsAutoCString line(buf);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   472
+    line.ReplaceSubstring("\\n", "\n");
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   473
+    line.ReplaceSubstring(
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   474
+        "\\"
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   475
+        "\\",
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   476
+        "\\");  //  \\ -> \ , i.e. unescape
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   477
+    if (p->output && !(command_done || command_failed))
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   478
+      p->output->AppendElement(nsCString(buf));  // TODO utf8?
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   479
+  }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   480
+  bool quit = false;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   481
+  if (feof(p->file) || command_failed) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   482
+    quit = true;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   483
+    p->success = false;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   484
+  }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   485
+  if (command_done) {  // reading one reply finished
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   486
+    quit = true;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   487
+    p->success = true;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   488
+  }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   489
+  if (quit) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   490
+    if (p->loop) g_main_loop_quit(p->loop);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   491
+    return FALSE;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   492
+  }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   493
+  return TRUE;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   494
+}
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   495
+
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   496
+bool nsKDEUtils::command(const nsTArray<nsCString>& command,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   497
+                         nsTArray<nsCString>* output) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   498
+  return self()->internalCommand(command, NULL, false, output);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   499
+}
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   500
+
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   501
+bool nsKDEUtils::command(nsIArray* command, nsIArray** output) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   502
+  nsTArray<nsCString> in;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   503
+  PRUint32 length;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   504
+  command->GetLength(&length);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   505
+  for (PRUint32 i = 0; i < length; i++) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   506
+    nsCOMPtr<nsISupportsCString> str = do_QueryElementAt(command, i);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   507
+    if (str) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   508
+      nsAutoCString s;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   509
+      str->GetData(s);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   510
+      in.AppendElement(s);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   511
+    }
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   512
+  }
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   513
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   514
+  nsTArray<nsCString> out;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   515
+  bool ret = self()->internalCommand(in, NULL, false, &out);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   516
+
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   517
+  if (!output) return ret;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   518
+
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   519
+  nsCOMPtr<nsIMutableArray> result = do_CreateInstance(NS_ARRAY_CONTRACTID);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   520
+  if (!result) return false;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   521
+
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   522
+  for (PRUint32 i = 0; i < out.Length(); i++) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   523
+    nsCOMPtr<nsISupportsCString> rstr =
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   524
+        do_CreateInstance(NS_SUPPORTS_CSTRING_CONTRACTID);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   525
+    if (!rstr) return false;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   526
+
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   527
+    rstr->SetData(out[i]);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   528
+    result->AppendElement(rstr);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   529
+  }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   530
+
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   531
+  NS_ADDREF(*output = result);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   532
+  return ret;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   533
+}
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   534
+
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   535
+bool nsKDEUtils::commandBlockUi(const nsTArray<nsCString>& command,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   536
+                                GtkWindow* parent,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   537
+                                nsTArray<nsCString>* output) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   538
+  return self()->internalCommand(command, parent, true, output);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   539
+}
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   540
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   541
+bool nsKDEUtils::internalCommand(const nsTArray<nsCString>& command,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   542
+                                 GtkWindow* parent, bool blockUi,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   543
+                                 nsTArray<nsCString>* output) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   544
+  if (!startHelper()) return false;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   545
+  feedCommand(command);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   546
+  // do not store the data in 'this' but in extra structure, just in case there
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   547
+  // is reentrancy (can there be? the event loop is re-entered)
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   548
+  nsKDECommandData data;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   549
+  data.file = replyFile;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   550
+  data.output = output;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   551
+  data.success = false;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   552
+  if (blockUi) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   553
+    data.loop = g_main_loop_new(NULL, FALSE);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   554
+    GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   555
+    if (parent && gtk_window_get_group(parent))
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   556
+      gtk_window_group_add_window(gtk_window_get_group(parent),
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   557
+                                  GTK_WINDOW(window));
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   558
+    gtk_widget_realize(window);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   559
+    gtk_widget_set_sensitive(window, TRUE);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   560
+    gtk_grab_add(window);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   561
+    GIOChannel* channel = g_io_channel_unix_new(fileno(data.file));
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   562
+    g_io_add_watch(channel,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   563
+                   static_cast<GIOCondition>(G_IO_IN | G_IO_ERR | G_IO_HUP),
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   564
+                   kdeReadFunc, &data);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   565
+    g_io_channel_unref(channel);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   566
+    g_main_loop_run(data.loop);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   567
+    g_main_loop_unref(data.loop);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   568
+    gtk_grab_remove(window);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   569
+    gtk_widget_destroy(window);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   570
+  } else {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   571
+    data.loop = NULL;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   572
+    while (kdeReadFunc(NULL, static_cast<GIOCondition>(0), &data))
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   573
+      ;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   574
+  }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   575
+  return data.success;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   576
+}
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   577
+
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   578
+bool nsKDEUtils::startHelper() {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   579
+  if (helperRunning) return true;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   580
+  if (helperFailed) return false;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   581
+  helperFailed = true;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   582
+  int fdcommand[2];
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   583
+  int fdreply[2];
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   584
+  if (pipe(fdcommand) < 0) return false;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   585
+  if (pipe(fdreply) < 0) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   586
+    close(fdcommand[0]);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   587
+    close(fdcommand[1]);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   588
+    return false;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   589
+  }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   590
+  char* args[2] = {const_cast<char*>(KMOZILLAHELPER), NULL};
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   591
+  switch (fork()) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   592
+    case -1: {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   593
+      close(fdcommand[0]);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   594
+      close(fdcommand[1]);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   595
+      close(fdreply[0]);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   596
+      close(fdreply[1]);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   597
+      return false;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   598
+    }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   599
+    case 0:  // child
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   600
+    {
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   601
+      if (dup2(fdcommand[0], STDIN_FILENO) < 0) _exit(1);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   602
+      if (dup2(fdreply[1], STDOUT_FILENO) < 0) _exit(1);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   603
+      int maxfd = 1024;  // close all other fds
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   604
+      struct rlimit rl;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   605
+      if (getrlimit(RLIMIT_NOFILE, &rl) == 0) maxfd = rl.rlim_max;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   606
+      for (int i = 3; i < maxfd; ++i) close(i);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   607
+#ifdef DEBUG_KDE
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   608
+      execvp(KMOZILLAHELPER, args);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   609
+#else
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   610
+      execv(KMOZILLAHELPER, args);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   611
+#endif
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   612
+      _exit(1);  // failed
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   613
+    }
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   614
+    default:  // parent
398
937669e1c537 ported and reenabled KDE integration (bnc#746591)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 368
diff changeset
   615
+    {
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   616
+      commandFile = fdopen(fdcommand[1], "w");
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   617
+      replyFile = fdopen(fdreply[0], "r");
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   618
+      close(fdcommand[0]);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   619
+      close(fdreply[1]);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   620
+      if (commandFile == NULL || replyFile == NULL) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   621
+        closeHelper();
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   622
+        return false;
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   623
+      }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   624
+      // ok, helper ready, getKdeRunning() will check if it works
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   625
+    }
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   626
+  }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   627
+  helperFailed = false;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   628
+  helperRunning = true;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   629
+  return true;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   630
+}
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   631
+
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   632
+void nsKDEUtils::closeHelper() {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   633
+  if (commandFile != NULL)
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   634
+    fclose(commandFile);  // this will also make the helper quit
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   635
+  if (replyFile != NULL) fclose(replyFile);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   636
+  helperRunning = false;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   637
+}
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   638
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   639
+void nsKDEUtils::feedCommand(const nsTArray<nsCString>& command) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   640
+  for (int i = 0; i < command.Length(); ++i) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   641
+    nsCString line = command[i];
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   642
+    line.ReplaceSubstring("\\",
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   643
+                          "\\"
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   644
+                          "\\");  // \ -> \\ , i.e. escape
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   645
+    line.ReplaceSubstring("\n", "\\n");
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   646
+#ifdef DEBUG_KDE
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   647
+    fprintf(stderr, "COMM: %s\n", line.get());
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   648
+#endif
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   649
+    fputs(line.get(), commandFile);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   650
+    fputs("\n", commandFile);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   651
+  }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   652
+  fputs("\\E\n",
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   653
+        commandFile);  // done as \E, so it cannot happen in normal data
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   654
+  fflush(commandFile);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   655
+}
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   656
diff --git a/toolkit/xre/nsKDEUtils.h b/toolkit/xre/nsKDEUtils.h
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   657
new file mode 100644
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   658
--- /dev/null
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   659
+++ b/toolkit/xre/nsKDEUtils.h
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   660
@@ -0,0 +1,53 @@
546
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   661
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   662
+/* This Source Code Form is subject to the terms of the Mozilla Public
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   663
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   664
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   665
+
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   666
+#ifndef nsKDEUtils_h__
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   667
+#define nsKDEUtils_h__
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   668
+
1033
51bfdd19b9e9 rebased everything to apply cleanly
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1032
diff changeset
   669
+#include "nsString.h"
367
3fabd9f66322 begin Firefox 10 cycle
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 356
diff changeset
   670
+#include "nsTArray.h"
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   671
+#include <stdio.h>
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   672
+
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   673
+typedef struct _GtkWindow GtkWindow;
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   674
+
398
937669e1c537 ported and reenabled KDE integration (bnc#746591)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 368
diff changeset
   675
+class nsIArray;
937669e1c537 ported and reenabled KDE integration (bnc#746591)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 368
diff changeset
   676
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   677
+class NS_EXPORT nsKDEUtils {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   678
+ public:
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   679
+  /* Returns true if running inside a KDE session (regardless of whether there
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   680
+     is KDE support available for Firefox). This should be used e.g. when
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   681
+     determining dialog button order but not for code that requires the KDE
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   682
+     support. */
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   683
+  static bool kdeSession();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   684
+  /* Returns true if running inside a KDE session and KDE support is available
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   685
+     for Firefox. This should be used everywhere where the external helper is
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   686
+     needed. */
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   687
+  static bool kdeSupport();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   688
+  /* Executes the given helper command, returns true if helper returned success.
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   689
+   */
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   690
+  static bool command(const nsTArray<nsCString>& command,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   691
+                      nsTArray<nsCString>* output = NULL);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   692
+  static bool command(nsIArray* command, nsIArray** output = NULL);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   693
+  /* Like command(), but additionally blocks the parent widget like if there was
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   694
+     a modal dialog shown and enters the event loop (i.e. there are still paint
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   695
+     updates, this is for commands that take long). */
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   696
+  static bool commandBlockUi(const nsTArray<nsCString>& command,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   697
+                             GtkWindow* parent,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   698
+                             nsTArray<nsCString>* output = NULL);
367
3fabd9f66322 begin Firefox 10 cycle
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 356
diff changeset
   699
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   700
+ private:
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   701
+  nsKDEUtils();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   702
+  ~nsKDEUtils();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   703
+  static nsKDEUtils* self();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   704
+  bool startHelper();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   705
+  void closeHelper();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   706
+  void feedCommand(const nsTArray<nsCString>& command);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   707
+  bool internalCommand(const nsTArray<nsCString>& command, GtkWindow* parent,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   708
+                       bool isParent, nsTArray<nsCString>* output);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   709
+  FILE* commandFile;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   710
+  FILE* replyFile;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   711
+};
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   712
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   713
+#endif  // nsKDEUtils
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   714
diff --git a/uriloader/exthandler/HandlerServiceParent.cpp b/uriloader/exthandler/HandlerServiceParent.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   715
--- a/uriloader/exthandler/HandlerServiceParent.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   716
+++ b/uriloader/exthandler/HandlerServiceParent.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   717
@@ -13,17 +13,17 @@
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   718
 #include "ContentHandlerService.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   719
 #include "nsIExternalProtocolService.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   720
 #include "nsStringEnumerator.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   721
 #include "nsIMutableArray.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   722
 #include "nsCExternalHandlerService.h"
1189
ba0c97b018a6 Firefox 113.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1188
diff changeset
   723
 #include "nsComponentManagerUtils.h"
ba0c97b018a6 Firefox 113.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1188
diff changeset
   724
 #include "nsServiceManagerUtils.h"
1050
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   725
 #ifdef MOZ_WIDGET_GTK
1089
eca1c1f2fe50 Firefox 66.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1085
diff changeset
   726
-#  include "unix/nsGNOMERegistry.h"
eca1c1f2fe50 Firefox 66.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1085
diff changeset
   727
+#  include "unix/nsCommonRegistry.h"
1050
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   728
 #endif
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   729
 
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
   730
 using mozilla::dom::ContentHandlerService;
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   731
 using mozilla::dom::HandlerApp;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   732
 using mozilla::dom::HandlerInfo;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   733
 using mozilla::dom::RemoteHandlerApp;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   734
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   735
 namespace {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   736
@@ -305,18 +305,18 @@ mozilla::ipc::IPCResult HandlerServicePa
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   737
 mozilla::ipc::IPCResult HandlerServiceParent::RecvExistsForProtocolOS(
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   738
     const nsACString& aProtocolScheme, bool* aHandlerExists) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   739
   if (aProtocolScheme.Length() > MAX_SCHEME_LENGTH) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   740
     *aHandlerExists = false;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   741
     return IPC_OK();
1097
840132a4a9b3 Firefox 68.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1093
diff changeset
   742
   }
1050
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   743
 #ifdef MOZ_WIDGET_GTK
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   744
   // Check the GNOME registry for a protocol handler
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   745
-  *aHandlerExists =
1179
c19c9e7820ef Firefox 105.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1178
diff changeset
   746
-      nsGNOMERegistry::HandlerExists(PromiseFlatCString(aProtocolScheme).get());
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   747
+  *aHandlerExists = nsCommonRegistry::HandlerExists(
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   748
+      PromiseFlatCString(aProtocolScheme).get());
1050
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   749
 #else
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   750
   *aHandlerExists = false;
bf0d08380dcf fix Bug 1094747 - Open with option in download dialog has no effect with kmozillahelper
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1045
diff changeset
   751
 #endif
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   752
   return IPC_OK();
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   753
 }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   754
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   755
 /*
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   756
  * Check if a handler exists for the provided protocol. Check the datastore
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   757
diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   758
--- a/uriloader/exthandler/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   759
+++ b/uriloader/exthandler/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   760
@@ -81,17 +81,19 @@ elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "ui
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   761
 else:
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   762
     # These files can't be built in unified mode because they redefine LOG.
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   763
     SOURCES += [
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   764
         osdir + "/nsOSHelperAppService.cpp",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   765
     ]
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   766
 
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   767
 if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
703
c4aab80e472f Firefox 28.0beta1
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 691
diff changeset
   768
     UNIFIED_SOURCES += [
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   769
+        "unix/nsCommonRegistry.cpp",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   770
         "unix/nsGNOMERegistry.cpp",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   771
+        "unix/nsKDERegistry.cpp",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   772
         "unix/nsMIMEInfoUnix.cpp",
659
fa96cf6ffd14 Aurora 24 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 653
diff changeset
   773
     ]
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   774
 elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "android":
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   775
     UNIFIED_SOURCES += [
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   776
         "android/nsMIMEInfoAndroid.cpp",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   777
     ]
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   778
 elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows":
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   779
     UNIFIED_SOURCES += [
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   780
@@ -129,16 +131,17 @@ include("/ipc/chromium/chromium-config.m
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   781
 FINAL_LIBRARY = "xul"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   782
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   783
 LOCAL_INCLUDES += [
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   784
     "/docshell/base",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   785
     "/dom/base",
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   786
     "/dom/ipc",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   787
     "/netwerk/base",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   788
     "/netwerk/protocol/http",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   789
+    "/toolkit/xre",
779
354c672efefa rebased patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 766
diff changeset
   790
 ]
354c672efefa rebased patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 766
diff changeset
   791
 
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
   792
 if CONFIG["MOZ_ENABLE_DBUS"]:
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   793
     CXXFLAGS += CONFIG["MOZ_DBUS_CFLAGS"]
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   794
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   795
 if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   796
     CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   797
     CXXFLAGS += CONFIG["MOZ_DBUS_GLIB_CFLAGS"]
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   798
diff --git a/uriloader/exthandler/unix/nsCommonRegistry.cpp b/uriloader/exthandler/unix/nsCommonRegistry.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   799
new file mode 100644
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   800
--- /dev/null
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   801
+++ b/uriloader/exthandler/unix/nsCommonRegistry.cpp
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   802
@@ -0,0 +1,42 @@
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   803
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
546
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   804
+/* This Source Code Form is subject to the terms of the Mozilla Public
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   805
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   806
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   807
+
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   808
+#include "nsCommonRegistry.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   809
+
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   810
+#include "nsGNOMERegistry.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   811
+#include "nsKDERegistry.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   812
+#include "nsString.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   813
+#include "nsKDEUtils.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   814
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   815
+/* static */ bool nsCommonRegistry::HandlerExists(const char* aProtocolScheme) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   816
+  if (nsKDEUtils::kdeSupport())
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   817
+    return nsKDERegistry::HandlerExists(aProtocolScheme);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   818
+  return nsGNOMERegistry::HandlerExists(aProtocolScheme);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   819
+}
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   820
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   821
+/* static */ nsresult nsCommonRegistry::LoadURL(nsIURI* aURL) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   822
+  if (nsKDEUtils::kdeSupport()) return nsKDERegistry::LoadURL(aURL);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   823
+  return nsGNOMERegistry::LoadURL(aURL);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   824
+}
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   825
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   826
+/* static */ void nsCommonRegistry::GetAppDescForScheme(
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   827
+    const nsACString& aScheme, nsAString& aDesc) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   828
+  if (nsKDEUtils::kdeSupport())
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   829
+    return nsKDERegistry::GetAppDescForScheme(aScheme, aDesc);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   830
+  return nsGNOMERegistry::GetAppDescForScheme(aScheme, aDesc);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   831
+}
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   832
+
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   833
+/* static */ already_AddRefed<nsMIMEInfoBase>
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   834
+nsCommonRegistry::GetFromExtension(const nsACString& aFileExt) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   835
+  if (nsKDEUtils::kdeSupport())
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   836
+    return nsKDERegistry::GetFromExtension(aFileExt);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   837
+  return nsGNOMERegistry::GetFromExtension(aFileExt);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   838
+}
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   839
+
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   840
+/* static */ already_AddRefed<nsMIMEInfoBase> nsCommonRegistry::GetFromType(
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   841
+    const nsACString& aMIMEType) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   842
+  if (nsKDEUtils::kdeSupport()) return nsKDERegistry::GetFromType(aMIMEType);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   843
+  return nsGNOMERegistry::GetFromType(aMIMEType);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   844
+}
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   845
diff --git a/uriloader/exthandler/unix/nsCommonRegistry.h b/uriloader/exthandler/unix/nsCommonRegistry.h
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   846
new file mode 100644
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   847
--- /dev/null
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   848
+++ b/uriloader/exthandler/unix/nsCommonRegistry.h
760
7c3ac3010cc6 added header guards
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 757
diff changeset
   849
@@ -0,0 +1,28 @@
546
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   850
+/* This Source Code Form is subject to the terms of the Mozilla Public
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   851
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   852
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   853
+
760
7c3ac3010cc6 added header guards
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 757
diff changeset
   854
+#ifndef nsCommonRegistry_h__
7c3ac3010cc6 added header guards
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 757
diff changeset
   855
+#define nsCommonRegistry_h__
7c3ac3010cc6 added header guards
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 757
diff changeset
   856
+
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   857
+#include "nsIURI.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   858
+#include "nsCOMPtr.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   859
+
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   860
+class nsMIMEInfoBase;
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   861
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   862
+class nsCommonRegistry {
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   863
+ public:
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   864
+  static bool HandlerExists(const char* aProtocolScheme);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   865
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   866
+  static nsresult LoadURL(nsIURI* aURL);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   867
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   868
+  static void GetAppDescForScheme(const nsACString& aScheme, nsAString& aDesc);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   869
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   870
+  static already_AddRefed<nsMIMEInfoBase> GetFromExtension(
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   871
+      const nsACString& aFileExt);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   872
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   873
+  static already_AddRefed<nsMIMEInfoBase> GetFromType(
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   874
+      const nsACString& aMIMEType);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   875
+};
760
7c3ac3010cc6 added header guards
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 757
diff changeset
   876
+
7c3ac3010cc6 added header guards
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 757
diff changeset
   877
+#endif
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   878
diff --git a/uriloader/exthandler/unix/nsKDERegistry.cpp b/uriloader/exthandler/unix/nsKDERegistry.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   879
new file mode 100644
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   880
--- /dev/null
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   881
+++ b/uriloader/exthandler/unix/nsKDERegistry.cpp
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   882
@@ -0,0 +1,75 @@
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   883
+/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
546
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   884
+/* This Source Code Form is subject to the terms of the Mozilla Public
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   885
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   886
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   887
+
1172
7bdeb580be51 Firefox 98.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1171
diff changeset
   888
+#include "mozilla/StaticPrefs_browser.h"
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   889
+#include "nsKDERegistry.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   890
+#include "prlink.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   891
+#include "prmem.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   892
+#include "nsString.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   893
+#include "nsMIMEInfoUnix.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   894
+#include "nsKDEUtils.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   895
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   896
+/* static */ bool nsKDERegistry::HandlerExists(const char* aProtocolScheme) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   897
+  nsTArray<nsCString> command;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   898
+  command.AppendElement("HANDLEREXISTS"_ns);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   899
+  command.AppendElement(nsAutoCString(aProtocolScheme));
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   900
+  return nsKDEUtils::command(command);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   901
+}
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   902
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   903
+/* static */ nsresult nsKDERegistry::LoadURL(nsIURI* aURL) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   904
+  nsTArray<nsCString> command;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   905
+  command.AppendElement("OPEN"_ns);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   906
+  nsCString url;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   907
+  aURL->GetSpec(url);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   908
+  command.AppendElement(url);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   909
+  bool rv = nsKDEUtils::command(command);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   910
+  if (!rv) return NS_ERROR_FAILURE;
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 546
diff changeset
   911
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   912
+  return NS_OK;
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   913
+}
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   914
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   915
+/* static */ void nsKDERegistry::GetAppDescForScheme(const nsACString& aScheme,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   916
+                                                     nsAString& aDesc) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   917
+  nsTArray<nsCString> command;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   918
+  command.AppendElement("GETAPPDESCFORSCHEME"_ns);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   919
+  command.AppendElement(aScheme);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   920
+  nsTArray<nsCString> output;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   921
+  if (nsKDEUtils::command(command, &output) && output.Length() == 1)
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   922
+    CopyUTF8toUTF16(output[0], aDesc);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   923
+}
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   924
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   925
+/* static */ already_AddRefed<nsMIMEInfoBase> nsKDERegistry::GetFromExtension(
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   926
+    const nsACString& aFileExt) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   927
+  NS_ASSERTION(aFileExt[0] != '.', "aFileExt shouldn't start with a dot");
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   928
+  nsTArray<nsCString> command;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   929
+  command.AppendElement("GETFROMEXTENSION"_ns);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   930
+  command.AppendElement(aFileExt);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   931
+  return GetFromHelper(command);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   932
+}
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   933
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   934
+/* static */ already_AddRefed<nsMIMEInfoBase> nsKDERegistry::GetFromType(
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   935
+    const nsACString& aMIMEType) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   936
+  nsTArray<nsCString> command;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   937
+  command.AppendElement("GETFROMTYPE"_ns);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   938
+  command.AppendElement(aMIMEType);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   939
+  return GetFromHelper(command);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   940
+}
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   941
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   942
+/* static */ already_AddRefed<nsMIMEInfoBase> nsKDERegistry::GetFromHelper(
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   943
+    const nsTArray<nsCString>& command) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   944
+  nsTArray<nsCString> output;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   945
+  if (nsKDEUtils::command(command, &output) && output.Length() == 3) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   946
+    nsCString mimetype = output[0];
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   947
+    RefPtr<nsMIMEInfoUnix> mimeInfo = new nsMIMEInfoUnix(mimetype);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   948
+    NS_ENSURE_TRUE(mimeInfo, nullptr);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   949
+    nsCString description = output[1];
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   950
+    mimeInfo->SetDescription(NS_ConvertUTF8toUTF16(description));
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   951
+    nsCString handlerAppName = output[2];
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   952
+    mimeInfo->SetPreferredAction(nsIMIMEInfo::saveToDisk);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   953
+    mimeInfo->SetDefaultDescription(NS_ConvertUTF8toUTF16(handlerAppName));
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   954
+    return mimeInfo.forget();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   955
+  }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   956
+  return nullptr;
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   957
+}
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   958
diff --git a/uriloader/exthandler/unix/nsKDERegistry.h b/uriloader/exthandler/unix/nsKDERegistry.h
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   959
new file mode 100644
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   960
--- /dev/null
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   961
+++ b/uriloader/exthandler/unix/nsKDERegistry.h
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   962
@@ -0,0 +1,35 @@
546
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   963
+/* This Source Code Form is subject to the terms of the Mozilla Public
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   964
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
2c9448fe783c MPL-2.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 541
diff changeset
   965
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   966
+
757
7913ca5779dc header guards
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 748
diff changeset
   967
+#ifndef nsKDERegistry_h__
7913ca5779dc header guards
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 748
diff changeset
   968
+#define nsKDERegistry_h__
7913ca5779dc header guards
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 748
diff changeset
   969
+
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   970
+#include "nsIURI.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   971
+#include "nsCOMPtr.h"
367
3fabd9f66322 begin Firefox 10 cycle
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 356
diff changeset
   972
+#include "nsTArray.h"
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   973
+
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   974
+class nsMIMEInfoBase;
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   975
+// class nsAutoCString;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   976
+// class nsCString;
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   977
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   978
+class nsKDERegistry {
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   979
+ public:
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   980
+  static bool HandlerExists(const char* aProtocolScheme);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   981
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   982
+  static nsresult LoadURL(nsIURI* aURL);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   983
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   984
+  static void GetAppDescForScheme(const nsACString& aScheme, nsAString& aDesc);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   985
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   986
+  static already_AddRefed<nsMIMEInfoBase> GetFromExtension(
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   987
+      const nsACString& aFileExt);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   988
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   989
+  static already_AddRefed<nsMIMEInfoBase> GetFromType(
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   990
+      const nsACString& aMIMEType);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   991
+
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   992
+ private:
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   993
+  static already_AddRefed<nsMIMEInfoBase> GetFromHelper(
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   994
+      const nsTArray<nsCString>& command);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
   995
+};
757
7913ca5779dc header guards
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 748
diff changeset
   996
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
   997
+#endif  // nsKDERegistry_h__
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   998
diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
   999
--- a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1000
+++ b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1001
@@ -1,48 +1,51 @@
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1002
 /* -*- Mode: C++; tab-width: 3; indent-tabs-mode: nil; c-basic-offset: 2 -*-
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1003
  *
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1004
  * This Source Code Form is subject to the terms of the Mozilla Public
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1005
  * License, v. 2.0. If a copy of the MPL was not distributed with this
932
a58cc7936ce7 Firefox 50.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 929
diff changeset
  1006
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1007
 
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1008
 #include "nsMIMEInfoUnix.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1009
-#include "nsGNOMERegistry.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1010
+#include "nsCommonRegistry.h"
127
4c86470ed796 Reenabling KDE integration patches (part 1: rebase and reenable; might need post-fixes)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 64
diff changeset
  1011
 #include "nsIGIOService.h"
236
a4f5954df3a3 update for 2.0/4.0rc1
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 229
diff changeset
  1012
 #include "nsNetCID.h"
a4f5954df3a3 update for 2.0/4.0rc1
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 229
diff changeset
  1013
 #include "nsIIOService.h"
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1014
 #ifdef MOZ_ENABLE_DBUS
1089
eca1c1f2fe50 Firefox 66.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1085
diff changeset
  1015
 #  include "nsDBusHandlerApp.h"
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1016
 #endif
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1017
+#if defined(XP_UNIX) && !defined(XP_MACOSX)
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1018
+#  include "nsKDEUtils.h"
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1019
+#endif
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1020
 
1097
840132a4a9b3 Firefox 68.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1093
diff changeset
  1021
 nsresult nsMIMEInfoUnix::LoadUriInternal(nsIURI* aURI) {
932
a58cc7936ce7 Firefox 50.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 929
diff changeset
  1022
-  return nsGNOMERegistry::LoadURL(aURI);
a58cc7936ce7 Firefox 50.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 929
diff changeset
  1023
+  return nsCommonRegistry::LoadURL(aURI);
a58cc7936ce7 Firefox 50.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 929
diff changeset
  1024
 }
127
4c86470ed796 Reenabling KDE integration patches (part 1: rebase and reenable; might need post-fixes)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 64
diff changeset
  1025
 
932
a58cc7936ce7 Firefox 50.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 929
diff changeset
  1026
 NS_IMETHODIMP
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1027
 nsMIMEInfoUnix::GetHasDefaultHandler(bool* _retval) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1028
   // if a default app is set, it means the application has been set from
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1029
   // either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1030
   // give the GNOME answer.
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1031
   if (GetDefaultApplication()) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1032
     return nsMIMEInfoImpl::GetHasDefaultHandler(_retval);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1033
   }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1034
 
367
3fabd9f66322 begin Firefox 10 cycle
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 356
diff changeset
  1035
   *_retval = false;
738
f118b88b7d7f Aurora 31 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 718
diff changeset
  1036
 
850
a2bdff616a0e prepare 38beta
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 837
diff changeset
  1037
   if (mClass == eProtocolInfo) {
738
f118b88b7d7f Aurora 31 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 718
diff changeset
  1038
-    *_retval = nsGNOMERegistry::HandlerExists(mSchemeOrType.get());
f118b88b7d7f Aurora 31 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 718
diff changeset
  1039
+    *_retval = nsCommonRegistry::HandlerExists(mSchemeOrType.get());
f118b88b7d7f Aurora 31 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 718
diff changeset
  1040
   } else {
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
  1041
     RefPtr<nsMIMEInfoBase> mimeInfo =
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
  1042
-        nsGNOMERegistry::GetFromType(mSchemeOrType);
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
  1043
+        nsCommonRegistry::GetFromType(mSchemeOrType);
738
f118b88b7d7f Aurora 31 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 718
diff changeset
  1044
     if (!mimeInfo) {
f118b88b7d7f Aurora 31 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 718
diff changeset
  1045
       nsAutoCString ext;
f118b88b7d7f Aurora 31 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 718
diff changeset
  1046
       nsresult rv = GetPrimaryExtension(ext);
f118b88b7d7f Aurora 31 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 718
diff changeset
  1047
       if (NS_SUCCEEDED(rv)) {
f118b88b7d7f Aurora 31 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 718
diff changeset
  1048
-        mimeInfo = nsGNOMERegistry::GetFromExtension(ext);
f118b88b7d7f Aurora 31 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 718
diff changeset
  1049
+        mimeInfo = nsCommonRegistry::GetFromExtension(ext);
f118b88b7d7f Aurora 31 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 718
diff changeset
  1050
       }
127
4c86470ed796 Reenabling KDE integration patches (part 1: rebase and reenable; might need post-fixes)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 64
diff changeset
  1051
     }
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
  1052
     if (mimeInfo) *_retval = true;
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1053
   }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1054
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1055
   if (*_retval) return NS_OK;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1056
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1057
   return NS_OK;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1058
@@ -54,16 +57,31 @@ nsresult nsMIMEInfoUnix::LaunchDefaultWi
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1059
   // give the GNOME answer.
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1060
   if (GetDefaultApplication()) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1061
     return nsMIMEInfoImpl::LaunchDefaultWithFile(aFile);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1062
   }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1063
 
1032
8220ea23b47d remove obsolete patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1021
diff changeset
  1064
   nsAutoCString nativePath;
8220ea23b47d remove obsolete patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1021
diff changeset
  1065
   aFile->GetNativePath(nativePath);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1066
 
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1067
+  if (nsKDEUtils::kdeSupport()) {
367
3fabd9f66322 begin Firefox 10 cycle
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 356
diff changeset
  1068
+    bool supports;
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1069
+    if (NS_SUCCEEDED(GetHasDefaultHandler(&supports)) && supports) {
367
3fabd9f66322 begin Firefox 10 cycle
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 356
diff changeset
  1070
+      nsTArray<nsCString> command;
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1071
+      command.AppendElement("OPEN"_ns);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1072
+      command.AppendElement(nativePath);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1073
+      command.AppendElement("MIMETYPE"_ns);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1074
+      command.AppendElement(mSchemeOrType);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1075
+      if (nsKDEUtils::command(command)) return NS_OK;
64
7bb1edb78dd5 Update to 1.9.2.4/3.6.4pre to prepare the bigger Lorentz merge
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 59
diff changeset
  1076
+    }
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1077
+    if (!GetDefaultApplication()) return NS_ERROR_FILE_NOT_FOUND;
64
7bb1edb78dd5 Update to 1.9.2.4/3.6.4pre to prepare the bigger Lorentz merge
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 59
diff changeset
  1078
+
1188
a2caa2a2494f Firefox 112.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1184
diff changeset
  1079
+    return LaunchWithIProcess(GetDefaultApplication(), nativePath);
64
7bb1edb78dd5 Update to 1.9.2.4/3.6.4pre to prepare the bigger Lorentz merge
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 59
diff changeset
  1080
+  }
7bb1edb78dd5 Update to 1.9.2.4/3.6.4pre to prepare the bigger Lorentz merge
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 59
diff changeset
  1081
+
127
4c86470ed796 Reenabling KDE integration patches (part 1: rebase and reenable; might need post-fixes)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 64
diff changeset
  1082
   nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
850
a2bdff616a0e prepare 38beta
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 837
diff changeset
  1083
   if (!giovfs) {
a2bdff616a0e prepare 38beta
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 837
diff changeset
  1084
     return NS_ERROR_FAILURE;
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1085
   }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1086
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1087
   // nsGIOMimeApp->Launch wants a URI string instead of local file
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1088
   nsresult rv;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1089
   nsCOMPtr<nsIIOService> ioservice =
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1090
diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exthandler/unix/nsOSHelperAppService.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1091
--- a/uriloader/exthandler/unix/nsOSHelperAppService.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1092
+++ b/uriloader/exthandler/unix/nsOSHelperAppService.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1093
@@ -5,17 +5,17 @@
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1094
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1095
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1096
 #include <sys/types.h>
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1097
 #include <sys/stat.h>
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1098
 
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1099
 #include "nsOSHelperAppService.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1100
 #include "nsMIMEInfoUnix.h"
659
fa96cf6ffd14 Aurora 24 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 653
diff changeset
  1101
 #ifdef MOZ_WIDGET_GTK
1089
eca1c1f2fe50 Firefox 66.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1085
diff changeset
  1102
-#  include "nsGNOMERegistry.h"
eca1c1f2fe50 Firefox 66.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1085
diff changeset
  1103
+#  include "nsCommonRegistry.h"
1159
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
  1104
 #  ifdef MOZ_BUILD_APP_IS_BROWSER
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
  1105
 #    include "nsIToolkitShellService.h"
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
  1106
 #    include "nsIGNOMEShellService.h"
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1107
 #  endif
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1108
 #endif
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1109
 #include "nsISupports.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1110
 #include "nsString.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1111
 #include "nsReadableUtils.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1112
@@ -1101,17 +1101,17 @@ nsresult nsOSHelperAppService::GetHandle
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1113
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1114
 nsresult nsOSHelperAppService::OSProtocolHandlerExists(
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1115
     const char* aProtocolScheme, bool* aHandlerExists) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1116
   nsresult rv = NS_OK;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1117
 
1020
d2c159cb9bf2 rebased patches; updated spec file
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1014
diff changeset
  1118
   if (!XRE_IsContentProcess()) {
659
fa96cf6ffd14 Aurora 24 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 653
diff changeset
  1119
 #ifdef MOZ_WIDGET_GTK
1020
d2c159cb9bf2 rebased patches; updated spec file
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1014
diff changeset
  1120
     // Check the GNOME registry for a protocol handler
d2c159cb9bf2 rebased patches; updated spec file
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1014
diff changeset
  1121
-    *aHandlerExists = nsGNOMERegistry::HandlerExists(aProtocolScheme);
d2c159cb9bf2 rebased patches; updated spec file
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1014
diff changeset
  1122
+    *aHandlerExists = nsCommonRegistry::HandlerExists(aProtocolScheme);
d2c159cb9bf2 rebased patches; updated spec file
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1014
diff changeset
  1123
 #else
d2c159cb9bf2 rebased patches; updated spec file
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1014
diff changeset
  1124
     *aHandlerExists = false;
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1125
 #endif
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1126
   } else {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1127
     *aHandlerExists = false;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1128
     nsCOMPtr<nsIHandlerService> handlerSvc =
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1129
         do_GetService(NS_HANDLERSERVICE_CONTRACTID, &rv);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1130
     if (NS_SUCCEEDED(rv) && handlerSvc) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1131
@@ -1121,17 +1121,17 @@ nsresult nsOSHelperAppService::OSProtoco
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1132
   }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1133
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1134
   return rv;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1135
 }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1136
 
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
  1137
 NS_IMETHODIMP nsOSHelperAppService::GetApplicationDescription(
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
  1138
     const nsACString& aScheme, nsAString& _retval) {
659
fa96cf6ffd14 Aurora 24 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 653
diff changeset
  1139
 #ifdef MOZ_WIDGET_GTK
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1140
-  nsGNOMERegistry::GetAppDescForScheme(aScheme, _retval);
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1141
+  nsCommonRegistry::GetAppDescForScheme(aScheme, _retval);
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1142
   return _retval.IsEmpty() ? NS_ERROR_NOT_AVAILABLE : NS_OK;
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1143
 #else
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1144
   return NS_ERROR_NOT_AVAILABLE;
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1145
 #endif
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1146
 }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1147
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1148
 NS_IMETHODIMP nsOSHelperAppService::IsCurrentAppOSDefaultForProtocol(
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1149
     const nsACString& aScheme, bool* _retval) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1150
@@ -1226,17 +1226,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1151
   nsresult rv =
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1152
       LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1153
                                minorType, mime_types_description, true);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1154
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1155
   if (NS_FAILED(rv) || majorType.IsEmpty()) {
659
fa96cf6ffd14 Aurora 24 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 653
diff changeset
  1156
 #ifdef MOZ_WIDGET_GTK
1178
e27c6e9c5c63 104.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1177
diff changeset
  1157
     LOG("Looking in GNOME registry\n");
899
44a28160de40 prepare 44.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 893
diff changeset
  1158
     RefPtr<nsMIMEInfoBase> gnomeInfo =
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
  1159
-        nsGNOMERegistry::GetFromExtension(aFileExt);
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
  1160
+        nsCommonRegistry::GetFromExtension(aFileExt);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1161
     if (gnomeInfo) {
1178
e27c6e9c5c63 104.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1177
diff changeset
  1162
       LOG("Got MIMEInfo from GNOME registry\n");
653
38c67b6b2f37 Aurora 23 (20130616)
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 650
diff changeset
  1163
       return gnomeInfo.forget();
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1164
     }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1165
 #endif
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1166
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1167
     rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1168
                                   minorType, mime_types_description, false);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1169
@@ -1339,17 +1339,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1170
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1171
   // Now look up our extensions
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1172
   nsAutoString extensions, mime_types_description;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1173
   LookUpExtensionsAndDescription(majorType, minorType, extensions,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1174
                                  mime_types_description);
850
a2bdff616a0e prepare 38beta
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 837
diff changeset
  1175
 
659
fa96cf6ffd14 Aurora 24 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 653
diff changeset
  1176
 #ifdef MOZ_WIDGET_GTK
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1177
   if (handler.IsEmpty()) {
899
44a28160de40 prepare 44.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 893
diff changeset
  1178
-    RefPtr<nsMIMEInfoBase> gnomeInfo = nsGNOMERegistry::GetFromType(aMIMEType);
44a28160de40 prepare 44.0b9
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 893
diff changeset
  1179
+    RefPtr<nsMIMEInfoBase> gnomeInfo = nsCommonRegistry::GetFromType(aMIMEType);
850
a2bdff616a0e prepare 38beta
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 837
diff changeset
  1180
     if (gnomeInfo) {
1178
e27c6e9c5c63 104.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1177
diff changeset
  1181
       LOG("Got MIMEInfo from GNOME registry without extensions; setting them "
e27c6e9c5c63 104.0.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1177
diff changeset
  1182
           "to %s\n",
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1183
           NS_LossyConvertUTF16toASCII(extensions).get());
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1184
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1185
       NS_ASSERTION(!gnomeInfo->HasExtensions(), "How'd that happen?");
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1186
       gnomeInfo->SetFileExtensions(NS_ConvertUTF16toUTF8(extensions));
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1187
       return gnomeInfo.forget();
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1188
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1189
--- a/widget/gtk/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1190
+++ b/widget/gtk/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1191
@@ -146,16 +146,17 @@ FINAL_LIBRARY = "xul"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1192
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1193
 LOCAL_INCLUDES += [
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1194
     "/layout/base",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1195
     "/layout/forms",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1196
     "/layout/generic",
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
  1197
     "/layout/xul",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
  1198
     "/other-licenses/atk-1.0",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
  1199
     "/third_party/cups/include",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
  1200
+    "/toolkit/xre",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
  1201
     "/widget",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
  1202
     "/widget/headless",
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1203
     "/widget/x11",
779
354c672efefa rebased patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 766
diff changeset
  1204
 ]
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1205
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1206
 DEFINES["CAIRO_GFX"] = True
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1207
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1208
 DEFINES["MOZ_APP_NAME"] = '"%s"' % CONFIG["MOZ_APP_NAME"]
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1209
diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1210
--- a/widget/gtk/nsFilePicker.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1211
+++ b/widget/gtk/nsFilePicker.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1212
@@ -1,15 +1,16 @@
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1213
 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1214
 /* This Source Code Form is subject to the terms of the Mozilla Public
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1215
  * License, v. 2.0. If a copy of the MPL was not distributed with this
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1216
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
10
1920f0ff04a3 Make mozilla-kde.patch compile with 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 9
diff changeset
  1217
 
1121
004e4b1efb26 Firefox 73.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1119
diff changeset
  1218
 #include <dlfcn.h>
004e4b1efb26 Firefox 73.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1119
diff changeset
  1219
 #include <gtk/gtk.h>
004e4b1efb26 Firefox 73.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1119
diff changeset
  1220
+#include <gdk/gdkx.h>
837
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 828
diff changeset
  1221
 #include <sys/types.h>
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 828
diff changeset
  1222
 #include <sys/stat.h>
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 828
diff changeset
  1223
 #include <unistd.h>
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1224
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1225
 #include "mozilla/Types.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1226
 #include "nsGtkUtils.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1227
 #include "nsIFileURL.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1228
 #include "nsIGIOService.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1229
@@ -23,16 +24,18 @@
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1230
 #include "nsArrayEnumerator.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1231
 #include "nsEnumeratorUtils.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1232
 #include "nsNetUtil.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1233
 #include "nsReadableUtils.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1234
 #include "MozContainer.h"
1159
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
  1235
 #include "WidgetUtilsGtk.h"
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1236
 
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1237
 #include "nsFilePicker.h"
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1238
+#include "nsKDEUtils.h"
1125
3fd9346c90a6 Firefox 76.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1124
diff changeset
  1239
+#include "nsURLHelper.h"
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1240
 
1159
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
  1241
 #undef LOG
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1157
diff changeset
  1242
 #ifdef MOZ_LOGGING
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1243
 #  include "mozilla/Logging.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1244
 #  include "nsTArray.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1245
 #  include "Units.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1246
 extern mozilla::LazyLogModule gWidgetLog;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1247
 #  define LOG(args) MOZ_LOG(gWidgetLog, mozilla::LogLevel::Debug, args)
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1248
@@ -237,17 +240,18 @@ nsFilePicker::AppendFilters(int32_t aFil
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1249
   mAllowURLs = !!(aFilterMask & filterAllowURLs);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1250
   return nsBaseFilePicker::AppendFilters(aFilterMask);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1251
 }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1252
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1253
 NS_IMETHODIMP
1097
840132a4a9b3 Firefox 68.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1093
diff changeset
  1254
 nsFilePicker::AppendFilter(const nsAString& aTitle, const nsAString& aFilter) {
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1255
   if (aFilter.EqualsLiteral("..apps")) {
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1256
     // No platform specific thing we can do here, really....
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1257
-    return NS_OK;
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1258
+    // Unless it's KDE.
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1259
+    if (mMode != modeOpen || !nsKDEUtils::kdeSupport()) return NS_OK;
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1260
   }
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1261
 
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 546
diff changeset
  1262
   nsAutoCString filter, name;
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1263
   CopyUTF16toUTF8(aFilter, filter);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1264
   CopyUTF16toUTF8(aTitle, name);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1265
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1266
   mFilters.AppendElement(filter);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1267
   mFilterNames.AppendElement(name);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1268
@@ -347,16 +351,41 @@ nsresult nsFilePicker::Show(nsIFilePicke
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1269
   return NS_OK;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1270
 }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1271
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1272
 NS_IMETHODIMP
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1273
 nsFilePicker::Open(nsIFilePickerShownCallback* aCallback) {
589
b3ff3d8ebf9d fix KDE filedialog
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
  1274
   // Can't show two dialogs concurrently with the same filepicker
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
  1275
   if (mRunning) return NS_ERROR_NOT_AVAILABLE;
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1276
 
589
b3ff3d8ebf9d fix KDE filedialog
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
  1277
+  // KDE file picker is not handled via callback
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1278
+  if (nsKDEUtils::kdeSupport()) {
589
b3ff3d8ebf9d fix KDE filedialog
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
  1279
+    mCallback = aCallback;
b3ff3d8ebf9d fix KDE filedialog
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
  1280
+    mRunning = true;
1013
a71985fab8e5 Bug 1069962 Tumbleweed: OpenSuse's Firefox version crashes when "cancel" pressed in "File Upload" dialogue, e.g. TYPO3, BUGZILLA
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1007
diff changeset
  1281
+    NS_ADDREF_THIS();
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1282
+    g_idle_add(
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1283
+        [](gpointer data) -> gboolean {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1284
+          nsFilePicker* queuedPicker = (nsFilePicker*)data;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1285
+          nsIFilePicker::ResultCode result;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1286
+          queuedPicker->kdeFileDialog(&result);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1287
+          if (queuedPicker->mCallback) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1288
+            queuedPicker->mCallback->Done(result);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1289
+            queuedPicker->mCallback = nullptr;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1290
+          } else {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1291
+            queuedPicker->mResult = result;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1292
+          }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1293
+          queuedPicker->mRunning = false;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1294
+          NS_RELEASE(queuedPicker);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1295
+          return G_SOURCE_REMOVE;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1296
+        },
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1297
+        this);
999
932b3ad009d5 improve KDE patch:
Ignaz Forster <ignaz.forster@muenchen.de>
parents: 994
diff changeset
  1298
+
589
b3ff3d8ebf9d fix KDE filedialog
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
  1299
+    return NS_OK;
b3ff3d8ebf9d fix KDE filedialog
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
  1300
+  }
399
20f8b5f0aea6 port KDE patches to Gecko 11
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 398
diff changeset
  1301
+
1124
f890ebd6b627 Firefox 75.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1123
diff changeset
  1302
   NS_ConvertUTF16toUTF8 title(mTitle);
589
b3ff3d8ebf9d fix KDE filedialog
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 568
diff changeset
  1303
 
1097
840132a4a9b3 Firefox 68.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1093
diff changeset
  1304
   GtkWindow* parent_widget =
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1305
       GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1306
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1307
   GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1308
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1309
   const gchar* accept_button;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1310
@@ -628,16 +657,215 @@ void nsFilePicker::Done(void* file_choos
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1311
     mCallback->Done(result);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1312
     mCallback = nullptr;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1313
   } else {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1314
     mResult = result;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1315
   }
541
830e50bbfc79 working Aurora 17.0 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 538
diff changeset
  1316
   NS_RELEASE_THIS();
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1317
 }
1082
821cfbe8efcc Firefox 64.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1074
diff changeset
  1318
 
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1319
+nsCString nsFilePicker::kdeMakeFilter(int index) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1320
+  nsCString buf = mFilters[index];
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1321
+  for (PRUint32 i = 0; i < buf.Length(); ++i)
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1322
+    if (buf[i] == ';')  // KDE separates just using spaces
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1323
+      buf.SetCharAt(' ', i);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1324
+  if (!mFilterNames[index].IsEmpty()) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1325
+    buf += "|";
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1326
+    buf += mFilterNames[index].get();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1327
+  }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1328
+  return buf;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1329
+}
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1330
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1331
+static PRInt32 windowToXid(nsIWidget* widget) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1332
+  GtkWindow* parent_widget =
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1333
+      GTK_WINDOW(widget->GetNativeData(NS_NATIVE_SHELLWIDGET));
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1334
+  GdkWindow* gdk_window =
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1335
+      gtk_widget_get_window(gtk_widget_get_toplevel(GTK_WIDGET(parent_widget)));
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1336
+  return GDK_WINDOW_XID(gdk_window);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1337
+}
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1338
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1339
+NS_IMETHODIMP nsFilePicker::kdeFileDialog(nsIFilePicker::ResultCode* aReturn) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1340
+  NS_ENSURE_ARG_POINTER(aReturn);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1341
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1342
+  if (mMode == modeOpen && mFilters.Length() == 1 &&
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1343
+      mFilters[0].EqualsLiteral("..apps"))
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1344
+    return kdeAppsDialog(aReturn);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1345
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1346
+  nsCString title;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1347
+  title.Adopt(ToNewUTF8String(mTitle));
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1348
+
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1349
+  const char* arg = NULL;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1350
+  if (mAllowURLs) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1351
+    switch (mMode) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1352
+      case nsIFilePicker::modeOpen:
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1353
+      case nsIFilePicker::modeOpenMultiple:
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1354
+        arg = "GETOPENURL";
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1355
+        break;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1356
+      case nsIFilePicker::modeSave:
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1357
+        arg = "GETSAVEURL";
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1358
+        break;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1359
+      case nsIFilePicker::modeGetFolder:
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1360
+        arg = "GETDIRECTORYURL";
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1361
+        break;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1362
+    }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1363
+  } else {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1364
+    switch (mMode) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1365
+      case nsIFilePicker::modeOpen:
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1366
+      case nsIFilePicker::modeOpenMultiple:
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1367
+        arg = "GETOPENFILENAME";
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1368
+        break;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1369
+      case nsIFilePicker::modeSave:
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1370
+        arg = "GETSAVEFILENAME";
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1371
+        break;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1372
+      case nsIFilePicker::modeGetFolder:
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1373
+        arg = "GETDIRECTORYFILENAME";
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1374
+        break;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1375
+    }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1376
+  }
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1377
+
568
2c74c5927ea2 first working Aurora 18 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 546
diff changeset
  1378
+  nsAutoCString directory;
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1379
+  if (mDisplayDirectory) {
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1380
+    mDisplayDirectory->GetNativePath(directory);
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1381
+  } else if (mPrevDisplayDirectory) {
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1382
+    mPrevDisplayDirectory->GetNativePath(directory);
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1383
+  }
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1384
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1385
+  nsAutoCString startdir;
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1386
+  if (!directory.IsEmpty()) {
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1387
+    startdir = directory;
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1388
+  }
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1389
+  if (mMode == nsIFilePicker::modeSave) {
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1390
+    if (!startdir.IsEmpty()) {
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1391
+      startdir += "/";
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1392
+      startdir += ToNewUTF8String(mDefault);
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1393
+    } else
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1394
+      startdir = ToNewUTF8String(mDefault);
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1395
+  }
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1396
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1397
+  nsAutoCString filters;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1398
+  PRInt32 count = mFilters.Length();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1399
+  if (count == 0)  // just in case
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1400
+    filters = "*";
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1401
+  else {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1402
+    filters = kdeMakeFilter(0);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1403
+    for (PRInt32 i = 1; i < count; ++i) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1404
+      filters += "\n";
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1405
+      filters += kdeMakeFilter(i);
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1406
+    }
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1407
+  }
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1408
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1409
+  nsTArray<nsCString> command;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1410
+  command.AppendElement(nsAutoCString(arg));
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1411
+  command.AppendElement(startdir);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1412
+  if (mMode != nsIFilePicker::modeGetFolder) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1413
+    command.AppendElement(filters);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1414
+    nsAutoCString selected;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1415
+    selected.AppendInt(mSelectedType);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1416
+    command.AppendElement(selected);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1417
+  }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1418
+  command.AppendElement(title);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1419
+  if (mMode == nsIFilePicker::modeOpenMultiple)
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1420
+    command.AppendElement("MULTIPLE"_ns);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1421
+  if (PRInt32 xid = windowToXid(mParentWidget)) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1422
+    command.AppendElement("PARENT"_ns);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1423
+    nsAutoCString parent;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1424
+    parent.AppendInt(xid);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1425
+    command.AppendElement(parent);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1426
+  }
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1427
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1428
+  nsTArray<nsCString> output;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1429
+  if (nsKDEUtils::commandBlockUi(
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1430
+          command,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1431
+          GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET)),
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1432
+          &output)) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1433
+    *aReturn = nsIFilePicker::returnOK;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1434
+    mFiles.Clear();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1435
+    if (mMode != nsIFilePicker::modeGetFolder) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1436
+      mSelectedType = atoi(output[0].get());
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1437
+      output.RemoveElementAt(0);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1438
+    }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1439
+    if (mMode == nsIFilePicker::modeOpenMultiple) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1440
+      mFileURL.Truncate();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1441
+      PRUint32 count = output.Length();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1442
+      for (PRUint32 i = 0; i < count; ++i) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1443
+        nsCOMPtr<nsIFile> localfile;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1444
+        nsresult rv = NS_NewNativeLocalFile(output[i], PR_FALSE,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1445
+                                            getter_AddRefs(localfile));
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1446
+        if (NS_SUCCEEDED(rv)) mFiles.AppendObject(localfile);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1447
+      }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1448
+    } else {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1449
+      if (output.Length() == 0)
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1450
+        mFileURL = nsCString();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1451
+      else if (mAllowURLs)
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1452
+        mFileURL = output[0];
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1453
+      else  // GetFile() actually requires it to be url even for local files :-/
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1454
+      {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1455
+        nsCOMPtr<nsIFile> localfile;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1456
+        nsresult rv = NS_NewNativeLocalFile(output[0], PR_FALSE,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1457
+                                            getter_AddRefs(localfile));
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1458
+        if (NS_SUCCEEDED(rv))
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1459
+          rv = net_GetURLSpecFromActualFile(localfile, mFileURL);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1460
+      }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1461
+    }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1462
+    // Remember last used directory.
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1463
+    nsCOMPtr<nsIFile> file;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1464
+    GetFile(getter_AddRefs(file));
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1465
+    if (file) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1466
+      nsCOMPtr<nsIFile> dir;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1467
+      file->GetParent(getter_AddRefs(dir));
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1468
+      nsCOMPtr<nsIFile> localDir(dir);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1469
+      if (localDir) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1470
+        localDir.swap(mPrevDisplayDirectory);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1471
+      }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1472
+    }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1473
+    if (mMode == nsIFilePicker::modeSave) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1474
+      nsCOMPtr<nsIFile> file;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1475
+      GetFile(getter_AddRefs(file));
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1476
+      if (file) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1477
+        bool exists = false;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1478
+        file->Exists(&exists);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1479
+        if (exists)  // TODO do overwrite check in the helper app
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1480
+          *aReturn = nsIFilePicker::returnReplace;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1481
+      }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1482
+    }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1483
+  } else {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1484
+    *aReturn = nsIFilePicker::returnCancel;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1485
+  }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1486
+  return NS_OK;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1487
+}
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1488
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1489
+NS_IMETHODIMP nsFilePicker::kdeAppsDialog(nsIFilePicker::ResultCode* aReturn) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1490
+  NS_ENSURE_ARG_POINTER(aReturn);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1491
+
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1492
+  nsCString title;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1493
+  title.Adopt(ToNewUTF8String(mTitle));
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1494
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1495
+  nsTArray<nsCString> command;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1496
+  command.AppendElement("APPSDIALOG"_ns);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1497
+  command.AppendElement(title);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1498
+  if (PRInt32 xid = windowToXid(mParentWidget)) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1499
+    command.AppendElement("PARENT"_ns);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1500
+    nsAutoCString parent;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1501
+    parent.AppendInt(xid);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1502
+    command.AppendElement(parent);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1503
+  }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1504
+
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1505
+  nsTArray<nsCString> output;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1506
+  if (nsKDEUtils::commandBlockUi(
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1507
+          command,
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1508
+          GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET)),
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1509
+          &output)) {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1510
+    *aReturn = nsIFilePicker::returnOK;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1511
+    mFileURL = output.Length() > 0 ? output[0] : nsCString();
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1512
+  } else {
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1513
+    *aReturn = nsIFilePicker::returnCancel;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1514
+  }
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1515
+  return NS_OK;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1516
+}
541
830e50bbfc79 working Aurora 17.0 build
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 538
diff changeset
  1517
+
1082
821cfbe8efcc Firefox 64.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1074
diff changeset
  1518
 // All below functions available as of GTK 3.20+
1097
840132a4a9b3 Firefox 68.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1093
diff changeset
  1519
 void* nsFilePicker::GtkFileChooserNew(const gchar* title, GtkWindow* parent,
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
  1520
                                       GtkFileChooserAction action,
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1521
                                       const gchar* accept_label) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1522
   static auto sGtkFileChooserNativeNewPtr =
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1523
       (void* (*)(const gchar*, GtkWindow*, GtkFileChooserAction, const gchar*,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1524
                  const gchar*))dlsym(RTLD_DEFAULT,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1525
                                      "gtk_file_chooser_native_new");
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1526
diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1527
--- a/widget/gtk/nsFilePicker.h
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1528
+++ b/widget/gtk/nsFilePicker.h
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1529
@@ -69,16 +69,22 @@ class nsFilePicker : public nsBaseFilePi
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1530
   nsString mDefaultExtension;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1531
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1532
   nsTArray<nsCString> mFilters;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1533
   nsTArray<nsCString> mFilterNames;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1534
 
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
  1535
  private:
1097
840132a4a9b3 Firefox 68.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1093
diff changeset
  1536
   static nsIFile* mPrevDisplayDirectory;
881
1268ddc9dc16 rebased patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 869
diff changeset
  1537
 
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1538
+  bool kdeRunning();
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1539
+  bool getKdeRunning();
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1540
+  NS_IMETHODIMP kdeFileDialog(nsIFilePicker::ResultCode* aReturn);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1541
+  NS_IMETHODIMP kdeAppsDialog(nsIFilePicker::ResultCode* aReturn);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1542
+  nsCString kdeMakeFilter(int index);
881
1268ddc9dc16 rebased patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 869
diff changeset
  1543
+
1097
840132a4a9b3 Firefox 68.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1093
diff changeset
  1544
   void* GtkFileChooserNew(const gchar* title, GtkWindow* parent,
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
  1545
                           GtkFileChooserAction action,
1097
840132a4a9b3 Firefox 68.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1093
diff changeset
  1546
                           const gchar* accept_label);
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1547
   void GtkFileChooserShow(void* file_chooser);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1548
   void GtkFileChooserDestroy(void* file_chooser);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1549
   void GtkFileChooserSetModal(void* file_chooser, GtkWindow* parent_widget,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1550
                               gboolean modal);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1551
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1552
diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1553
--- a/xpcom/components/ManifestParser.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1554
+++ b/xpcom/components/ManifestParser.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1555
@@ -38,16 +38,17 @@
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1556
 #include "nsTextFormatter.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1557
 #include "nsVersionComparator.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1558
 #include "nsXPCOMCIDInternal.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1559
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1560
 #include "nsIConsoleService.h"
419
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1561
 #include "nsIScriptError.h"
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1562
 #include "nsIXULAppInfo.h"
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1563
 #include "nsIXULRuntime.h"
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1564
+#include "nsKDEUtils.h"
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1565
 
935
9ae2b79d3bb1 prepare FF 51 -> 51.0b14
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 932
diff changeset
  1566
 using namespace mozilla;
9ae2b79d3bb1 prepare FF 51 -> 51.0b14
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 932
diff changeset
  1567
 
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1568
 struct ManifestDirective {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1569
   const char* directive;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1570
   int argc;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1571
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1572
   bool ischrome;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1573
@@ -389,16 +390,17 @@ void ParseManifest(NSLocationType aType,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1574
   constexpr auto kRemoteEnabled = u"remoteenabled"_ns;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1575
   constexpr auto kRemoteRequired = u"remoterequired"_ns;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1576
   constexpr auto kApplication = u"application"_ns;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1577
   constexpr auto kAppVersion = u"appversion"_ns;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1578
   constexpr auto kGeckoVersion = u"platformversion"_ns;
1141
edb0ebe8cccc Firefox 80.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1140
diff changeset
  1579
   constexpr auto kOs = u"os"_ns;
edb0ebe8cccc Firefox 80.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1140
diff changeset
  1580
   constexpr auto kOsVersion = u"osversion"_ns;
edb0ebe8cccc Firefox 80.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1140
diff changeset
  1581
   constexpr auto kABI = u"abi"_ns;
edb0ebe8cccc Firefox 80.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1140
diff changeset
  1582
+  constexpr auto kDesktop = u"desktop"_ns;
edb0ebe8cccc Firefox 80.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1140
diff changeset
  1583
   constexpr auto kProcess = u"process"_ns;
419
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1584
 #if defined(MOZ_WIDGET_ANDROID)
1141
edb0ebe8cccc Firefox 80.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1140
diff changeset
  1585
   constexpr auto kTablet = u"tablet"_ns;
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1586
 #endif
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1587
   // You might expect this to be guarded by MOZ_BACKGROUNDTASKS, but it's not
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1588
   // possible to have conditional manifest contents, so we need to recognize and
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1589
   // discard these tokens even when MOZ_BACKGROUNDTASKS is not set.
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1590
   constexpr auto kBackgroundTask = u"backgroundtask"_ns;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1591
@@ -448,39 +450,44 @@ void ParseManifest(NSLocationType aType,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1592
         CopyUTF8toUTF16(s, abi);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1593
         abi.Insert(char16_t('_'), 0);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1594
         abi.Insert(osTarget, 0);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1595
       }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1596
     }
419
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1597
   }
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1598
 
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1599
   nsAutoString osVersion;
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1600
+  nsAutoString desktop;
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1601
 #if defined(XP_WIN)
1089
eca1c1f2fe50 Firefox 66.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1085
diff changeset
  1602
 #  pragma warning(push)
eca1c1f2fe50 Firefox 66.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1085
diff changeset
  1603
 #  pragma warning(disable : 4996)  // VC12+ deprecates GetVersionEx
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1604
   OSVERSIONINFO info = {sizeof(OSVERSIONINFO)};
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1605
   if (GetVersionEx(&info)) {
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
  1606
     nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", info.dwMajorVersion,
779
354c672efefa rebased patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 766
diff changeset
  1607
                               info.dwMinorVersion);
419
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1608
   }
1141
edb0ebe8cccc Firefox 80.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1140
diff changeset
  1609
+  desktop = u"win"_ns;
1089
eca1c1f2fe50 Firefox 66.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1085
diff changeset
  1610
 #  pragma warning(pop)
419
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1611
 #elif defined(MOZ_WIDGET_COCOA)
1130
ea7152ed4a37 78.0.b5
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1127
diff changeset
  1612
   SInt32 majorVersion = nsCocoaFeatures::macOSVersionMajor();
ea7152ed4a37 78.0.b5
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1127
diff changeset
  1613
   SInt32 minorVersion = nsCocoaFeatures::macOSVersionMinor();
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
  1614
   nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", majorVersion, minorVersion);
1141
edb0ebe8cccc Firefox 80.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1140
diff changeset
  1615
+  desktop = u"macosx"_ns);
659
fa96cf6ffd14 Aurora 24 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 653
diff changeset
  1616
 #elif defined(MOZ_WIDGET_GTK)
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
  1617
   nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", gtk_major_version,
779
354c672efefa rebased patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 766
diff changeset
  1618
                             gtk_minor_version);
1141
edb0ebe8cccc Firefox 80.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1140
diff changeset
  1619
+  desktop = nsKDEUtils::kdeSession() ? u"kde"_ns : u"gnome"_ns;
419
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1620
 #elif defined(MOZ_WIDGET_ANDROID)
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1621
   bool isTablet = false;
1184
1c3d3217d679 110.0.1
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1183
diff changeset
  1622
   if (jni::IsAvailable()) {
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1623
     jni::String::LocalRef release = java::sdk::Build::VERSION::RELEASE();
1184
1c3d3217d679 110.0.1
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1183
diff changeset
  1624
     osVersion.Assign(release->ToString());
932
a58cc7936ce7 Firefox 50.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 929
diff changeset
  1625
     isTablet = java::GeckoAppShell::IsTablet();
419
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1626
   }
1141
edb0ebe8cccc Firefox 80.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1140
diff changeset
  1627
+  desktop = u"android"_ns;
419
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1628
 #endif
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1629
 
885
ee3c462047d5 42 beta cycle
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 881
diff changeset
  1630
   if (XRE_IsContentProcess()) {
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1631
     process = kContent;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1632
   } else {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1633
     process = kMain;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1634
   }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1635
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1636
@@ -571,25 +578,27 @@ void ParseManifest(NSLocationType aType,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1637
     // When in background task mode, default to not registering
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1638
     // category directivies unless backgroundtask=1 is specified.
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1639
     TriState stBackgroundTask = (BackgroundTasks::IsBackgroundTaskMode() &&
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1640
                                  strcmp("category", directive->directive) == 0)
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1641
                                     ? eBad
1156
c3d884659acf Firefox 87.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1152
diff changeset
  1642
                                     : eUnspecified;
419
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1643
 #endif
850
a2bdff616a0e prepare 38beta
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 837
diff changeset
  1644
     int flags = 0;
419
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1645
+    TriState stDesktop = eUnspecified;
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1646
 
779
354c672efefa rebased patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 766
diff changeset
  1647
     while ((token = nsCRT::strtok(whitespace, kWhitespace, &whitespace)) &&
354c672efefa rebased patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 766
diff changeset
  1648
            ok) {
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1649
       ToLowerCase(token);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1650
       NS_ConvertASCIItoUTF16 wtoken(token);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1651
 
419
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1652
       if (CheckStringFlag(kApplication, wtoken, appID, stApp) ||
985
038d048a3940 Firefox 55.0b13
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 982
diff changeset
  1653
           CheckOsFlag(kOs, wtoken, osTarget, stOs) ||
419
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1654
           CheckStringFlag(kABI, wtoken, abi, stABI) ||
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1655
+          CheckStringFlag(kDesktop, wtoken, desktop, stDesktop) ||
807
f54c68340963 Aurora 35.0 (20141115) uplift
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 779
diff changeset
  1656
           CheckStringFlag(kProcess, wtoken, process, stProcess) ||
419
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1657
           CheckVersionFlag(kOsVersion, wtoken, osVersion, stOsVersion) ||
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1658
           CheckVersionFlag(kAppVersion, wtoken, appVersion, stAppVersion) ||
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1659
           CheckVersionFlag(kGeckoVersion, wtoken, geckoVersion,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1660
                            stGeckoVersion)) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1661
         continue;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1662
       }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1663
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1664
@@ -639,16 +648,17 @@ void ParseManifest(NSLocationType aType,
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1665
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1666
       LogMessageWithContext(
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1667
           aFile, line, "Unrecognized chrome manifest modifier '%s'.", token);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1668
       ok = false;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1669
     }
419
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1670
 
1085
87f893cf45b9 Firefox 65.0 release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1082
diff changeset
  1671
     if (!ok || stApp == eBad || stAppVersion == eBad ||
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1672
         stGeckoVersion == eBad || stOs == eBad || stOsVersion == eBad ||
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1673
+        stDesktop == eBad ||
419
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1674
 #ifdef MOZ_WIDGET_ANDROID
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1675
         stTablet == eBad ||
f6b055dd94bc commit Aurora 13 state
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 409
diff changeset
  1676
 #endif
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1677
 #ifdef MOZ_BACKGROUNDTASKS
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1678
         stBackgroundTask == eBad ||
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1679
 #endif
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1680
         stABI == eBad || stProcess == eBad) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1681
       continue;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1682
diff --git a/xpcom/components/moz.build b/xpcom/components/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1683
--- a/xpcom/components/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1684
+++ b/xpcom/components/moz.build
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1685
@@ -66,16 +66,17 @@ LOCAL_INCLUDES += [
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1686
     "!..",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1687
     "../base",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1688
     "../build",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1689
     "../ds",
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1690
     "/chrome",
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
  1691
     "/js/xpconnect/loader",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
  1692
     "/layout/build",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
  1693
     "/modules/libjar",
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
  1694
+    "/toolkit/xre",
779
354c672efefa rebased patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 766
diff changeset
  1695
 ]
354c672efefa rebased patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 766
diff changeset
  1696
 
1152
4cfe46c9a944 Firefox 84.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1144
diff changeset
  1697
 if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1698
     CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1699
     if CONFIG["MOZ_ENABLE_DBUS"]:
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1700
         CXXFLAGS += CONFIG["MOZ_DBUS_GLIB_CFLAGS"]
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1701
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1702
 include("/ipc/chromium/chromium-config.mozbuild")
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1703
diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1704
--- a/xpcom/io/nsLocalFileUnix.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1705
+++ b/xpcom/io/nsLocalFileUnix.cpp
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1706
@@ -46,16 +46,17 @@
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1707
 #include "nsString.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1708
 #include "nsIDirectoryEnumerator.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1709
 #include "nsSimpleEnumerator.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1710
 #include "private/pprio.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1711
 #include "prlink.h"
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1712
 
515
0f6539389500 Aurora 16 uplift
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 467
diff changeset
  1713
 #ifdef MOZ_WIDGET_GTK
1089
eca1c1f2fe50 Firefox 66.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1085
diff changeset
  1714
 #  include "nsIGIOService.h"
eca1c1f2fe50 Firefox 66.0
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1085
diff changeset
  1715
+#  include "nsKDEUtils.h"
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1716
 #endif
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1717
 
367
3fabd9f66322 begin Firefox 10 cycle
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 356
diff changeset
  1718
 #ifdef MOZ_WIDGET_COCOA
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1719
 #  include <Carbon/Carbon.h>
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1720
 #  include "CocoaFileUtils.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1721
 #  include "prmem.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1722
 #  include "plbase64.h"
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1723
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1724
@@ -2167,20 +2168,28 @@ nsLocalFile::SetPersistentDescriptor(con
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1725
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1726
 NS_IMETHODIMP
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1727
 nsLocalFile::Reveal() {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1728
   if (!FilePreferences::IsAllowedPath(mPath)) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1729
     return NS_ERROR_FILE_ACCESS_DENIED;
1067
735b140fb042 rebased patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1055
diff changeset
  1730
   }
735b140fb042 rebased patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1055
diff changeset
  1731
 
515
0f6539389500 Aurora 16 uplift
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 467
diff changeset
  1732
 #ifdef MOZ_WIDGET_GTK
1174
90e3d0cf8567 Firefox 101.x release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1172
diff changeset
  1733
+  nsAutoCString url;
90e3d0cf8567 Firefox 101.x release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1172
diff changeset
  1734
   nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
850
a2bdff616a0e prepare 38beta
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 837
diff changeset
  1735
-  if (!giovfs) {
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1736
-    return NS_ERROR_FAILURE;
1174
90e3d0cf8567 Firefox 101.x release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1172
diff changeset
  1737
+  url = mPath;
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1738
+  if (nsKDEUtils::kdeSupport()) {
748
72ba5129e5fd full rebase to Aurora 32
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 738
diff changeset
  1739
+    nsTArray<nsCString> command;
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1740
+    command.AppendElement("REVEAL"_ns);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1741
+    command.AppendElement(mPath);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1742
+    return nsKDEUtils::command(command) ? NS_OK : NS_ERROR_FAILURE;
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1743
   }
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1744
+
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1745
+  if (!giovfs) return NS_ERROR_FAILURE;
9
bc5dfe5b853a Rebased KDE integration patches to 1.9.2
Wolfgang Rosenauer <wr@rosenauer.org>
parents:
diff changeset
  1746
+
1174
90e3d0cf8567 Firefox 101.x release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1172
diff changeset
  1747
   return giovfs->RevealFile(this);
90e3d0cf8567 Firefox 101.x release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1172
diff changeset
  1748
 #elif defined(MOZ_WIDGET_COCOA)
90e3d0cf8567 Firefox 101.x release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1172
diff changeset
  1749
   CFURLRef url;
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1750
   if (NS_SUCCEEDED(GetCFURL(&url))) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1751
     nsresult rv = CocoaFileUtils::RevealFileInFinder(url);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1752
     ::CFRelease(url);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1753
     return rv;
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1754
   }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1755
@@ -2192,16 +2201,23 @@ nsLocalFile::Reveal() {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1756
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1757
 NS_IMETHODIMP
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1758
 nsLocalFile::Launch() {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1759
   if (!FilePreferences::IsAllowedPath(mPath)) {
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1760
     return NS_ERROR_FILE_ACCESS_DENIED;
1067
735b140fb042 rebased patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1055
diff changeset
  1761
   }
735b140fb042 rebased patches
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1055
diff changeset
  1762
 
686
ab25aac2aa83 Firefox 26.0b5 update
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 680
diff changeset
  1763
 #ifdef MOZ_WIDGET_GTK
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1764
+  if (nsKDEUtils::kdeSupport()) {
748
72ba5129e5fd full rebase to Aurora 32
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 738
diff changeset
  1765
+    nsTArray<nsCString> command;
1190
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1766
+    command.AppendElement("OPEN"_ns);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1767
+    command.AppendElement(mPath);
2a24a948b5cf Firefox 115.0.3
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1189
diff changeset
  1768
+    return nsKDEUtils::command(command) ? NS_OK : NS_ERROR_FAILURE;
748
72ba5129e5fd full rebase to Aurora 32
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 738
diff changeset
  1769
+  }
1174
90e3d0cf8567 Firefox 101.x release
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1172
diff changeset
  1770
+
748
72ba5129e5fd full rebase to Aurora 32
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 738
diff changeset
  1771
   nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
850
a2bdff616a0e prepare 38beta
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 837
diff changeset
  1772
   if (!giovfs) {
a2bdff616a0e prepare 38beta
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 837
diff changeset
  1773
     return NS_ERROR_FAILURE;
1191
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1774
   }
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1775
 
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1776
   return giovfs->LaunchFile(mPath);
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1777
 #elif defined(MOZ_WIDGET_ANDROID)
37e065158be7 initial 116 changes
Wolfgang Rosenauer <wr@rosenauer.org>
parents: 1190
diff changeset
  1778
   // Not supported on GeckoView