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