nsOpenURIInFrameParams.cpp (3047B)
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 "nsOpenURIInFrameParams.h" 8 9 #include "mozilla/BasePrincipal.h" 10 #include "mozilla/dom/Element.h" 11 #include "mozilla/dom/ToJSValue.h" 12 #include "nsIContentSecurityPolicy.h" 13 #include "nsIOpenWindowInfo.h" 14 #include "nsIPolicyContainer.h" 15 16 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsOpenURIInFrameParams) 17 NS_INTERFACE_MAP_ENTRY(nsIOpenURIInFrameParams) 18 NS_INTERFACE_MAP_ENTRY(nsISupports) 19 NS_INTERFACE_MAP_END 20 21 NS_IMPL_CYCLE_COLLECTION(nsOpenURIInFrameParams, mOpenerBrowser) 22 23 NS_IMPL_CYCLE_COLLECTING_ADDREF(nsOpenURIInFrameParams) 24 NS_IMPL_CYCLE_COLLECTING_RELEASE(nsOpenURIInFrameParams) 25 26 nsOpenURIInFrameParams::nsOpenURIInFrameParams( 27 nsIOpenWindowInfo* aOpenWindowInfo, mozilla::dom::Element* aOpener) 28 : mOpenWindowInfo(aOpenWindowInfo), mOpenerBrowser(aOpener) {} 29 30 nsOpenURIInFrameParams::~nsOpenURIInFrameParams() = default; 31 32 NS_IMETHODIMP 33 nsOpenURIInFrameParams::GetOpenWindowInfo(nsIOpenWindowInfo** aOpenWindowInfo) { 34 NS_IF_ADDREF(*aOpenWindowInfo = mOpenWindowInfo); 35 return NS_OK; 36 } 37 38 NS_IMETHODIMP 39 nsOpenURIInFrameParams::GetReferrerInfo(nsIReferrerInfo** aReferrerInfo) { 40 NS_IF_ADDREF(*aReferrerInfo = mReferrerInfo); 41 return NS_OK; 42 } 43 44 NS_IMETHODIMP 45 nsOpenURIInFrameParams::SetReferrerInfo(nsIReferrerInfo* aReferrerInfo) { 46 mReferrerInfo = aReferrerInfo; 47 return NS_OK; 48 } 49 50 NS_IMETHODIMP 51 nsOpenURIInFrameParams::GetIsPrivate(bool* aIsPrivate) { 52 NS_ENSURE_ARG_POINTER(aIsPrivate); 53 *aIsPrivate = mOpenWindowInfo->GetOriginAttributes().IsPrivateBrowsing(); 54 return NS_OK; 55 } 56 57 NS_IMETHODIMP 58 nsOpenURIInFrameParams::GetTriggeringPrincipal( 59 nsIPrincipal** aTriggeringPrincipal) { 60 NS_ADDREF(*aTriggeringPrincipal = mTriggeringPrincipal); 61 return NS_OK; 62 } 63 64 NS_IMETHODIMP 65 nsOpenURIInFrameParams::SetTriggeringPrincipal( 66 nsIPrincipal* aTriggeringPrincipal) { 67 NS_ENSURE_TRUE(aTriggeringPrincipal, NS_ERROR_INVALID_ARG); 68 mTriggeringPrincipal = aTriggeringPrincipal; 69 return NS_OK; 70 } 71 72 NS_IMETHODIMP 73 nsOpenURIInFrameParams::GetPolicyContainer( 74 nsIPolicyContainer** aPolicyContainer) { 75 NS_IF_ADDREF(*aPolicyContainer = mPolicyContainer); 76 return NS_OK; 77 } 78 79 NS_IMETHODIMP 80 nsOpenURIInFrameParams::SetPolicyContainer( 81 nsIPolicyContainer* aPolicyContainer) { 82 NS_ENSURE_TRUE(aPolicyContainer, NS_ERROR_INVALID_ARG); 83 mPolicyContainer = aPolicyContainer; 84 return NS_OK; 85 } 86 87 nsresult nsOpenURIInFrameParams::GetOpenerBrowser( 88 mozilla::dom::Element** aOpenerBrowser) { 89 RefPtr<mozilla::dom::Element> owner = mOpenerBrowser; 90 owner.forget(aOpenerBrowser); 91 return NS_OK; 92 } 93 94 NS_IMETHODIMP 95 nsOpenURIInFrameParams::GetOpenerOriginAttributes( 96 JSContext* aCx, JS::MutableHandle<JS::Value> aValue) { 97 return mOpenWindowInfo->GetScriptableOriginAttributes(aCx, aValue); 98 }