dom/filesystem/FileSystemUtils.cpp

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
     2 /* vim: set ts=2 et sw=2 tw=80: */
     3 /* This Source Code Form is subject to the terms of the Mozilla Public
     4  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
     5  * You can obtain one at http://mozilla.org/MPL/2.0/. */
     7 #include "mozilla/dom/FileSystemUtils.h"
     9 #include "nsXULAppAPI.h"
    11 namespace mozilla {
    12 namespace dom {
    14 // static
    15 void
    16 FileSystemUtils::LocalPathToNormalizedPath(const nsAString& aLocal,
    17                                            nsAString& aNorm)
    18 {
    19   nsString result;
    20   result = aLocal;
    21 #if defined(XP_WIN)
    22   char16_t* cur = result.BeginWriting();
    23   char16_t* end = result.EndWriting();
    24   for (; cur < end; ++cur) {
    25     if (char16_t('\\') == *cur)
    26       *cur = char16_t('/');
    27   }
    28 #endif
    29   aNorm = result;
    30 }
    32 // static
    33 void
    34 FileSystemUtils::NormalizedPathToLocalPath(const nsAString& aNorm,
    35                                            nsAString& aLocal)
    36 {
    37   nsString result;
    38   result = aNorm;
    39 #if defined(XP_WIN)
    40   char16_t* cur = result.BeginWriting();
    41   char16_t* end = result.EndWriting();
    42   for (; cur < end; ++cur) {
    43     if (char16_t('/') == *cur)
    44       *cur = char16_t('\\');
    45   }
    46 #endif
    47   aLocal = result;
    48 }
    50 // static
    51 bool
    52 FileSystemUtils::IsDescendantPath(const nsAString& aPath,
    53                                   const nsAString& aDescendantPath)
    54 {
    55   // The descendant path should begin with its ancestor path.
    56   nsAutoString prefix;
    57   prefix = aPath + NS_LITERAL_STRING(FILESYSTEM_DOM_PATH_SEPARATOR);
    59   // Check the sub-directory path to see if it has the parent path as prefix.
    60   if (aDescendantPath.Length() < prefix.Length() ||
    61       !StringBeginsWith(aDescendantPath, prefix)) {
    62     return false;
    63   }
    65   return true;
    66 }
    68 // static
    69 bool
    70 FileSystemUtils::IsParentProcess()
    71 {
    72   return XRE_GetProcessType() == GeckoProcessType_Default;
    73 }
    75 } // namespace dom
    76 } // namespace mozilla

mercurial