LCOV - code coverage report
Current view: top level - layout/tools/layout-debug/src - nsRegressionTester.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 54 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 8 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
       2             : /* This Source Code Form is subject to the terms of the Mozilla Public
       3             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       4             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       5             : 
       6             : #include "nsISupports.h"
       7             : #include "nsRegressionTester.h"
       8             : 
       9             : #include "nsXPIDLString.h"
      10             : #include "nsReadableUtils.h"
      11             : #include "nsIWindowWatcher.h"
      12             : #include "nsPIDOMWindow.h"
      13             : #include "nsIPresShell.h"
      14             : #include "nsIURI.h"
      15             : #include "nsISimpleEnumerator.h"
      16             : #include "nsIDocShell.h"
      17             : #include "nsIContentViewer.h"
      18             : #include "nsIContentViewerFile.h"
      19             : #include "nsIFrame.h"
      20             : #include "nsStyleStruct.h"
      21             : #include "nsIFrameUtil.h"
      22             : #include "nsLayoutCID.h"
      23             : #include "nsIFile.h"
      24             : #include "nsViewManager.h"
      25             : #include "nsView.h"
      26             : 
      27             : 
      28             : 
      29             : static NS_DEFINE_CID(kFrameUtilCID, NS_FRAME_UTIL_CID);
      30             : 
      31             : 
      32           0 : nsRegressionTester::nsRegressionTester()
      33             : {
      34           0 : }
      35             : 
      36           0 : nsRegressionTester::~nsRegressionTester()
      37             : {
      38           0 : }
      39             : 
      40           0 : NS_IMPL_ISUPPORTS(nsRegressionTester, nsILayoutRegressionTester)
      41             : 
      42             : NS_IMETHODIMP
      43           0 : nsRegressionTester::DumpFrameModel(mozIDOMWindow* aWindowToDump,
      44             :                                    nsIFile *aDestFile,
      45             :                                    uint32_t aFlagsMask, int32_t *aResult)
      46             : {
      47           0 :   NS_ENSURE_ARG(aWindowToDump);
      48           0 :   NS_ENSURE_ARG_POINTER(aResult);
      49             : 
      50           0 :   *aResult = DUMP_RESULT_ERROR;
      51             : 
      52             : #ifndef DEBUG
      53             :   return NS_ERROR_NOT_AVAILABLE;
      54             : #else
      55           0 :   nsresult    rv = NS_ERROR_NOT_AVAILABLE;
      56             :   uint32_t    busyFlags;
      57             :   bool        stillLoading;
      58             : 
      59           0 :   auto* windowToDump = nsPIDOMWindowInner::From(aWindowToDump);
      60             : 
      61           0 :   nsCOMPtr<nsIDocShell> docShell = windowToDump->GetDocShell();
      62             : 
      63             :   // find out if the document is loaded
      64           0 :   docShell->GetBusyFlags(&busyFlags);
      65           0 :   stillLoading = busyFlags & (nsIDocShell::BUSY_FLAGS_BUSY |
      66             :                               nsIDocShell::BUSY_FLAGS_PAGE_LOADING);
      67           0 :   if (stillLoading)
      68             :   {
      69           0 :     *aResult = DUMP_RESULT_LOADING;
      70           0 :     return NS_OK;
      71             :   }
      72             : 
      73           0 :   nsCOMPtr<nsIPresShell> presShell = docShell->GetPresShell();
      74             : 
      75           0 :   nsIFrame* root = presShell->GetRootFrame();
      76             : 
      77           0 :   FILE* fp = stdout;
      78           0 :   if (aDestFile)
      79             :   {
      80           0 :     rv = aDestFile->OpenANSIFileDesc("w", &fp);
      81           0 :     if (NS_FAILED(rv)) return rv;
      82             :   }
      83           0 :   if (aFlagsMask & DUMP_FLAGS_MASK_PRINT_MODE) {
      84           0 :     nsCOMPtr <nsIContentViewer> viewer;
      85           0 :     docShell->GetContentViewer(getter_AddRefs(viewer));
      86           0 :     if (viewer){
      87           0 :       nsCOMPtr<nsIContentViewerFile> viewerFile = do_QueryInterface(viewer);
      88           0 :       if (viewerFile) {
      89           0 :          viewerFile->Print(true, fp, nullptr);
      90             :       }
      91             :     }
      92             :   }
      93             :   else {
      94           0 :     root->DumpRegressionData(presShell->GetPresContext(), fp, 0);
      95             :   }
      96           0 :   if (fp != stdout)
      97           0 :     fclose(fp);
      98           0 :   *aResult = DUMP_RESULT_COMPLETED;
      99           0 :   return NS_OK;
     100             : #endif
     101             : }
     102             : 
     103             : NS_IMETHODIMP
     104           0 : nsRegressionTester::CompareFrameModels(nsIFile *aBaseFile, nsIFile *aVerFile,
     105             :                                        uint32_t aFlags, bool *aResult)
     106             : {
     107           0 :   NS_ENSURE_ARG(aBaseFile);
     108           0 :   NS_ENSURE_ARG(aVerFile);
     109           0 :   NS_ENSURE_ARG_POINTER(aResult);
     110             : 
     111           0 :   *aResult = false;
     112             : 
     113             :   nsresult rv;
     114             :   FILE* baseFile;
     115           0 :   rv = aBaseFile->OpenANSIFileDesc("r", &baseFile);
     116           0 :   if (NS_FAILED(rv)) return rv;
     117             : 
     118             :   FILE* verFile;
     119           0 :   rv = aVerFile->OpenANSIFileDesc("r", &verFile);
     120           0 :   if (NS_FAILED(rv)) {
     121           0 :     fclose(baseFile);
     122           0 :     return rv;
     123             :   }
     124             : 
     125           0 :   nsCOMPtr<nsIFrameUtil> frameUtil = do_CreateInstance(kFrameUtilCID, &rv);
     126           0 :   if (NS_SUCCEEDED(rv))
     127             :   {
     128           0 :     int32_t outputLevel = (aFlags == COMPARE_FLAGS_VERBOSE) ? 0 : 1;
     129           0 :     rv = frameUtil->CompareRegressionData(baseFile, verFile, outputLevel);
     130             :     // CompareRegressionData closes |baseFile| and |verFile|.
     131             :   } else {
     132           0 :     fclose(verFile);
     133           0 :     fclose(baseFile);
     134             :   }
     135             : 
     136           0 :   *aResult = NS_FAILED(rv);
     137           0 :   return NS_OK;
     138             : }

Generated by: LCOV version 1.13