Skip to content

Commit 590da54

Browse files
authored
Merge pull request #3154 from brave/bsc-shields-advanced-default-change
Default shield advanced view to TRUE for existing users.
2 parents b295203 + fef2fbc commit 590da54

5 files changed

+183
-4
lines changed
+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/* Copyright (c) 2019 The Brave Authors. All rights reserved.
2+
* This Source Code Form is subject to the terms of the Mozilla Public
3+
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
4+
* You can obtain one at http://mozilla.org/MPL/2.0/. */
5+
6+
#include "brave/browser/brave_first_run_browsertest.h"
7+
8+
FirstRunMasterPrefsBrowserTestBase::FirstRunMasterPrefsBrowserTestBase() {}
9+
10+
FirstRunMasterPrefsBrowserTestBase::~FirstRunMasterPrefsBrowserTestBase() {}
11+
12+
void FirstRunMasterPrefsBrowserTestBase::SetUp() {
13+
// All users of this test class need to call SetMasterPreferencesForTest()
14+
// before this class' SetUp() is invoked.
15+
ASSERT_TRUE(text_.get());
16+
17+
ASSERT_TRUE(base::CreateTemporaryFile(&prefs_file_));
18+
EXPECT_EQ(static_cast<int>(text_->size()),
19+
base::WriteFile(prefs_file_, text_->c_str(), text_->size()));
20+
first_run::SetMasterPrefsPathForTesting(prefs_file_);
21+
22+
// This invokes BrowserMain, and does the import, so must be done last.
23+
InProcessBrowserTest::SetUp();
24+
}
25+
26+
void FirstRunMasterPrefsBrowserTestBase::TearDown() {
27+
EXPECT_TRUE(base::DeleteFile(prefs_file_, false));
28+
InProcessBrowserTest::TearDown();
29+
}
30+
31+
void FirstRunMasterPrefsBrowserTestBase::SetUpCommandLine(
32+
base::CommandLine* command_line) {
33+
command_line->AppendSwitch(switches::kForceFirstRun);
34+
EXPECT_EQ(first_run::AUTO_IMPORT_NONE, first_run::auto_import_state());
35+
36+
extensions::ComponentLoader::EnableBackgroundExtensionsForTesting();
37+
}
38+
39+
#if defined(OS_MACOSX) || defined(OS_LINUX)
40+
void FirstRunMasterPrefsBrowserTestBase::SetUpInProcessBrowserTestFixture() {
41+
InProcessBrowserTest::SetUpInProcessBrowserTestFixture();
42+
// Suppress first run dialog since it blocks test progress.
43+
first_run::internal::ForceFirstRunDialogShownForTesting(false);
44+
}
45+
#endif

browser/brave_first_run_browsertest.h

+100
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
/* Copyright (c) 2019 The Brave Authors. All rights reserved.
2+
* This Source Code Form is subject to the terms of the Mozilla Public
3+
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
4+
* You can obtain one at http://mozilla.org/MPL/2.0/. */
5+
6+
#ifndef BRAVE_BROWSER_BRAVE_FIRST_RUN_BROWSERTEST_H_
7+
#define BRAVE_BROWSER_BRAVE_FIRST_RUN_BROWSERTEST_H_
8+
9+
// Copied from chrome/browser/first_run/first_run_browsertest.cc
10+
// See browser/brave_profile_prefs_browsertest.cc for an example
11+
// Useful for verifying first-run functionality.
12+
13+
#include <memory>
14+
#include <string>
15+
16+
#include "base/base_switches.h"
17+
#include "base/command_line.h"
18+
#include "base/files/file_path.h"
19+
#include "base/macros.h"
20+
#include "base/memory/ref_counted.h"
21+
#include "base/run_loop.h"
22+
#include "base/strings/string_util.h"
23+
#include "base/strings/utf_string_conversions.h"
24+
#include "base/test/metrics/histogram_tester.h"
25+
#include "build/build_config.h"
26+
#include "chrome/browser/browser_process.h"
27+
#include "chrome/browser/extensions/component_loader.h"
28+
#include "chrome/browser/first_run/first_run.h"
29+
#include "chrome/browser/first_run/first_run_internal.h"
30+
#include "chrome/browser/importer/importer_list.h"
31+
#include "chrome/browser/prefs/chrome_pref_service_factory.h"
32+
#include "chrome/browser/profiles/profile_manager.h"
33+
#include "chrome/browser/ui/browser.h"
34+
#include "chrome/browser/ui/tabs/tab_strip_model.h"
35+
#include "chrome/common/chrome_switches.h"
36+
#include "chrome/common/pref_names.h"
37+
#include "chrome/common/url_constants.h"
38+
#include "chrome/test/base/in_process_browser_test.h"
39+
#include "chrome/test/base/ui_test_utils.h"
40+
#include "components/prefs/pref_service.h"
41+
#include "components/user_prefs/user_prefs.h"
42+
#include "components/variations/metrics.h"
43+
#include "components/variations/pref_names.h"
44+
#include "components/variations/variations_switches.h"
45+
#include "content/public/browser/web_contents.h"
46+
#include "content/public/common/content_switches.h"
47+
#include "content/public/test/browser_test_utils.h"
48+
#include "content/public/test/test_launcher.h"
49+
#include "testing/gtest/include/gtest/gtest.h"
50+
51+
typedef InProcessBrowserTest FirstRunBrowserTest;
52+
53+
// A generic test class to be subclassed by test classes testing specific
54+
// master_preferences. All subclasses must call SetMasterPreferencesForTest()
55+
// from their SetUp() method before deferring the remainder of Setup() to this
56+
// class.
57+
class FirstRunMasterPrefsBrowserTestBase : public InProcessBrowserTest {
58+
public:
59+
FirstRunMasterPrefsBrowserTestBase();
60+
~FirstRunMasterPrefsBrowserTestBase() override;
61+
62+
protected:
63+
void SetUp() override;
64+
65+
void TearDown() override;
66+
67+
void SetUpCommandLine(base::CommandLine* command_line) override;
68+
69+
#if defined(OS_MACOSX) || defined(OS_LINUX)
70+
void SetUpInProcessBrowserTestFixture() override;
71+
#endif
72+
73+
void SetMasterPreferencesForTest(const char text[]) {
74+
text_.reset(new std::string(text));
75+
}
76+
77+
private:
78+
base::FilePath prefs_file_;
79+
std::unique_ptr<std::string> text_;
80+
81+
DISALLOW_COPY_AND_ASSIGN(FirstRunMasterPrefsBrowserTestBase);
82+
};
83+
84+
template<const char Text[]>
85+
class FirstRunMasterPrefsBrowserTestT
86+
: public FirstRunMasterPrefsBrowserTestBase {
87+
public:
88+
FirstRunMasterPrefsBrowserTestT() {}
89+
90+
protected:
91+
void SetUp() override {
92+
SetMasterPreferencesForTest(Text);
93+
FirstRunMasterPrefsBrowserTestBase::SetUp();
94+
}
95+
96+
private:
97+
DISALLOW_COPY_AND_ASSIGN(FirstRunMasterPrefsBrowserTestT);
98+
};
99+
100+
#endif // BRAVE_BROWSER_BRAVE_FIRST_RUN_BROWSERTEST_H_

browser/brave_profile_prefs.cc

+13-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,10 @@
2828
#include "brave/components/brave_webtorrent/browser/webtorrent_util.h"
2929
#endif
3030

31+
#if !defined(OS_ANDROID)
32+
#include "chrome/browser/first_run/first_run.h"
33+
#endif
34+
3135
using extensions::FeatureSwitch;
3236

3337
namespace brave {
@@ -50,7 +54,15 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
5054
registry->RegisterBooleanPref(kHTTPSEVerywhereControlType, true);
5155
registry->RegisterBooleanPref(kNoScriptControlType, false);
5256
registry->RegisterBooleanPref(kAdControlType, true);
53-
registry->RegisterBooleanPref(kShieldsAdvancedViewEnabled, false);
57+
// > advanced view is defaulted to true for EXISTING users; false for new
58+
bool is_new_user = false;
59+
60+
#if !defined(OS_ANDROID)
61+
is_new_user = first_run::IsChromeFirstRun();
62+
#endif
63+
64+
registry->RegisterBooleanPref(kShieldsAdvancedViewEnabled,
65+
is_new_user == false);
5466
registry->RegisterBooleanPref(kGoogleLoginControlType, true);
5567
registry->RegisterBooleanPref(kFBEmbedControlType, true);
5668
registry->RegisterBooleanPref(kTwitterEmbedControlType, true);

browser/brave_profile_prefs_browsertest.cc

+23-3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "components/safe_browsing/common/safe_browsing_prefs.h"
1414
#include "components/spellcheck/browser/pref_names.h"
1515
#include "components/sync/base/pref_names.h"
16+
#include "brave/browser/brave_first_run_browsertest.h"
1617

1718
using BraveProfilePrefsBrowserTest = InProcessBrowserTest;
1819

@@ -29,9 +30,6 @@ IN_PROC_BROWSER_TEST_F(BraveProfilePrefsBrowserTest, MiscBravePrefs) {
2930
kHTTPSEVerywhereControlType));
3031
EXPECT_FALSE(
3132
browser()->profile()->GetPrefs()->GetBoolean(kNoScriptControlType));
32-
EXPECT_FALSE(
33-
browser()->profile()->GetPrefs()->GetBoolean(
34-
kShieldsAdvancedViewEnabled));
3533
EXPECT_TRUE(
3634
browser()->profile()->GetPrefs()->GetBoolean(kAdControlType));
3735
EXPECT_TRUE(
@@ -52,6 +50,28 @@ IN_PROC_BROWSER_TEST_F(BraveProfilePrefsBrowserTest, MiscBravePrefs) {
5250
browser()->profile()->GetPrefs()->GetBoolean(kIPFSCompanionEnabled));
5351
}
5452

53+
// First run of Brave should default Shields to Simple view
54+
#if !defined(OS_ANDROID)
55+
const char kFirstRunEmptyPrefs[] = "{}";
56+
typedef FirstRunMasterPrefsBrowserTestT<kFirstRunEmptyPrefs>
57+
BraveProfilePrefsFirstRunBrowserTest;
58+
IN_PROC_BROWSER_TEST_F(BraveProfilePrefsFirstRunBrowserTest,
59+
AdvancedShieldsNewUserValue) {
60+
EXPECT_FALSE(
61+
browser()->profile()->GetPrefs()->GetBoolean(
62+
kShieldsAdvancedViewEnabled));
63+
}
64+
65+
// Existing Brave users should default shields to Advanced view
66+
IN_PROC_BROWSER_TEST_F(BraveProfilePrefsBrowserTest,
67+
AdvancedShieldsExistingUserValue) {
68+
first_run::CreateSentinelIfNeeded();
69+
EXPECT_TRUE(
70+
browser()->profile()->GetPrefs()->GetBoolean(
71+
kShieldsAdvancedViewEnabled));
72+
}
73+
#endif
74+
5575
IN_PROC_BROWSER_TEST_F(BraveProfilePrefsBrowserTest,
5676
DisableGoogleServicesByDefault) {
5777
EXPECT_FALSE(browser()->profile()->GetPrefs()->GetBoolean(

test/BUILD.gn

+2
Original file line numberDiff line numberDiff line change
@@ -374,6 +374,8 @@ test("brave_browser_tests") {
374374
"//brave/browser/brave_content_browser_client_browsertest.cc",
375375
"//brave/browser/brave_features_browsertest.cc",
376376
"//brave/browser/brave_profile_prefs_browsertest.cc",
377+
"//brave/browser/brave_first_run_browsertest.h",
378+
"//brave/browser/brave_first_run_browsertest.cc",
377379
"//brave/browser/brave_resources_browsertest.cc",
378380
"//brave/browser/brave_stats_updater_browsertest.cc",
379381
"//brave/browser/browsing_data/brave_clear_browsing_data_browsertest.cc",

0 commit comments

Comments
 (0)