tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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 }