LCOV - code coverage report
Current view: top level - xpcom/io - FileDescriptorFile.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 160 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 71 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
       2             : /* vim: set sw=2 ts=8 et 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
       5             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : 
       7             : #include "FileDescriptorFile.h"
       8             : 
       9             : #include "mozilla/ipc/FileDescriptorUtils.h"
      10             : #include "mozilla/ipc/URIUtils.h"
      11             : #include "mozilla/net/NeckoChild.h"
      12             : #include "nsIFileURL.h"
      13             : #include "nsNetUtil.h"
      14             : #include "nsProxyRelease.h"
      15             : #include "nsThreadUtils.h"
      16             : #include "private/pprio.h"
      17             : #include "SerializedLoadContext.h"
      18             : 
      19             : namespace mozilla {
      20             : namespace net {
      21             : 
      22           0 : NS_IMPL_ISUPPORTS(FileDescriptorFile, nsIFile)
      23             : 
      24             : LazyLogModule gFDFileLog("FDFile");
      25             : #undef DBG
      26             : #define DBG(...) MOZ_LOG(gFDFileLog, LogLevel::Debug, (__VA_ARGS__))
      27             : 
      28           0 : FileDescriptorFile::FileDescriptorFile(const FileDescriptor& aFD,
      29           0 :                                        nsIFile* aFile)
      30             : {
      31           0 :   MOZ_ASSERT(aFD.IsValid());
      32           0 :   auto platformHandle = aFD.ClonePlatformHandle();
      33           0 :   mFD = FileDescriptor(platformHandle.get());
      34           0 :   mFile = aFile;
      35           0 : }
      36             : 
      37           0 : FileDescriptorFile::FileDescriptorFile(const FileDescriptorFile& aOther)
      38             : {
      39           0 :   auto platformHandle = aOther.mFD.ClonePlatformHandle();
      40           0 :   mFD = FileDescriptor(platformHandle.get());
      41           0 :   aOther.mFile->Clone(getter_AddRefs(mFile));
      42           0 : }
      43             : 
      44             : //-----------------------------------------------------------------------------
      45             : // FileDescriptorFile::nsIFile functions that we override logic for
      46             : //-----------------------------------------------------------------------------
      47             : 
      48             : NS_IMETHODIMP
      49           0 : FileDescriptorFile::Clone(nsIFile **aFileOut)
      50             : {
      51           0 :   RefPtr<FileDescriptorFile> fdFile = new FileDescriptorFile(*this);
      52           0 :   fdFile.forget(aFileOut);
      53           0 :   return NS_OK;
      54             : }
      55             : 
      56             : NS_IMETHODIMP
      57           0 : FileDescriptorFile::OpenNSPRFileDesc(int32_t aFlags, int32_t aMode,
      58             :                                      PRFileDesc **aRetval)
      59             : {
      60             :   // Remove optional OS_READAHEAD flag so we test against PR_RDONLY
      61           0 :   aFlags &= ~nsIFile::OS_READAHEAD;
      62             : 
      63             :   // Remove optional/deprecated DELETE_ON_CLOSE flag
      64           0 :   aFlags &= ~nsIFile::DELETE_ON_CLOSE;
      65             : 
      66             :   // All other flags require write access to the file and
      67             :   // this implementation only provides read access.
      68           0 :   if (aFlags != PR_RDONLY) {
      69           0 :     DBG("OpenNSPRFileDesc flags error (%" PRIu32 ")\n", aFlags);
      70           0 :     return NS_ERROR_NOT_AVAILABLE;
      71             :   }
      72             : 
      73           0 :   if (!mFD.IsValid()) {
      74           0 :     DBG("OpenNSPRFileDesc error: no file descriptor\n");
      75           0 :     return NS_ERROR_NOT_AVAILABLE;
      76             :   }
      77             : 
      78           0 :   auto platformHandle = mFD.ClonePlatformHandle();
      79           0 :   *aRetval = PR_ImportFile(PROsfd(platformHandle.release()));
      80             : 
      81           0 :   if (!*aRetval) {
      82           0 :     DBG("OpenNSPRFileDesc Clone failure\n");
      83           0 :     return NS_ERROR_NOT_AVAILABLE;
      84             :   }
      85             : 
      86           0 :   return NS_OK;
      87             : }
      88             : 
      89             : //-----------------------------------------------------------------------------
      90             : // FileDescriptorFile::nsIFile functions that we delegate to underlying nsIFile
      91             : //-----------------------------------------------------------------------------
      92             : 
      93             : nsresult
      94           0 : FileDescriptorFile::GetLeafName(nsAString &aLeafName)
      95             : {
      96           0 :   return mFile->GetLeafName(aLeafName);
      97             : }
      98             : 
      99             : NS_IMETHODIMP
     100           0 : FileDescriptorFile::GetNativeLeafName(nsACString &aLeafName)
     101             : {
     102           0 :   return mFile->GetNativeLeafName(aLeafName);
     103             : }
     104             : 
     105             : nsresult
     106           0 : FileDescriptorFile::GetTarget(nsAString &_retval)
     107             : {
     108           0 :   return mFile->GetTarget(_retval);
     109             : }
     110             : 
     111             : NS_IMETHODIMP
     112           0 : FileDescriptorFile::GetNativeTarget(nsACString &_retval)
     113             : {
     114           0 :   return mFile->GetNativeTarget(_retval);
     115             : }
     116             : 
     117             : nsresult
     118           0 : FileDescriptorFile::GetPath(nsAString &_retval)
     119             : {
     120           0 :   return mFile->GetPath(_retval);
     121             : }
     122             : 
     123             : NS_IMETHODIMP
     124           0 : FileDescriptorFile::GetNativePath(nsACString &_retval)
     125             : {
     126           0 :   return mFile->GetNativePath(_retval);
     127             : }
     128             : 
     129             : NS_IMETHODIMP
     130           0 : FileDescriptorFile::Equals(nsIFile *inFile, bool *_retval)
     131             : {
     132           0 :   return mFile->Equals(inFile, _retval);
     133             : }
     134             : 
     135             : NS_IMETHODIMP
     136           0 : FileDescriptorFile::Contains(nsIFile *inFile, bool *_retval)
     137             : {
     138           0 :   return mFile->Contains(inFile, _retval);
     139             : }
     140             : 
     141             : NS_IMETHODIMP
     142           0 : FileDescriptorFile::GetParent(nsIFile **aParent)
     143             : {
     144           0 :   return mFile->GetParent(aParent);
     145             : }
     146             : 
     147             : NS_IMETHODIMP
     148           0 : FileDescriptorFile::GetFollowLinks(bool *aFollowLinks)
     149             : {
     150           0 :   return mFile->GetFollowLinks(aFollowLinks);
     151             : }
     152             : 
     153             : //-----------------------------------------------------------------------------
     154             : // FileDescriptorFile::nsIFile functions that are not currently supported
     155             : //-----------------------------------------------------------------------------
     156             : 
     157             : nsresult
     158           0 : FileDescriptorFile::Append(const nsAString &node)
     159             : {
     160           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     161             : }
     162             : 
     163             : NS_IMETHODIMP
     164           0 : FileDescriptorFile::AppendNative(const nsACString &fragment)
     165             : {
     166           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     167             : }
     168             : 
     169             : NS_IMETHODIMP
     170           0 : FileDescriptorFile::Normalize()
     171             : {
     172           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     173             : }
     174             : 
     175             : NS_IMETHODIMP
     176           0 : FileDescriptorFile::Create(uint32_t type, uint32_t permissions)
     177             : {
     178           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     179             : }
     180             : 
     181             : nsresult
     182           0 : FileDescriptorFile::SetLeafName(const nsAString &aLeafName)
     183             : {
     184           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     185             : }
     186             : 
     187             : NS_IMETHODIMP
     188           0 : FileDescriptorFile::SetNativeLeafName(const nsACString &aLeafName)
     189             : {
     190           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     191             : }
     192             : 
     193             : nsresult
     194           0 : FileDescriptorFile::InitWithPath(const nsAString &filePath)
     195             : {
     196           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     197             : }
     198             : 
     199             : NS_IMETHODIMP
     200           0 : FileDescriptorFile::InitWithNativePath(const nsACString &filePath)
     201             : {
     202           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     203             : }
     204             : 
     205             : NS_IMETHODIMP
     206           0 : FileDescriptorFile::InitWithFile(nsIFile *aFile)
     207             : {
     208           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     209             : }
     210             : 
     211             : NS_IMETHODIMP
     212           0 : FileDescriptorFile::SetFollowLinks(bool aFollowLinks)
     213             : {
     214           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     215             : }
     216             : 
     217             : nsresult
     218           0 : FileDescriptorFile::AppendRelativePath(const nsAString &node)
     219             : {
     220           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     221             : }
     222             : 
     223             : NS_IMETHODIMP
     224           0 : FileDescriptorFile::AppendRelativeNativePath(const nsACString &fragment)
     225             : {
     226           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     227             : }
     228             : 
     229             : NS_IMETHODIMP
     230           0 : FileDescriptorFile::GetPersistentDescriptor(nsACString &aPersistentDescriptor)
     231             : {
     232           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     233             : }
     234             : 
     235             : NS_IMETHODIMP
     236           0 : FileDescriptorFile::SetPersistentDescriptor(const nsACString &aPersistentDescriptor)
     237             : {
     238           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     239             : }
     240             : 
     241             : NS_IMETHODIMP
     242           0 : FileDescriptorFile::GetRelativeDescriptor(nsIFile *fromFile, nsACString& _retval)
     243             : {
     244           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     245             : }
     246             : 
     247             : NS_IMETHODIMP
     248           0 : FileDescriptorFile::SetRelativeDescriptor(nsIFile *fromFile,
     249             :                                    const nsACString& relativeDesc)
     250             : {
     251           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     252             : }
     253             : 
     254             : NS_IMETHODIMP
     255           0 : FileDescriptorFile::GetRelativePath(nsIFile *fromFile, nsACString& _retval)
     256             : {
     257           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     258             : }
     259             : 
     260             : NS_IMETHODIMP
     261           0 : FileDescriptorFile::SetRelativePath(nsIFile *fromFile,
     262             :                                      const nsACString& relativePath)
     263             : {
     264           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     265             : }
     266             : 
     267             : nsresult
     268           0 : FileDescriptorFile::CopyTo(nsIFile *newParentDir, const nsAString &newName)
     269             : {
     270           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     271             : }
     272             : 
     273             : NS_IMETHODIMP
     274           0 : FileDescriptorFile::CopyToNative(nsIFile *newParent, const nsACString &newName)
     275             : {
     276           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     277             : }
     278             : 
     279             : nsresult
     280           0 : FileDescriptorFile::CopyToFollowingLinks(nsIFile *newParentDir,
     281             :                                   const nsAString &newName)
     282             : {
     283           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     284             : }
     285             : 
     286             : NS_IMETHODIMP
     287           0 : FileDescriptorFile::CopyToFollowingLinksNative(nsIFile *newParent,
     288             :                                         const nsACString &newName)
     289             : {
     290           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     291             : }
     292             : 
     293             : nsresult
     294           0 : FileDescriptorFile::MoveTo(nsIFile *newParentDir, const nsAString &newName)
     295             : {
     296           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     297             : }
     298             : 
     299             : NS_IMETHODIMP
     300           0 : FileDescriptorFile::MoveToNative(nsIFile *newParent, const nsACString &newName)
     301             : {
     302           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     303             : }
     304             : 
     305             : NS_IMETHODIMP
     306           0 : FileDescriptorFile::RenameTo(nsIFile *newParentDir, const nsAString &newName)
     307             : {
     308           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     309             : }
     310             : 
     311             : NS_IMETHODIMP
     312           0 : FileDescriptorFile::RenameToNative(nsIFile *newParentDir, const nsACString &newName)
     313             : {
     314           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     315             : }
     316             : 
     317             : NS_IMETHODIMP
     318           0 : FileDescriptorFile::Remove(bool recursive)
     319             : {
     320           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     321             : }
     322             : 
     323             : NS_IMETHODIMP
     324           0 : FileDescriptorFile::GetPermissions(uint32_t *aPermissions)
     325             : {
     326           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     327             : }
     328             : 
     329             : NS_IMETHODIMP
     330           0 : FileDescriptorFile::SetPermissions(uint32_t aPermissions)
     331             : {
     332           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     333             : }
     334             : 
     335             : NS_IMETHODIMP
     336           0 : FileDescriptorFile::GetPermissionsOfLink(uint32_t *aPermissionsOfLink)
     337             : {
     338           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     339             : }
     340             : 
     341             : NS_IMETHODIMP
     342           0 : FileDescriptorFile::SetPermissionsOfLink(uint32_t aPermissions)
     343             : {
     344           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     345             : }
     346             : 
     347             : NS_IMETHODIMP
     348           0 : FileDescriptorFile::GetLastModifiedTime(PRTime *aLastModTime)
     349             : {
     350           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     351             : }
     352             : 
     353             : NS_IMETHODIMP
     354           0 : FileDescriptorFile::SetLastModifiedTime(PRTime aLastModTime)
     355             : {
     356           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     357             : }
     358             : 
     359             : NS_IMETHODIMP
     360           0 : FileDescriptorFile::GetLastModifiedTimeOfLink(PRTime *aLastModTimeOfLink)
     361             : {
     362           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     363             : }
     364             : 
     365             : NS_IMETHODIMP
     366           0 : FileDescriptorFile::SetLastModifiedTimeOfLink(PRTime aLastModTimeOfLink)
     367             : {
     368           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     369             : }
     370             : 
     371             : NS_IMETHODIMP
     372           0 : FileDescriptorFile::GetFileSize(int64_t *aFileSize)
     373             : {
     374           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     375             : }
     376             : 
     377             : NS_IMETHODIMP
     378           0 : FileDescriptorFile::SetFileSize(int64_t aFileSize)
     379             : {
     380           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     381             : }
     382             : 
     383             : NS_IMETHODIMP
     384           0 : FileDescriptorFile::GetFileSizeOfLink(int64_t *aFileSize)
     385             : {
     386           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     387             : }
     388             : 
     389             : NS_IMETHODIMP
     390           0 : FileDescriptorFile::Exists(bool *_retval)
     391             : {
     392           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     393             : }
     394             : 
     395             : NS_IMETHODIMP
     396           0 : FileDescriptorFile::IsWritable(bool *_retval)
     397             : {
     398           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     399             : }
     400             : 
     401             : NS_IMETHODIMP
     402           0 : FileDescriptorFile::IsReadable(bool *_retval)
     403             : {
     404           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     405             : }
     406             : 
     407             : NS_IMETHODIMP
     408           0 : FileDescriptorFile::IsExecutable(bool *_retval)
     409             : {
     410           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     411             : }
     412             : 
     413             : NS_IMETHODIMP
     414           0 : FileDescriptorFile::IsHidden(bool *_retval)
     415             : {
     416           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     417             : }
     418             : 
     419             : NS_IMETHODIMP
     420           0 : FileDescriptorFile::IsDirectory(bool *_retval)
     421             : {
     422           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     423             : }
     424             : 
     425             : NS_IMETHODIMP
     426           0 : FileDescriptorFile::IsFile(bool *_retval)
     427             : {
     428           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     429             : }
     430             : 
     431             : NS_IMETHODIMP
     432           0 : FileDescriptorFile::IsSymlink(bool *_retval)
     433             : {
     434           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     435             : }
     436             : 
     437             : NS_IMETHODIMP
     438           0 : FileDescriptorFile::IsSpecial(bool *_retval)
     439             : {
     440           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     441             : }
     442             : 
     443             : NS_IMETHODIMP
     444           0 : FileDescriptorFile::CreateUnique(uint32_t type, uint32_t attributes)
     445             : {
     446           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     447             : }
     448             : 
     449             : NS_IMETHODIMP
     450           0 : FileDescriptorFile::GetDirectoryEntries(nsISimpleEnumerator **entries)
     451             : {
     452           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     453             : }
     454             : 
     455             : NS_IMETHODIMP
     456           0 : FileDescriptorFile::OpenANSIFileDesc(const char *mode, FILE **_retval)
     457             : {
     458           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     459             : }
     460             : 
     461             : NS_IMETHODIMP
     462           0 : FileDescriptorFile::Load(PRLibrary **_retval)
     463             : {
     464           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     465             : }
     466             : 
     467             : NS_IMETHODIMP
     468           0 : FileDescriptorFile::GetDiskSpaceAvailable(int64_t *aDiskSpaceAvailable)
     469             : {
     470           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     471             : }
     472             : 
     473             : NS_IMETHODIMP
     474           0 : FileDescriptorFile::Reveal()
     475             : {
     476           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     477             : }
     478             : 
     479             : NS_IMETHODIMP
     480           0 : FileDescriptorFile::Launch()
     481             : {
     482           0 :   return NS_ERROR_NOT_IMPLEMENTED;
     483             : }
     484             : 
     485             : } // namespace net
     486             : } // namespace mozilla

Generated by: LCOV version 1.13