LCOV - code coverage report
Current view: top level - dom/base - nsScreen.h (source / functions) Hit Total Coverage
Test: output.info Lines: 21 49 42.9 %
Date: 2017-07-14 16:53:18 Functions: 8 30 26.7 %
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 ts=8 sts=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
       5             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : #ifndef nsScreen_h___
       7             : #define nsScreen_h___
       8             : 
       9             : #include "mozilla/Attributes.h"
      10             : #include "mozilla/dom/ScreenOrientation.h"
      11             : #include "mozilla/DOMEventTargetHelper.h"
      12             : #include "mozilla/ErrorResult.h"
      13             : #include "nsIDOMScreen.h"
      14             : #include "nsCOMPtr.h"
      15             : #include "nsRect.h"
      16             : 
      17             : class nsDeviceContext;
      18             : 
      19             : // Script "screen" object
      20             : class nsScreen : public mozilla::DOMEventTargetHelper
      21             :                , public nsIDOMScreen
      22             : {
      23             :   typedef mozilla::ErrorResult ErrorResult;
      24             : public:
      25             :   static already_AddRefed<nsScreen> Create(nsPIDOMWindowInner* aWindow);
      26             : 
      27             :   NS_DECL_ISUPPORTS_INHERITED
      28             :   NS_DECL_NSIDOMSCREEN
      29          11 :   NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsScreen, mozilla::DOMEventTargetHelper)
      30           0 :   NS_REALLY_FORWARD_NSIDOMEVENTTARGET(mozilla::DOMEventTargetHelper)
      31             : 
      32           1 :   nsPIDOMWindowInner* GetParentObject() const
      33             :   {
      34           1 :     return GetOwner();
      35             :   }
      36             : 
      37             :   nsPIDOMWindowOuter* GetOuter() const;
      38             : 
      39           0 :   int32_t GetTop(ErrorResult& aRv)
      40             :   {
      41           0 :     nsRect rect;
      42           0 :     aRv = GetRect(rect);
      43           0 :     return rect.y;
      44             :   }
      45             : 
      46           0 :   int32_t GetLeft(ErrorResult& aRv)
      47             :   {
      48           0 :     nsRect rect;
      49           0 :     aRv = GetRect(rect);
      50           0 :     return rect.x;
      51             :   }
      52             : 
      53           3 :   int32_t GetWidth(ErrorResult& aRv)
      54             :   {
      55           6 :     nsRect rect;
      56           3 :     if (IsDeviceSizePageSize()) {
      57           0 :       if (nsCOMPtr<nsPIDOMWindowInner> owner = GetOwner()) {
      58           0 :         int32_t innerWidth = 0;
      59           0 :         aRv = owner->GetInnerWidth(&innerWidth);
      60           0 :         return innerWidth;
      61             :       }
      62             :     }
      63             : 
      64           3 :     aRv = GetRect(rect);
      65           3 :     return rect.width;
      66             :   }
      67             : 
      68           3 :   int32_t GetHeight(ErrorResult& aRv)
      69             :   {
      70           6 :     nsRect rect;
      71           3 :     if (IsDeviceSizePageSize()) {
      72           0 :       if (nsCOMPtr<nsPIDOMWindowInner> owner = GetOwner()) {
      73           0 :         int32_t innerHeight = 0;
      74           0 :         aRv = owner->GetInnerHeight(&innerHeight);
      75           0 :         return innerHeight;
      76             :       }
      77             :     }
      78             : 
      79           3 :     aRv = GetRect(rect);
      80           3 :     return rect.height;
      81             :   }
      82             : 
      83             :   int32_t GetPixelDepth(ErrorResult& aRv);
      84           0 :   int32_t GetColorDepth(ErrorResult& aRv)
      85             :   {
      86           0 :     return GetPixelDepth(aRv);
      87             :   }
      88             : 
      89           0 :   int32_t GetAvailTop(ErrorResult& aRv)
      90             :   {
      91           0 :     nsRect rect;
      92           0 :     aRv = GetAvailRect(rect);
      93           0 :     return rect.y;
      94             :   }
      95             : 
      96           0 :   int32_t GetAvailLeft(ErrorResult& aRv)
      97             :   {
      98           0 :     nsRect rect;
      99           0 :     aRv = GetAvailRect(rect);
     100           0 :     return rect.x;
     101             :   }
     102             : 
     103           2 :   int32_t GetAvailWidth(ErrorResult& aRv)
     104             :   {
     105           4 :     nsRect rect;
     106           2 :     aRv = GetAvailRect(rect);
     107           4 :     return rect.width;
     108             :   }
     109             : 
     110           2 :   int32_t GetAvailHeight(ErrorResult& aRv)
     111             :   {
     112           4 :     nsRect rect;
     113           2 :     aRv = GetAvailRect(rect);
     114           4 :     return rect.height;
     115             :   }
     116             : 
     117             :   // Deprecated
     118             :   void GetMozOrientation(nsString& aOrientation,
     119             :                          mozilla::dom::CallerType aCallerType) const;
     120             : 
     121           0 :   IMPL_EVENT_HANDLER(mozorientationchange)
     122             : 
     123             :   bool MozLockOrientation(const nsAString& aOrientation, ErrorResult& aRv);
     124             :   bool MozLockOrientation(const mozilla::dom::Sequence<nsString>& aOrientations, ErrorResult& aRv);
     125             :   void MozUnlockOrientation();
     126             : 
     127             :   virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
     128             : 
     129             :   mozilla::dom::ScreenOrientation* Orientation() const;
     130             : 
     131             : protected:
     132             :   nsDeviceContext* GetDeviceContext();
     133             :   nsresult GetRect(nsRect& aRect);
     134             :   nsresult GetAvailRect(nsRect& aRect);
     135             :   nsresult GetWindowInnerRect(nsRect& aRect);
     136             : 
     137             : private:
     138             :   explicit nsScreen(nsPIDOMWindowInner* aWindow);
     139             :   virtual ~nsScreen();
     140             : 
     141             :   bool IsDeviceSizePageSize();
     142             : 
     143             :   bool ShouldResistFingerprinting() const;
     144             : 
     145             :   RefPtr<mozilla::dom::ScreenOrientation> mScreenOrientation;
     146             : };
     147             : 
     148             : #endif /* nsScreen_h___ */

Generated by: LCOV version 1.13