1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/netwerk/base/src/LoadContextInfo.cpp Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,115 @@ 1.4 +/* This Source Code Form is subject to the terms of the Mozilla Public 1.5 + * License, v. 2.0. If a copy of the MPL was not distributed with this 1.6 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 1.7 + 1.8 +#include "LoadContextInfo.h" 1.9 + 1.10 +#include "nsNetUtil.h" 1.11 +#include "nsIChannel.h" 1.12 +#include "nsILoadContext.h" 1.13 + 1.14 +namespace mozilla { 1.15 +namespace net { 1.16 + 1.17 +NS_IMPL_ISUPPORTS(LoadContextInfo, nsILoadContextInfo) 1.18 + 1.19 +LoadContextInfo::LoadContextInfo(bool aIsPrivate, uint32_t aAppId, bool aIsInBrowser, bool aIsAnonymous) 1.20 + : mAppId(aAppId) 1.21 + , mIsPrivate(aIsPrivate) 1.22 + , mIsInBrowser(aIsInBrowser) 1.23 + , mIsAnonymous(aIsAnonymous) 1.24 +{ 1.25 +} 1.26 + 1.27 +LoadContextInfo::~LoadContextInfo() 1.28 +{ 1.29 +} 1.30 + 1.31 +NS_IMETHODIMP LoadContextInfo::GetIsPrivate(bool *aIsPrivate) 1.32 +{ 1.33 + *aIsPrivate = mIsPrivate; 1.34 + return NS_OK; 1.35 +} 1.36 + 1.37 +NS_IMETHODIMP LoadContextInfo::GetAppId(uint32_t *aAppId) 1.38 +{ 1.39 + *aAppId = mAppId; 1.40 + return NS_OK; 1.41 +} 1.42 + 1.43 +NS_IMETHODIMP LoadContextInfo::GetIsInBrowserElement(bool *aIsInBrowser) 1.44 +{ 1.45 + *aIsInBrowser = mIsInBrowser; 1.46 + return NS_OK; 1.47 +} 1.48 + 1.49 +NS_IMETHODIMP LoadContextInfo::GetIsAnonymous(bool *aIsAnonymous) 1.50 +{ 1.51 + *aIsAnonymous = mIsAnonymous; 1.52 + return NS_OK; 1.53 +} 1.54 + 1.55 +LoadContextInfo * 1.56 +GetLoadContextInfo(nsIChannel * aChannel) 1.57 +{ 1.58 + bool pb = NS_UsePrivateBrowsing(aChannel); 1.59 + uint32_t appId; 1.60 + bool ib; 1.61 + if (!NS_GetAppInfo(aChannel, &appId, &ib)) { 1.62 + appId = nsILoadContextInfo::NO_APP_ID; 1.63 + ib = false; 1.64 + } 1.65 + 1.66 + bool anon = false; 1.67 + nsLoadFlags loadFlags; 1.68 + nsresult rv = aChannel->GetLoadFlags(&loadFlags); 1.69 + if (NS_SUCCEEDED(rv)) 1.70 + anon = !!(loadFlags & nsIChannel::LOAD_ANONYMOUS); 1.71 + 1.72 + return new LoadContextInfo(pb, appId, ib, anon); 1.73 +} 1.74 + 1.75 +LoadContextInfo * 1.76 +GetLoadContextInfo(nsILoadContext * aLoadContext, bool aIsAnonymous) 1.77 +{ 1.78 + if (!aLoadContext) 1.79 + return new LoadContextInfo(false, nsILoadContextInfo::NO_APP_ID, false, aIsAnonymous); // nullptr? 1.80 + 1.81 + bool pb = aLoadContext->UsePrivateBrowsing(); 1.82 + 1.83 + bool ib; 1.84 + nsresult rv = aLoadContext->GetIsInBrowserElement(&ib); 1.85 + if (NS_FAILED(rv)) 1.86 + ib = false; // todo NS_WARNING... 1.87 + 1.88 + uint32_t appId; 1.89 + rv = aLoadContext->GetAppId(&appId); 1.90 + if (NS_FAILED(rv)) 1.91 + appId = nsILoadContextInfo::NO_APP_ID; 1.92 + 1.93 + return new LoadContextInfo(pb, appId, ib, aIsAnonymous); 1.94 +} 1.95 + 1.96 +LoadContextInfo * 1.97 +GetLoadContextInfo(nsILoadContextInfo* aInfo) 1.98 +{ 1.99 + return new LoadContextInfo(aInfo->IsPrivate(), 1.100 + aInfo->AppId(), 1.101 + aInfo->IsInBrowserElement(), 1.102 + aInfo->IsAnonymous()); 1.103 +} 1.104 + 1.105 +LoadContextInfo * 1.106 +GetLoadContextInfo(bool const aIsPrivate, 1.107 + uint32_t const aAppId, 1.108 + bool const aIsInBrowserElement, 1.109 + bool const aIsAnonymous) 1.110 +{ 1.111 + return new LoadContextInfo(aIsPrivate, 1.112 + aAppId, 1.113 + aIsInBrowserElement, 1.114 + aIsAnonymous); 1.115 +} 1.116 + 1.117 +} // net 1.118 +} // mozilla