LCOV - code coverage report
Current view: top level - docshell/base - LoadContext.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 36 89 40.4 %
Date: 2017-07-14 16:53:18 Functions: 10 23 43.5 %
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             : 
       7             : #include "mozilla/Assertions.h"
       8             : #include "mozilla/BasePrincipal.h"
       9             : #include "mozilla/LoadContext.h"
      10             : #include "mozilla/Preferences.h"
      11             : #include "mozilla/dom/ScriptSettings.h" // for AutoJSAPI
      12             : #include "nsContentUtils.h"
      13             : #include "xpcpublic.h"
      14             : 
      15             : namespace mozilla {
      16             : 
      17         578 : NS_IMPL_ISUPPORTS(LoadContext, nsILoadContext, nsIInterfaceRequestor)
      18             : 
      19           2 : LoadContext::LoadContext(nsIPrincipal* aPrincipal,
      20           2 :                          nsILoadContext* aOptionalBase)
      21             :   : mTopFrameElement(nullptr)
      22             :   , mNestedFrameId(0)
      23             :   , mIsContent(true)
      24             :   , mUseRemoteTabs(false)
      25             :   , mUseTrackingProtection(false)
      26             : #ifdef DEBUG
      27           2 :   , mIsNotNull(true)
      28             : #endif
      29             : {
      30           2 :   mOriginAttributes = aPrincipal->OriginAttributesRef();
      31           2 :   if (!aOptionalBase) {
      32           2 :     return;
      33             :   }
      34             : 
      35           0 :   MOZ_ALWAYS_SUCCEEDS(aOptionalBase->GetIsContent(&mIsContent));
      36           0 :   MOZ_ALWAYS_SUCCEEDS(aOptionalBase->GetUseRemoteTabs(&mUseRemoteTabs));
      37           0 :   MOZ_ALWAYS_SUCCEEDS(aOptionalBase->GetUseTrackingProtection(&mUseTrackingProtection));
      38             : }
      39             : 
      40             : //-----------------------------------------------------------------------------
      41             : // LoadContext::nsILoadContext
      42             : //-----------------------------------------------------------------------------
      43             : 
      44             : NS_IMETHODIMP
      45           6 : LoadContext::GetAssociatedWindow(mozIDOMWindowProxy**)
      46             : {
      47           6 :   MOZ_ASSERT(mIsNotNull);
      48             : 
      49             :   // can't support this in the parent process
      50           6 :   return NS_ERROR_UNEXPECTED;
      51             : }
      52             : 
      53             : NS_IMETHODIMP
      54           0 : LoadContext::GetTopWindow(mozIDOMWindowProxy**)
      55             : {
      56           0 :   MOZ_ASSERT(mIsNotNull);
      57             : 
      58             :   // can't support this in the parent process
      59           0 :   return NS_ERROR_UNEXPECTED;
      60             : }
      61             : 
      62             : NS_IMETHODIMP
      63           0 : LoadContext::GetTopFrameElement(nsIDOMElement** aElement)
      64             : {
      65           0 :   nsCOMPtr<nsIDOMElement> element = do_QueryReferent(mTopFrameElement);
      66           0 :   element.forget(aElement);
      67           0 :   return NS_OK;
      68             : }
      69             : 
      70             : NS_IMETHODIMP
      71           0 : LoadContext::GetNestedFrameId(uint64_t* aId)
      72             : {
      73           0 :   NS_ENSURE_ARG(aId);
      74           0 :   *aId = mNestedFrameId;
      75           0 :   return NS_OK;
      76             : }
      77             : 
      78             : NS_IMETHODIMP
      79           0 : LoadContext::GetIsContent(bool* aIsContent)
      80             : {
      81           0 :   MOZ_ASSERT(mIsNotNull);
      82             : 
      83           0 :   NS_ENSURE_ARG_POINTER(aIsContent);
      84             : 
      85           0 :   *aIsContent = mIsContent;
      86           0 :   return NS_OK;
      87             : }
      88             : 
      89             : NS_IMETHODIMP
      90          24 : LoadContext::GetUsePrivateBrowsing(bool* aUsePrivateBrowsing)
      91             : {
      92          24 :   MOZ_ASSERT(mIsNotNull);
      93             : 
      94          24 :   NS_ENSURE_ARG_POINTER(aUsePrivateBrowsing);
      95             : 
      96          24 :   *aUsePrivateBrowsing = mOriginAttributes.mPrivateBrowsingId > 0;
      97          24 :   return NS_OK;
      98             : }
      99             : 
     100             : NS_IMETHODIMP
     101           0 : LoadContext::SetUsePrivateBrowsing(bool aUsePrivateBrowsing)
     102             : {
     103           0 :   MOZ_ASSERT(mIsNotNull);
     104             : 
     105             :   // We shouldn't need this on parent...
     106           0 :   return NS_ERROR_UNEXPECTED;
     107             : }
     108             : 
     109             : NS_IMETHODIMP
     110           0 : LoadContext::SetPrivateBrowsing(bool aUsePrivateBrowsing)
     111             : {
     112           0 :   MOZ_ASSERT(mIsNotNull);
     113             : 
     114             :   // We shouldn't need this on parent...
     115           0 :   return NS_ERROR_UNEXPECTED;
     116             : }
     117             : 
     118             : NS_IMETHODIMP
     119           0 : LoadContext::GetUseRemoteTabs(bool* aUseRemoteTabs)
     120             : {
     121           0 :   MOZ_ASSERT(mIsNotNull);
     122             : 
     123           0 :   NS_ENSURE_ARG_POINTER(aUseRemoteTabs);
     124             : 
     125           0 :   *aUseRemoteTabs = mUseRemoteTabs;
     126           0 :   return NS_OK;
     127             : }
     128             : 
     129             : NS_IMETHODIMP
     130           0 : LoadContext::SetRemoteTabs(bool aUseRemoteTabs)
     131             : {
     132           0 :   MOZ_ASSERT(mIsNotNull);
     133             : 
     134             :   // We shouldn't need this on parent...
     135           0 :   return NS_ERROR_UNEXPECTED;
     136             : }
     137             : 
     138             : NS_IMETHODIMP
     139          26 : LoadContext::GetIsInIsolatedMozBrowserElement(bool* aIsInIsolatedMozBrowserElement)
     140             : {
     141          26 :   MOZ_ASSERT(mIsNotNull);
     142             : 
     143          26 :   NS_ENSURE_ARG_POINTER(aIsInIsolatedMozBrowserElement);
     144             : 
     145          26 :   *aIsInIsolatedMozBrowserElement = mOriginAttributes.mInIsolatedMozBrowser;
     146          26 :   return NS_OK;
     147             : }
     148             : 
     149             : NS_IMETHODIMP
     150           0 : LoadContext::GetScriptableOriginAttributes(JS::MutableHandleValue aAttrs)
     151             : {
     152           0 :   JSContext* cx = nsContentUtils::GetCurrentJSContext();
     153           0 :   MOZ_ASSERT(cx);
     154             : 
     155           0 :   bool ok = ToJSValue(cx, mOriginAttributes, aAttrs);
     156           0 :   NS_ENSURE_TRUE(ok, NS_ERROR_FAILURE);
     157           0 :   return NS_OK;
     158             : }
     159             : 
     160             : NS_IMETHODIMP_(void)
     161           9 : LoadContext::GetOriginAttributes(mozilla::OriginAttributes& aAttrs)
     162             : {
     163           9 :   aAttrs = mOriginAttributes;
     164           9 : }
     165             : 
     166             : NS_IMETHODIMP
     167           9 : LoadContext::GetUseTrackingProtection(bool* aUseTrackingProtection)
     168             : {
     169           9 :   MOZ_ASSERT(mIsNotNull);
     170             : 
     171           9 :   NS_ENSURE_ARG_POINTER(aUseTrackingProtection);
     172             : 
     173           9 :   *aUseTrackingProtection = mUseTrackingProtection;
     174           9 :   return NS_OK;
     175             : }
     176             : 
     177             : NS_IMETHODIMP
     178           0 : LoadContext::SetUseTrackingProtection(bool aUseTrackingProtection)
     179             : {
     180           0 :   MOZ_ASSERT_UNREACHABLE("Should only be set through nsDocShell");
     181             : 
     182             :   return NS_ERROR_UNEXPECTED;
     183             : }
     184             : 
     185             : //-----------------------------------------------------------------------------
     186             : // LoadContext::nsIInterfaceRequestor
     187             : //-----------------------------------------------------------------------------
     188             : NS_IMETHODIMP
     189           5 : LoadContext::GetInterface(const nsIID& aIID, void** aResult)
     190             : {
     191           5 :   NS_ENSURE_ARG_POINTER(aResult);
     192           5 :   *aResult = nullptr;
     193             : 
     194           5 :   if (aIID.Equals(NS_GET_IID(nsILoadContext))) {
     195           4 :     *aResult = static_cast<nsILoadContext*>(this);
     196           4 :     NS_ADDREF_THIS();
     197           4 :     return NS_OK;
     198             :   }
     199             : 
     200           1 :   return NS_NOINTERFACE;
     201             : }
     202             : 
     203             : static nsresult
     204           0 : CreateTestInstance(bool aPrivate, nsISupports *aOuter, REFNSIID aIID, void **aResult)
     205             : {
     206             :   // Shamelessly modified from NS_GENERIC_FACTORY_CONSTRUCTOR
     207           0 :   *aResult = nullptr;
     208             : 
     209           0 :   if (aOuter) {
     210           0 :     return NS_ERROR_NO_AGGREGATION;
     211             :   }
     212             : 
     213           0 :   OriginAttributes oa;
     214           0 :   oa.mPrivateBrowsingId = aPrivate ? 1 : 0;
     215             : 
     216           0 :   RefPtr<LoadContext> lc = new LoadContext(oa);
     217             : 
     218           0 :   return lc->QueryInterface(aIID, aResult);
     219             : }
     220             : 
     221             : nsresult
     222           0 : CreateTestLoadContext(nsISupports *aOuter, REFNSIID aIID, void **aResult)
     223             : {
     224           0 :   return CreateTestInstance(false, aOuter, aIID, aResult);
     225             : }
     226             : 
     227             : nsresult
     228           0 : CreatePrivateTestLoadContext(nsISupports *aOuter, REFNSIID aIID, void **aResult)
     229             : {
     230           0 :   return CreateTestInstance(true, aOuter, aIID, aResult);
     231             : }
     232             : 
     233             : } // namespace mozilla

Generated by: LCOV version 1.13