Граф коммитов

414 Коммитов

Автор SHA1 Сообщение Дата
Kagami Sascha Rosylight 716734fea5 Bug 1634454 - Resolve symlinks in nsLocalFileWin r=emk
Differential Revision: https://phabricator.services.mozilla.com/D73462
2020-06-01 15:12:31 +00:00
Kagami Sascha Rosylight 81428dbb30 Bug 1466532 - Part 2: Drop shortcut support in nsLocalFileWin r=froydnj
Native Windows apps (including but not limited to IE, old Edge, and Notepad) does not automatically resolve shell links (.lnk), so this patch follows their behavior.

Differential Revision: https://phabricator.services.mozilla.com/D73546
2020-05-28 16:59:56 +00:00
Kagami Sascha Rosylight 236de553f6 Bug 1466532 - Part 1: Drop nsIFile::followLinks r=froydnj,necko-reviewers,dragana
This drops `followLinks` as 1) it has been no-op on UNIX for a long time and 2) its Windows implementation never had a proper symlink support.

Differential Revision: https://phabricator.services.mozilla.com/D75569
2020-05-26 20:51:16 +00:00
Csoregi Natalia 38116effd4 Backed out changeset 8d0d9cb87686 (bug 1466532) for failures on test_file_protocol.js. CLOSED TREE 2020-05-26 01:46:49 +03:00
Kagami Sascha Rosylight b712a9333b Bug 1466532 - Part 1: Drop nsIFile::followLinks r=froydnj,necko-reviewers,dragana
This drops `followLinks` as 1) it has been no-op on UNIX for a long time and 2) its Windows implementation never had a proper symlink support.

Differential Revision: https://phabricator.services.mozilla.com/D75569
2020-05-25 18:55:59 +00:00
Tom Tung 3d101cac5a Bug 1634267 - DOS device paths shouldn't be blocked by IsBlockedUNCPath; r=dom-workers-and-storage-reviewers,janv,froydnj
Bug 1536796 introduces "\\?\" prefix (DOS device specifier) to Windows file
paths. At the moment, the prefix is only prepended to the file paths that start
with a disk designator and a backslash.

On the other hands, IsBlockedUNCPath blocks file paths that start with "\\" in
Windows and that includes DOS device paths (the cases mentioned above).

Thus, this patch prevents DOS device paths from being treating as UNC paths in
IsBlockedUNCPath.

Differential Revision: https://phabricator.services.mozilla.com/D73621
2020-05-13 14:32:35 +00:00
Tom Tung ffb47f9d00 Bug 1626513 - Check whether the first letter is [A-Za-z] for StartsWithDiskDesignatorAndBackslash; r=dom-workers-and-storage-reviewers,janv,xpcom-reviewers,sg
Differential Revision: https://phabricator.services.mozilla.com/D72635
2020-04-28 15:57:10 +00:00
Tom Tung 4e96941288 Bug 1536796 - P2 - Handle disable string paring in nsLocalFileWin; r=sg,dom-workers-and-storage-reviewers,froydnj,janv
In the Windows API, the maximum length for a path is MAX_PATH in general.
However, the Windows API has many functions that also have Unicode versions to
permit an extended-length path for a maximum total path length of 32,767
characters. To specify an extended-length path, use the "\\?\" prefix.

A path component which ends with a dot is not allowed for Windows API. However,
using the "\\?\" prefix can also resolved this issue.

This patch aims to fix the issues which are mentioned above by prepending the
prefix to the path of nsLocalFile if mDisableStringParsing is set to true.

Differential Revision: https://phabricator.services.mozilla.com/D67014

--HG--
extra : moz-landing-system : lando
2020-04-01 07:51:05 +00:00
Tom Tung 4debe01abb Bug 1536796 - P1 - Introduce a flag (useDOSDevicePathSyntax) to nsILocalFileWin and a method (QM_NewLocalFile) to QuotaCommon; r=janv,dom-workers-and-storage-reviewers,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D67873

--HG--
extra : moz-landing-system : lando
2020-04-01 07:26:27 +00:00
Toshihito Kikuchi 3bc1f2c50b Bug 1605308 - Do not use ShellExecuteByExplorer when a downloaded file is an executable. r=Gijs,froydnj
This is one of the efforts to reduce usage of `ShellExecuteByExplorer`
(bug 1620335).

The purpose of using `ShellExecuteByExplorer` in the scenario to open a
downloaded file is to support applications which are not compatible with
the mitigation policies of our process.  When a downloaded file is an
executable, however, we prefer security to compatibility and in particular
we want to prevent binary planting on a user's download directory.

The proposed fix is to go to `ShellExecuteExW` straight if the target
file to launch is an executable.

Differential Revision: https://phabricator.services.mozilla.com/D66325

--HG--
extra : moz-landing-system : lando
2020-03-12 22:05:34 +00:00
Cosmin Sabou e7343ec23b Backed out changeset 01cef3030838 (bug 1605308) for build bustages on nsLocalFileWin.cpp
CLOSED TREE
2020-03-12 23:26:54 +02:00
Toshihito Kikuchi 156f519842 Bug 1605308 - Do not use ShellExecuteByExplorer when a downloaded file is an executable. r=Gijs,froydnj
This is one of the efforts to reduce usage of `ShellExecuteByExplorer`
(bug 1620335).

The purpose of using `ShellExecuteByExplorer` in the scenario to open a
downloaded file is to support applications which are not compatible with
the mitigation policies of our process.  When a downloaded file is an
executable, however, we prefer security to compatibility and in particular
we want to prevent binary planting on a user's download directory.

The proposed fix is to go to `ShellExecuteExW` straight if the target
file to launch is an executable.

Differential Revision: https://phabricator.services.mozilla.com/D66325

--HG--
extra : moz-landing-system : lando
2020-03-12 21:05:24 +00:00
Valentin Gosu 48199b9dc3 Bug 1482224 - Move nsLocalFileWin::Reveal to the background thread pool r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D61553

--HG--
extra : moz-landing-system : lando
2020-02-04 14:36:56 +00:00
Toshihito Kikuchi 7b04cb1b04 Bug 1602726 - Fall back to ShellExecuteEx if ShellExecuteByExplorer fails. r=aklotz
It turned out that `ShellExecuteByExplorer` does not work on VDI such as Citrix
or Microsoft RemoteApp.  This patch adds a fallback to the original launching
code if `ShellExecuteByExplorer` fails.  This will be a temporary solution until
we find out a way to solve both interop issues `PreferSystem32Images` and VDI.

Differential Revision: https://phabricator.services.mozilla.com/D58054

--HG--
extra : moz-landing-system : lando
2020-01-08 16:41:03 +00:00
Eric Rahm 6d75492859 Bug 1241518 - Part 1: Remove unused nsAutoPtr.h includes in xpcom/ r=kmag
This removes various unused `#include "nsAutoPtr.h"` in `xpcom/`. Additionally
adds a few includes to the media stack.

Differential Revision: https://phabricator.services.mozilla.com/D58282

--HG--
extra : moz-landing-system : lando
2020-01-07 00:06:01 +00:00
Gabriele Svelto 5dc21d568c Bug 1600545 - Remove useless inclusions of header files generated from IDL files in modules/, netwerk/, parser/, security/, startupcache/, storage/, toolkit/, tools/, uriloader/, widget/, xpcom/ and xpfe/ r=Ehsan
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.

find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
    interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
    if [ -n "$interfaces" ]; then
        if [[ "$interfaces" == *$'\n'* ]]; then
          regexp="\("
          for i in $interfaces; do regexp="$regexp$i\|"; done
          regexp="${regexp%%\\\|}\)"
        else
          regexp="$interfaces"
        fi
        interface=$(basename "$path")
        rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
            hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
            if [ $hits -eq 0 ]; then
                echo "Removing ${interface} from ${path2}"
                grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
                mv -f "$path2".tmp "$path2"
            fi
        done
    fi
done

Differential Revision: https://phabricator.services.mozilla.com/D55444

--HG--
extra : moz-landing-system : lando
2019-12-06 09:17:57 +00:00
Toshihito Kikuchi 7d84bc7ec1 Bug 1597963 - Pass VT_ERROR for Explorer to call ShellExecuteExW with null verb. r=aklotz
The patch for Bug 1588975 specified the "open" verb to execute a target, but
the default verb is not always "open".  For example, the default verb for a font
file is "preview".  We should specify null verb to start the default operation.

Now we use `IShellDispatch2.ShellExecute` to ask explorer.exe to call
`ShellExecuteExW`.  That method takes an optional `VARIANT` parameter as a verb.
According to https://devblogs.microsoft.com/oldnewthing/20140919-00/?p=44023,
we need to pass `VT_ERROR` to omit an optional parameter.  If we pass
other values such as `nullptr` with `VT_BSTR` or `VT_EMPTY`, explorer.exe calls
`ShellExecuteExW` with the empty string `""` instead of `nullptr`, which is not
considered as a valid verb if the target file is not associated with any app.

Differential Revision: https://phabricator.services.mozilla.com/D54036

--HG--
extra : moz-landing-system : lando
2019-11-22 22:52:00 +00:00
Toshihito Kikuchi e01d0b296f Bug 1597794 - Return NS_ERROR_FILE_EXECUTION_FAILED if shell failed to launch a file. r=aklotz
Calling `AsWin32Error()` for the return value from `ShellExecuteByExplorer` can
cause the crash because it may not be a Win32 error.  We simply return
`NS_ERROR_FILE_EXECUTION_FAILED` as we do in `nsProcess::RunProcess` or
`ShellExecuteWithIFile`.

We used to check the return value from `ShellExecuteExW` against `SE_ERR_NOASSOC`,
but it never happens because `SE_ERR_` is returned as `SHELLEXECUTEINFO::hInstApp`.
No worry about the no-association case because `IShellDispatch2.ShellExecute`
displays the "How do you want to open this file?" popup when needed.

Differential Revision: https://phabricator.services.mozilla.com/D54052

--HG--
extra : moz-landing-system : lando
2019-11-22 21:11:24 +00:00
Toshihito Kikuchi 4d2777385a Bug 1588975 - Replace ShellExecuteExW with mozilla::ShellExecuteByExplorer. r=aklotz,asuth
The launcher process turns on the `PreferSystem32Images` mitigation policy for
the browser process.  Since the mitigation policy is inherited, a process launched
by the browser process also has `PreferSystem32Images`.  If an application which
does not support `PreferSystem32Images`, such as Skype for Business, is launched
via a hyperlink, a custom uri, or a downloaded file, it would fail to launch.

Bug 1567614 fixed this issue by introducing `mozilla::ShellExecuteByExplorer` to
`nsMIMEInfoWin::LoadUriInternal`.  This patch introduces
`mozilla::ShellExecuteByExplorer` to two more places.

1. xul!nsLocalFile::Launch
This is invoked when a user opens a file from the Download Library, or a user
opens a downloaded file with the default application without saving it.

2. xul!nsMIMEInfoWin::LaunchWithFile
This is invoked when a user opens a downloaded file with a custom application
(configured in about:preference) without saving it.

*Why does this patch change worker.js?*

The mochitest dom/tests/browser/browser_test_new_window_from_content.js failed
if it was executed after dom/serviceworkers/test/browser_download.js in the
same batch.  This was because browser_download.js launched Notepad to open
fake_download.bin.txt, preventing a new window from being opened in the
foreground in browser_test_new_window_from_content.js.

The test browser_download.js can verify downloaded data without opening an
associated application.  So this patch adds the content-type to the response
header in order not to open Notepad on Windows.

Differential Revision: https://phabricator.services.mozilla.com/D52567

--HG--
extra : moz-landing-system : lando
2019-11-14 19:47:29 +00:00
Henri Sivonen c193518677 Bug 1490601 part 2 - Move C++ entry points to encoding_c_mem to mfbt/. r=jwalden
Differential Revision: https://phabricator.services.mozilla.com/D43957

--HG--
extra : moz-landing-system : lando
2019-09-18 08:26:34 +00:00
Sylvestre Ledru d57d4905f1 Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D30883

--HG--
extra : moz-landing-system : lando
2019-05-25 17:46:15 +00:00
arthur.iakab af8e458c5f Backed out changeset a296439a25ff (bug 1519636) for frequent Windows cppunit failures CLOSED TREE 2019-05-24 14:26:01 +03:00
Sylvestre Ledru c82ea97226 Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D30883

--HG--
extra : moz-landing-system : lando
2019-05-24 09:59:17 +00:00
Gijs Kruitbosch 01fbd8d525 Bug 1544009 - stop doing remote drive and directory exist/creation checks for renames/moves on Windows, esp. if in the same directory, r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D29222

--HG--
extra : moz-landing-system : lando
2019-05-01 00:17:22 +00:00
Boris Zbarsky 92f7b5dd5e Bug 1539716. Remove nsIHashable. r=froydnj
It's dead code.

Differential Revision: https://phabricator.services.mozilla.com/D25190

--HG--
extra : moz-landing-system : lando
2019-03-28 13:07:05 +00:00
Sylvestre Ledru 4aa92e3091 Bug 1519636 - Reformat recent changes to the Google coding style r=Ehsan
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D22514
2019-03-13 10:19:06 +01:00
Nathan Froyd 8596aa45d7 Bug 1529596 - part 3 - avoid directory creation in the common case; r=aklotz
This change sets up nsLocalFileWin to mirror the behavior of
nsLocalFileUnix, which is all-around more reasonable than the behavior
nsLocalFileWin had before.  We also, in passing, fix up some unnecessary
error-handling code at the end of Create().

Depends on D22360

Differential Revision: https://phabricator.services.mozilla.com/D22361

--HG--
extra : moz-landing-system : lando
2019-03-07 20:44:00 +00:00
Nathan Froyd bf00e79a1e Bug 1529596 - part 2 - pull out code for creating files/directories; r=aklotz
We eventually want to make the common path just attempt file creation,
and only fall back to creating all the ancestor directories if the
initial attempt failed.  To do that in a reasonable way, we'll need
re-usable code for the creation code, which is what this patch creates.

Depends on D22359

Differential Revision: https://phabricator.services.mozilla.com/D22360

--HG--
extra : moz-landing-system : lando
2019-03-07 20:43:04 +00:00
Nathan Froyd 0844bf4b49 Bug 1529596 - part 1 - pull out common NS_ERROR_FILE_ACCESS_DENIED code; r=aklotz
This condition logically belongs before we try creating anything.

Differential Revision: https://phabricator.services.mozilla.com/D22359

--HG--
extra : moz-landing-system : lando
2019-03-07 20:40:58 +00:00
Gijs Kruitbosch b0993c3f95 Bug 1392955, r=dimi
Differential Revision: https://phabricator.services.mozilla.com/D19475

--HG--
extra : moz-landing-system : lando
2019-03-02 00:01:26 +00:00
Ryan Hunt f4a515c179 Bug 1523969 part 27 - Move method definition inline comments to new line in 'xpcom/'. r=froydnj
Differential Revision: https://phabricator.services.mozilla.com/D21131

--HG--
extra : rebase_source : 514f36238d908de221a0116f8e8a5d0cf18a168c
extra : histedit_source : 85743d2586a7307738866ce145b93dae2a664cf3
2019-02-25 16:14:01 -06:00
Ehsan Akhgari e5e885ae31 Bug 1521000 - Part 2: Adjust our clang-format rules to include spaces after the hash for nested preprocessor directives r=sylvestre
# ignore-this-changeset

--HG--
extra : amend_source : 7221c8d15a765df71171099468e7c7faa648f37c
extra : histedit_source : a0cce6015636202bff09e35a13f72e03257a7695
2019-01-18 10:16:18 +01:00
Sylvestre Ledru 265e672179 Bug 1511181 - Reformat everything to the Google coding style r=ehsan a=clang-format
# ignore-this-changeset

--HG--
extra : amend_source : 4d301d3b0b8711c4692392aa76088ba7fd7d1022
2018-11-30 11:46:48 +01:00
Sylvestre Ledru dd5741407b Bug 1498586 - Add clang-format off to avoid the reformatting of the data structures r=Ehsan
Too hard/impossible for the tool to format correctly these structs

Differential Revision: https://phabricator.services.mozilla.com/D8569

--HG--
extra : moz-landing-system : lando
2018-10-12 20:48:24 +00:00
aceman 77d5a7fd81 Bug 1486311 - convert remaining nsIFile::GetDirectoryEntries() callers to pass in a nsIDirectoryEnumerator. r=kmag 2018-08-26 14:15:00 +03:00
Kris Maglione 2dee0aae3c Bug 1484496: Part 4b - Add intrinsic type information to most nsSimpleEnumerators. r=froydnj
This allows JS callers to automatically get the correct types during
interation, without having to explicitly specify them.

Differential Revision: https://phabricator.services.mozilla.com/D3728

--HG--
extra : rebase_source : b708f382d8ea571d199c669bfed5b5a7ca9ffac4
extra : histedit_source : 7df6feb82088c8a5ca45dc28fe4d2b852c177fee
2018-08-18 21:06:32 -07:00
Kris Maglione c943b2a5c4 Bug 1484496: Part 4a - Add JS iterator support to nsISimpleEnumerator. r=mccr8
This patch adds simple stubs to convert between the nsISimpleEnumerator
iteration protocol and the JS iteration protocol.

Each iterable object is required to have an @@iterator method which returns an
object implementing the iterator protocol. The later objects, by convention,
also have such a method which returns the object itself.

This patch adds both a @@iterator() and entries() methods to
nsISimpleEnumerator. The former returns an iterator which returns plain
nsISupports objects. The latter accepts an IID and queries each element to
that IID before returning it. If any element fails to query, the error is
propagated to the caller.

Differential Revision: https://phabricator.services.mozilla.com/D3727

--HG--
extra : rebase_source : 340eb43a1c5e6d7ae69fa8ee486d66d31d079b14
extra : histedit_source : f3efc6c265851a563968ee410e4626e0540f55c0
2018-08-18 16:02:49 -07:00
Kris Maglione 0425e42aa8 Bug 1484496: Part 3 - Fix nsISimpleEnumerator implementations with broken contracts. r=froydnj
The nsISimpleEnumerator contract specifies that GetNext() returns
NS_ERROR_FAILURE when iteration is complete. Several implementations, however,
either return NS_OK and a null result, or return some other error code, when
iteration is complete.

Since my initial implementation of the JS iteration stubs rely on the
contract-defined behavior of GetNext(), these need to be fixed before it can
land.

Differential Revision: https://phabricator.services.mozilla.com/D3726

--HG--
extra : rebase_source : aab0395df52e18ccff5b0a2489a983013bf484b1
extra : histedit_source : a5644f0a88799b4463af9dd01dfec33b373b1f58
2018-08-18 18:28:10 -07:00
Kris Maglione 65c28aa0ad Bug 1484496: Part 2 - Add common base class for all nsISimpleEnumerator implementations. r=froydnj
In order to allow JS callers to use nsISimpleEnumerator instances with the JS
iteration protocol, we'll need to additional methods to every instance. Since
we currently have a large number of unrelated implementations, it would be
best if they could share the same implementation for the JS portion of the
protocol.

This patch adds a stub nsSimpleEnumerator base class, and updates all existing
implementations to inherit from it. A follow-up will add a new base interface
to this class, and implement the additional functionality required for JS
iteration.

Differential Revision: https://phabricator.services.mozilla.com/D3725

--HG--
extra : rebase_source : ad66d7b266856d5a750c772e4710679fab9434b1
extra : histedit_source : a83ebffbf2f0b191ba7de9007f73def6b9a955b8
2018-08-18 14:22:47 -07:00
Nathan Froyd 3e20f0d916 Bug 1471743 - remove STRICT_FAKE_SYMLINKS code from nsLocalFileWin; r=erahm
We don't define STRICT_FAKE_SYMLINKS anywhere, so this is dead code.
2018-08-21 17:00:59 -04:00
Nathan Froyd 8f2baafcb6 Bug 1471434 - micro-optimize refcounting for directory enumerators; r=erahm
We were not being as efficient as we could be with passing ownership.
2018-06-27 09:46:33 -04:00
Paolo Amadini eee7fe032d Bug 1468217 - Add "SettingContent-ms" to the list of executable file extensions. r=Gijs 2018-06-18 11:26:33 +01:00
Honza Bambas eef37ac56e Bug 1413868. r=valentin 2018-06-07 13:56:16 -04:00
Josh Aas cedb6a19de Bug 1457941: Add a number of result checks to nsLocalFileWin, avoid use of uninitialized values. r=froydnj 2018-05-30 19:04:00 +03:00
Kris Maglione 6b12d08f7d Bug 1462937: Update callers to use nsIFile::GetDirectoryEntries as a nsIDirectoryEnumerator. r=froydnj
MozReview-Commit-ID: Iv4T1MVAF5

--HG--
extra : rebase_source : 1c518883d082884db7f9323a5acc20361228c26b
extra : histedit_source : 70a73c23d1199d3bfbb5379c78930401166c094b
2018-05-19 20:17:45 -07:00
Kris Maglione 5ad7ba0bf1 Bug 1462483: Part 1 - Explicitly return a nsIDirectoryEnumerator from nsIFile::GetDirectoryEntries. r=froydnj
All of our GetDirectoryEntries implementations return a
nsIDirectoryEnumerator, and a lot of relies on this, and explicitly QIs to it.
That gets a bit ugly, and in JS code, a bit expensive. We should just return a
directory enumerator directly if that's part of the API contract.

MozReview-Commit-ID: IUeEB1Ih1Wu

--HG--
extra : rebase_source : 6fffb2d4b0f83db1fd270423a195379acef0dfe4
2018-05-17 15:06:48 -07:00
Masatoshi Kimura 5588ef80d1 Bug 1440630 - Reduce nsIFile::ResolveAndStat() calls. r=froydnj
--HG--
extra : source : 3dc9a957980918d125d7d3872c4f86bea31da437
extra : amend_source : 1dc4c1b50fe94370abab6d2ece930803fc02bcb5
2018-02-23 21:45:41 +09:00
Masatoshi Kimura dc4e17ea95 Bug 1428258 - Disallow nsIFile::GetNativePath on Windows. r=froydnj
MozReview-Commit-ID: JDryRqHcVw2

--HG--
extra : rebase_source : 228d0436c372d76d066affe9657a57bd4cda4dca
extra : source : 1dff63e6a2bb6b3190ded0c8fa748545f5d9f116
2018-01-11 22:38:33 +09:00
Masatoshi Kimura 4872102e9d Bug 1428557 - Stop using GetNativePath in xpcom/. r=froydnj
MozReview-Commit-ID: GnSFQ1wprzb

--HG--
extra : rebase_source : 7c25e0361d7f4e8aea730672a931cf78a581e062
extra : intermediate-source : e055aee7306b6636d27abe6fc0b02012b0075260
extra : source : d0831f473c8f85996c106693c9a4ce3783dd9447
2017-12-15 06:53:37 +09:00
Masatoshi Kimura a321c5d13e Bug 1433265 - Remove ShortcutResolver from nsLocalFileWin.cpp. r=froydnj
MozReview-Commit-ID: GeFCZI3OkuQ

--HG--
extra : rebase_source : 4a9868f82ae1143e7a31853641f5b5625ac21327
2018-01-31 20:56:17 +09:00