Skip to content

Commit

Permalink
Fixes clear cookies on exit toggle.
Browse files Browse the repository at this point in the history
Fixes brave/brave-browser#6119

Account for CONTENT_SETTING_SESSION_ONLY as a possibility for the
default cookie setting in preferences - do not override it with
CONTENT_SETTING_ALLOW if it's already set.

Added browser test CookiePrefServiceTest.CookieControlType_Preference to
test Shields cookie setting change when preference setting changes
and in reverse.
  • Loading branch information
mkarolin committed Oct 23, 2019
1 parent 274af01 commit 92589a6
Show file tree
Hide file tree
Showing 3 changed files with 85 additions and 2 deletions.
8 changes: 6 additions & 2 deletions components/brave_shields/browser/cookie_pref_service.cc
Expand Up @@ -46,8 +46,12 @@ void SetCookiePrefDefaults(HostContentSettingsMap* map, PrefService* prefs) {
prefs->SetInteger("profile.default_content_setting_values.cookies",
CONTENT_SETTING_BLOCK);
} else {
prefs->SetInteger("profile.default_content_setting_values.cookies",
CONTENT_SETTING_ALLOW);
int value =
prefs->GetInteger("profile.default_content_setting_values.cookies");
if (IntToContentSetting(value) != CONTENT_SETTING_SESSION_ONLY) {
value = CONTENT_SETTING_ALLOW;
}
prefs->SetInteger("profile.default_content_setting_values.cookies", value);
}
}

Expand Down
@@ -0,0 +1,78 @@
/* Copyright (c) 2019 The Brave Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "brave/components/brave_shields/browser/brave_shields_util.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "components/content_settings/core/common/content_settings.h"
#include "components/prefs/pref_service.h"
#include "url/gurl.h"

using brave_shields::ControlType;

class CookiePrefServiceTest : public InProcessBrowserTest {
public:
CookiePrefServiceTest() = default;
~CookiePrefServiceTest() override = default;

Profile* profile() { return browser()->profile(); }

ContentSetting GetCookiePref() {
return IntToContentSetting(profile()->GetPrefs()->GetInteger(
"profile.default_content_setting_values.cookies"));
}

void SetCookiePref(ContentSetting setting) {
profile()->GetPrefs()->SetInteger(
"profile.default_content_setting_values.cookies", setting);
}
};

IN_PROC_BROWSER_TEST_F(CookiePrefServiceTest, CookieControlType_Preference) {
// Initial state
auto setting = brave_shields::GetCookieControlType(profile(), GURL());
EXPECT_EQ(ControlType::BLOCK_THIRD_PARTY, setting);
EXPECT_EQ(CONTENT_SETTING_ALLOW, GetCookiePref());

// Control -> preference
/* BLOCK */
brave_shields::SetCookieControlType(profile(), ControlType::BLOCK, GURL());
EXPECT_EQ(CONTENT_SETTING_BLOCK, GetCookiePref());

/* ALLOW */
brave_shields::SetCookieControlType(profile(), ControlType::ALLOW, GURL());
EXPECT_EQ(CONTENT_SETTING_ALLOW, GetCookiePref());

/* BLOCK_THIRD_PARTY */
brave_shields::SetCookieControlType(profile(), ControlType::BLOCK, GURL());
EXPECT_EQ(CONTENT_SETTING_BLOCK, GetCookiePref());
brave_shields::SetCookieControlType(profile(), ControlType::BLOCK_THIRD_PARTY,
GURL());
EXPECT_EQ(CONTENT_SETTING_ALLOW, GetCookiePref());

// Preference -> control
/* BLOCK */
SetCookiePref(CONTENT_SETTING_BLOCK);
EXPECT_EQ(ControlType::BLOCK,
brave_shields::GetCookieControlType(profile(), GURL()));

/* ALLOW */
SetCookiePref(CONTENT_SETTING_ALLOW);
EXPECT_EQ(ControlType::ALLOW,
brave_shields::GetCookieControlType(profile(), GURL()));

// Preserve CONTENT_SETTING_SESSION_ONLY
SetCookiePref(CONTENT_SETTING_BLOCK);
EXPECT_EQ(ControlType::BLOCK,
brave_shields::GetCookieControlType(profile(), GURL()));
SetCookiePref(CONTENT_SETTING_SESSION_ONLY);
EXPECT_EQ(ControlType::ALLOW,
brave_shields::GetCookieControlType(profile(), GURL()));
SetCookiePref(CONTENT_SETTING_ALLOW);
EXPECT_EQ(ControlType::ALLOW,
brave_shields::GetCookieControlType(profile(), GURL()));
}
1 change: 1 addition & 0 deletions test/BUILD.gn
Expand Up @@ -501,6 +501,7 @@ test("brave_browser_tests") {
"//brave/chromium_src/third_party/blink/renderer/modules/bluetooth/navigator_bluetoothtest.cc",
"//brave/common/brave_channel_info_browsertest.cc",
"//brave/components/brave_shields/browser/ad_block_service_browsertest.cc",
"//brave/components/brave_shields/browser/cookie_pref_service_browsertest.cc",
"//brave/components/brave_shields/browser/https_everywhere_service_browsertest.cc",
"//brave/components/brave_shields/browser/referrer_whitelist_service_browsertest.cc",
"//brave/components/brave_shields/browser/tracking_protection_service_browsertest.cc",
Expand Down

0 comments on commit 92589a6

Please sign in to comment.