bool CookieServiceParent::RecvGetCookieString(const URIParams& aHost, const bool& aIsForeign, const bool& aFromHttp, const IPC::SerializedLoadContext& aLoadContext, nsCString* aResult) { if (!mCookieService) return true; // Deserialize URI. Having a host URI is mandatory and should always be // provided by the child; thus we consider failure fatal. nsCOMPtr<nsIURI> hostURI = DeserializeURI(aHost); if (!hostURI) return false; uint32_t appId; bool isInBrowserElement, isPrivate; bool valid = GetAppInfoFromParams(aLoadContext, appId, isInBrowserElement, isPrivate); if (!valid) { return false; } mCookieService->GetCookieStringInternal(hostURI, aIsForeign, aFromHttp, appId, isInBrowserElement, isPrivate, *aResult); return true; }
bool CookieServiceParent::RecvSetCookieString(const URIParams& aHost, const bool& aIsForeign, const nsCString& aCookieString, const nsCString& aServerTime, const bool& aFromHttp, const IPC::SerializedLoadContext& aLoadContext) { if (!mCookieService) return true; // Deserialize URI. Having a host URI is mandatory and should always be // provided by the child; thus we consider failure fatal. nsCOMPtr<nsIURI> hostURI = DeserializeURI(aHost); if (!hostURI) return false; uint32_t appId; bool isInBrowserElement, isPrivate; bool valid = GetAppInfoFromParams(aLoadContext, appId, isInBrowserElement, isPrivate); if (!valid) { return false; } nsDependentCString cookieString(aCookieString, 0); //TODO: bug 812475, pass a real channel object mCookieService->SetCookieStringInternal(hostURI, aIsForeign, cookieString, aServerTime, aFromHttp, appId, isInBrowserElement, isPrivate, nullptr); return true; }
bool CookieServiceParent::RecvSetCookieString(const URIParams& aHost, const bool& aIsForeign, const nsCString& aCookieString, const nsCString& aServerTime, const bool& aFromHttp, const IPC::SerializedLoadContext& aLoadContext) { if (!mCookieService) return true; // Deserialize URI. Having a host URI is mandatory and should always be // provided by the child; thus we consider failure fatal. nsCOMPtr<nsIURI> hostURI = DeserializeURI(aHost); if (!hostURI) return false; uint32_t appId; bool isInBrowserElement, isPrivate; bool valid = GetAppInfoFromParams(aLoadContext, appId, isInBrowserElement, isPrivate); if (!valid) { return false; } // This is a gross hack. We've already computed everything we need to know // for whether to set this cookie or not, but we need to communicate all of // this information through to nsICookiePermission, which indirectly // computes the information from the channel. We only care about the // aIsPrivate argument as nsCookieService::SetCookieStringInternal deals // with aIsForeign before we have to worry about nsCookiePermission trying // to use the channel to inspect it. nsCOMPtr<nsIChannel> dummyChannel; CreateDummyChannel(hostURI, appId, isInBrowserElement, isPrivate, getter_AddRefs(dummyChannel)); // NB: dummyChannel could be null if something failed in CreateDummyChannel. nsDependentCString cookieString(aCookieString, 0); mCookieService->SetCookieStringInternal(hostURI, aIsForeign, cookieString, aServerTime, aFromHttp, appId, isInBrowserElement, isPrivate, dummyChannel); return true; }