Skip to content

Commit fc65e01

Browse files
committed
[NTP Next] Add updated NTP with background support
1 parent 89750d5 commit fc65e01

File tree

75 files changed

+3316
-56
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+3316
-56
lines changed

browser/about_flags.cc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "brave/components/brave_ads/core/public/ad_units/notification_ad/notification_ad_feature.h"
2121
#include "brave/components/brave_ads/core/public/ads_feature.h"
2222
#include "brave/components/brave_component_updater/browser/features.h"
23+
#include "brave/components/brave_new_tab/new_tab_features.h"
2324
#include "brave/components/brave_news/common/features.h"
2425
#include "brave/components/brave_rewards/common/buildflags/buildflags.h"
2526
#include "brave/components/brave_rewards/common/features.h"
@@ -475,6 +476,13 @@
475476
kOsDesktop, \
476477
FEATURE_VALUE_TYPE(features::kBraveNtpSearchWidget), \
477478
}, \
479+
{ \
480+
"brave-use-updated-ntp", \
481+
"Use the updated New Tab Page", \
482+
"Uses an updated version of the New Tab Page", \
483+
kOsDesktop, \
484+
FEATURE_VALUE_TYPE(brave_new_tab::features::kUseUpdatedNTP), \
485+
}, \
478486
{ \
479487
"brave-adblock-cname-uncloaking", \
480488
"Enable CNAME uncloaking", \

browser/brave_content_browser_client.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,7 @@ using extensions::ChromeContentBrowserClientExtensionsPart;
226226
#if !BUILDFLAG(IS_ANDROID)
227227
#include "brave/browser/new_tab/new_tab_shows_navigation_throttle.h"
228228
#include "brave/browser/ui/geolocation/brave_geolocation_permission_tab_helper.h"
229+
#include "brave/browser/ui/webui/brave_new_tab/new_tab_page_ui.h"
229230
#include "brave/browser/ui/webui/brave_news_internals/brave_news_internals_ui.h"
230231
#include "brave/browser/ui/webui/brave_rewards/rewards_page_top_ui.h"
231232
#include "brave/browser/ui/webui/brave_rewards/rewards_panel_ui.h"
@@ -840,6 +841,9 @@ void BraveContentBrowserClient::RegisterBrowserInterfaceBindersForFrame(
840841
content::RegisterWebUIControllerInterfaceBinder<
841842
commands::mojom::CommandsService, BraveSettingsUI>(map);
842843
}
844+
content::RegisterWebUIControllerInterfaceBinder<
845+
brave_new_tab::mojom::NewTabPageHandler, brave_new_tab::NewTabPageUI>(
846+
map);
843847
#endif
844848

845849
auto* prefs =

browser/brave_profile_prefs.cc

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
#include "brave/browser/brave_shields/brave_shields_web_contents_observer.h"
1111
#include "brave/browser/ethereum_remote_client/buildflags/buildflags.h"
12-
#include "brave/browser/new_tab/new_tab_shows_options.h"
1312
#include "brave/browser/themes/brave_dark_mode_utils.h"
1413
#include "brave/browser/translate/brave_translate_prefs_migration.h"
1514
#include "brave/browser/ui/bookmark/brave_bookmark_prefs.h"
@@ -21,6 +20,7 @@
2120
#include "brave/components/brave_ads/browser/analytics/p2a/p2a.h"
2221
#include "brave/components/brave_ads/core/public/prefs/obsolete_pref_util.h"
2322
#include "brave/components/brave_ads/core/public/prefs/pref_registry.h"
23+
#include "brave/components/brave_new_tab/new_tab_prefs.h"
2424
#include "brave/components/brave_news/browser/brave_news_controller.h"
2525
#include "brave/components/brave_news/browser/brave_news_p3a.h"
2626
#include "brave/components/brave_news/browser/brave_news_pref_manager.h"
@@ -371,9 +371,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
371371
brave_private_new_tab::prefs::RegisterProfilePrefs(registry);
372372
#endif
373373

374-
registry->RegisterIntegerPref(
375-
kNewTabPageShowsOptions,
376-
static_cast<int>(NewTabPageShowsOptions::kDashboard));
374+
brave_new_tab::prefs::RegisterProfilePrefs(registry);
377375

378376
#if BUILDFLAG(ENABLE_CUSTOM_BACKGROUND)
379377
NTPBackgroundPrefs::RegisterPref(registry);

browser/extensions/BUILD.gn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ source_set("extensions") {
140140
"//brave/components/brave_ads/browser",
141141
"//brave/components/brave_ads/core/public:headers",
142142
"//brave/components/brave_extension:static_resources",
143+
"//brave/components/brave_new_tab",
143144
"//brave/components/brave_news/common",
144145
"//brave/components/brave_rewards/browser",
145146
"//brave/components/brave_rewards/common",

browser/extensions/api/settings_private/brave_prefs_util.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include "brave/browser/ui/tabs/brave_tab_prefs.h"
99
#include "brave/components/ai_chat/core/common/pref_names.h"
10+
#include "brave/components/brave_new_tab/new_tab_prefs.h"
1011
#include "brave/components/brave_news/common/pref_names.h"
1112
#include "brave/components/brave_rewards/common/pref_names.h"
1213
#include "brave/components/brave_shields/core/common/pref_names.h"
@@ -182,7 +183,7 @@ const PrefsUtil::TypedPrefMap& BravePrefsUtil::GetAllowlistedKeys() {
182183
settings_api::PrefType::kBoolean;
183184
(*s_brave_allowlist)[kNewTabPageShowBraveVPN] =
184185
settings_api::PrefType::kBoolean;
185-
(*s_brave_allowlist)[kNewTabPageShowsOptions] =
186+
(*s_brave_allowlist)[brave_new_tab::prefs::kNewTabShowsOption] =
186187
settings_api::PrefType::kNumber;
187188
#if BUILDFLAG(ENABLE_EXTENSIONS)
188189
// Web discovery prefs

browser/new_tab/BUILD.gn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ source_set("unittest") {
3030
deps = [
3131
"//brave/browser",
3232
"//brave/common",
33+
"//brave/components/brave_new_tab",
3334
"//brave/components/constants",
3435
"//chrome/common",
3536
"//chrome/test:test_support",

browser/new_tab/new_tab_shows_options.cc

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include <utility>
99

10+
#include "brave/components/brave_new_tab/new_tab_prefs.h"
1011
#include "brave/components/constants/pref_names.h"
1112
#include "brave/components/constants/webui_url_constants.h"
1213
#include "brave/grit/brave_generated_resources.h"
@@ -29,44 +30,40 @@ GURL GetNewTabPageURL(Profile* profile) {
2930

3031
auto* prefs = profile->GetPrefs();
3132

32-
NewTabPageShowsOptions option = static_cast<NewTabPageShowsOptions>(
33-
prefs->GetInteger(kNewTabPageShowsOptions));
34-
if (option == NewTabPageShowsOptions::kHomepage) {
35-
if (prefs->GetBoolean(prefs::kHomePageIsNewTabPage)) {
33+
switch (brave_new_tab::prefs::GetNewTabShowsOption(prefs)) {
34+
case brave_new_tab::prefs::NewTabShowsOption::kHomepage:
35+
return prefs->GetBoolean(prefs::kHomePageIsNewTabPage)
36+
? GURL()
37+
: GURL(prefs->GetString(prefs::kHomePage));
38+
case brave_new_tab::prefs::NewTabShowsOption::kBlankpage:
39+
case brave_new_tab::prefs::NewTabShowsOption::kDashboard:
3640
return GURL();
37-
}
38-
return GURL(prefs->GetString(prefs::kHomePage));
39-
} else if (option == NewTabPageShowsOptions::kBlankpage) {
40-
// NewTab route will handle for blank page.
41-
return GURL();
42-
} else {
43-
DCHECK_EQ(NewTabPageShowsOptions::kDashboard, option);
44-
return GURL();
4541
}
4642
}
4743

4844
base::Value::List GetNewTabShowsOptionsList(Profile* profile) {
45+
using brave_new_tab::prefs::NewTabShowsOption;
46+
4947
base::Value::List list;
5048

5149
base::Value::Dict dashboard_option;
5250
dashboard_option.Set("value",
53-
static_cast<int>(NewTabPageShowsOptions::kDashboard));
51+
static_cast<int>(NewTabShowsOption::kDashboard));
5452
dashboard_option.Set("name",
5553
l10n_util::GetStringUTF8(
5654
IDS_SETTINGS_NEW_TAB_NEW_TAB_PAGE_SHOWS_DASHBOARD));
5755
list.Append(std::move(dashboard_option));
5856

5957
base::Value::Dict homepage_option;
60-
homepage_option.Set("value",
61-
static_cast<int>(NewTabPageShowsOptions::kHomepage));
58+
homepage_option.Set("value", static_cast<int>(NewTabShowsOption::kHomepage));
6259
homepage_option.Set("name",
6360
l10n_util::GetStringUTF8(
6461
IDS_SETTINGS_NEW_TAB_NEW_TAB_PAGE_SHOWS_HOMEPAGE));
6562
list.Append(std::move(homepage_option));
6663

6764
base::Value::Dict blankpage_option;
6865
blankpage_option.Set("value",
69-
static_cast<int>(NewTabPageShowsOptions::kBlankpage));
66+
static_cast<int>(NewTabShowsOption::kBlankpage));
7067
blankpage_option.Set("name",
7168
l10n_util::GetStringUTF8(
7269
IDS_SETTINGS_NEW_TAB_NEW_TAB_PAGE_SHOWS_BLANKPAGE));
@@ -81,9 +78,8 @@ bool ShouldUseNewTabURLForNewTab(Profile* profile) {
8178
}
8279

8380
bool ShouldNewTabShowDashboard(Profile* profile) {
84-
auto* prefs = profile->GetPrefs();
85-
if (static_cast<NewTabPageShowsOptions>(prefs->GetInteger(
86-
kNewTabPageShowsOptions)) == NewTabPageShowsOptions::kBlankpage) {
81+
auto option = brave_new_tab::prefs::GetNewTabShowsOption(profile->GetPrefs());
82+
if (option == brave_new_tab::prefs::NewTabShowsOption::kBlankpage) {
8783
return false;
8884
}
8985

@@ -95,8 +91,8 @@ bool ShouldNewTabShowBlankpage(Profile* profile) {
9591
return false;
9692
}
9793

98-
return profile->GetPrefs()->GetInteger(kNewTabPageShowsOptions) ==
99-
static_cast<int>(brave::NewTabPageShowsOptions::kBlankpage);
94+
auto option = brave_new_tab::prefs::GetNewTabShowsOption(profile->GetPrefs());
95+
return option == brave_new_tab::prefs::NewTabShowsOption::kBlankpage;
10096
}
10197

10298
} // namespace brave

browser/new_tab/new_tab_shows_options.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,6 @@ class Profile;
1313

1414
namespace brave {
1515

16-
enum class NewTabPageShowsOptions {
17-
kDashboard,
18-
kHomepage,
19-
kBlankpage
20-
};
21-
2216
GURL GetNewTabPageURL(Profile* profile);
2317
base::Value::List GetNewTabShowsOptionsList(Profile* profile);
2418
bool ShouldUseNewTabURLForNewTab(Profile* profile);

browser/new_tab/new_tab_shows_options_unittest.cc

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
* You can obtain one at http://mozilla.org/MPL/2.0/. */
55

66
#include "brave/browser/new_tab/new_tab_shows_options.h"
7+
8+
#include "brave/components/brave_new_tab/new_tab_prefs.h"
79
#include "brave/components/constants/pref_names.h"
810
#include "brave/components/constants/webui_url_constants.h"
911
#include "chrome/common/pref_names.h"
@@ -15,6 +17,8 @@
1517
#include "testing/gtest/include/gtest/gtest.h"
1618
#include "url/url_constants.h"
1719

20+
using brave_new_tab::prefs::NewTabShowsOption;
21+
1822
class BraveNewTabTest : public testing::Test {
1923
public:
2024
BraveNewTabTest() : manager_(TestingBrowserProcess::GetGlobal()) {}
@@ -42,19 +46,17 @@ TEST_F(BraveNewTabTest, BasicTest) {
4246
auto* prefs = profile->GetPrefs();
4347

4448
// Check NTP url is empty for DASHBOARD.
45-
prefs->SetInteger(
46-
kNewTabPageShowsOptions,
47-
static_cast<int>(brave::NewTabPageShowsOptions::kDashboard));
49+
prefs->SetInteger(brave_new_tab::prefs::kNewTabShowsOption,
50+
static_cast<int>(NewTabShowsOption::kDashboard));
4851
EXPECT_EQ(GURL(), brave::GetNewTabPageURL(profile));
4952
EXPECT_EQ(GURL(), brave::GetNewTabPageURL(otr_profile));
5053
EXPECT_TRUE(brave::ShouldUseNewTabURLForNewTab(profile));
5154
EXPECT_TRUE(brave::ShouldNewTabShowDashboard(profile));
5255

5356
// Check NTP url is empty when option is HOMEPAGE and kHomePageIsNewTabPage
5457
// is true.
55-
prefs->SetInteger(
56-
kNewTabPageShowsOptions,
57-
static_cast<int>(brave::NewTabPageShowsOptions::kHomepage));
58+
prefs->SetInteger(brave_new_tab::prefs::kNewTabShowsOption,
59+
static_cast<int>(NewTabShowsOption::kHomepage));
5860
prefs->SetString(prefs::kHomePage, "https://www.brave.com/");
5961
prefs->SetBoolean(prefs::kHomePageIsNewTabPage, true);
6062
EXPECT_EQ(GURL(), brave::GetNewTabPageURL(profile));
@@ -77,9 +79,8 @@ TEST_F(BraveNewTabTest, BasicTest) {
7779

7880
// Check NTP url is used when option is BLANKPAGE.
7981
// Blank page will go NTP route and BraveNewTabUI will handle it.
80-
prefs->SetInteger(
81-
kNewTabPageShowsOptions,
82-
static_cast<int>(brave::NewTabPageShowsOptions::kBlankpage));
82+
prefs->SetInteger(brave_new_tab::prefs::kNewTabShowsOption,
83+
static_cast<int>(NewTabShowsOption::kBlankpage));
8384
EXPECT_EQ(GURL(), brave::GetNewTabPageURL(profile));
8485
EXPECT_EQ(GURL(), brave::GetNewTabPageURL(otr_profile));
8586
EXPECT_TRUE(brave::ShouldUseNewTabURLForNewTab(profile));

browser/resources/settings/brave_new_tab_page/brave_new_tab_browser_proxy.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import {sendWithPromise} from 'chrome://resources/js/cr.js';
77

88
export type NewTabOption = {
99
name: string
10-
value: number // corresponds to NewTabPageShowsOptions enum
10+
value: number // corresponds to NewTabShowsOption enum
1111
}
1212

1313
export interface BraveNewTabBrowserProxy {

0 commit comments

Comments
 (0)