mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-03-01 05:48:26 +00:00
Bug 1534538 - Avoid sending CookieSettings from parent to child if not needed, r=Ehsan
Differential Revision: https://phabricator.services.mozilla.com/D23121 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
69c2a0a877
commit
21180cb43c
@ -733,9 +733,10 @@ void LoadInfoToParentLoadInfoForwarder(
|
||||
|
||||
nsCOMPtr<nsICookieSettings> cookieSettings;
|
||||
nsresult rv = aLoadInfo->GetCookieSettings(getter_AddRefs(cookieSettings));
|
||||
if (NS_SUCCEEDED(rv) && cookieSettings) {
|
||||
CookieSettings* cs = static_cast<CookieSettings*>(cookieSettings.get());
|
||||
if (NS_SUCCEEDED(rv) && cookieSettings && cs->HasBeenChanged()) {
|
||||
CookieSettingsArgs args;
|
||||
static_cast<CookieSettings*>(cookieSettings.get())->Serialize(args);
|
||||
cs->Serialize(args);
|
||||
cookieSettingsArgs = Some(args);
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,7 @@ already_AddRefed<nsICookieSettings> CookieSettings::Create() {
|
||||
}
|
||||
|
||||
CookieSettings::CookieSettings(uint32_t aCookieBehavior, State aState)
|
||||
: mCookieBehavior(aCookieBehavior), mState(aState) {
|
||||
: mCookieBehavior(aCookieBehavior), mState(aState), mToBeMerged(false) {
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
}
|
||||
|
||||
@ -149,6 +149,7 @@ CookieSettings::CookiePermission(nsIPrincipal* aPrincipal,
|
||||
mCookiePermissions.AppendElement(permission);
|
||||
}
|
||||
|
||||
mToBeMerged = true;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -180,6 +181,8 @@ void CookieSettings::Serialize(CookieSettingsArgs& aData) {
|
||||
aData.cookiePermissions().AppendElement(
|
||||
CookiePermissionData(principalInfo, cookiePermission));
|
||||
}
|
||||
|
||||
mToBeMerged = false;
|
||||
}
|
||||
|
||||
/* static */ void CookieSettings::Deserialize(
|
||||
|
@ -120,6 +120,11 @@ class CookieSettings final : public nsICookieSettings {
|
||||
|
||||
void Merge(const CookieSettingsArgs& aData);
|
||||
|
||||
// We don't want to send this object from parent to child process if there are
|
||||
// no reasons. HasBeenChanged() returns true if the object has changed its
|
||||
// internal state and it must be sent beck to the content process.
|
||||
bool HasBeenChanged() const { return mToBeMerged; }
|
||||
|
||||
private:
|
||||
enum State {
|
||||
// No cookie permissions are allowed to be stored in this object.
|
||||
@ -137,6 +142,8 @@ class CookieSettings final : public nsICookieSettings {
|
||||
CookiePermissionList mCookiePermissions;
|
||||
|
||||
State mState;
|
||||
|
||||
bool mToBeMerged;
|
||||
};
|
||||
|
||||
} // namespace net
|
||||
|
Loading…
x
Reference in New Issue
Block a user