Skip to content

Commit 3add23a

Browse files
committed
Use correct RenderViewHost on newtab to avoid crashes
Fix brave/brave-browser#708 Fix brave/brave-browser#707
1 parent 860d43f commit 3add23a

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

browser/ui/webui/brave_new_tab_ui.cc

+13-6
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,19 @@ BraveNewTabUI::BraveNewTabUI(content::WebUI* web_ui, const std::string& name)
6363
BraveNewTabUI::~BraveNewTabUI() {
6464
}
6565

66-
void BraveNewTabUI::CustomizeNewTabWebUIProperties() {
66+
void BraveNewTabUI::CustomizeNewTabWebUIProperties(content::RenderFrameHost* render_frame_host) {
6767
Profile* profile = Profile::FromWebUI(web_ui());
6868
PrefService* prefs = profile->GetPrefs();
69-
auto* web_contents = web_ui()->GetWebContents();
70-
if (web_contents) {
71-
auto* render_view_host = web_contents->GetRenderViewHost();
69+
content::RenderViewHost* render_view_host = nullptr;
70+
if (render_frame_host) {
71+
render_view_host = render_frame_host->GetRenderViewHost();
72+
} else {
73+
auto* web_contents = web_ui()->GetWebContents();
74+
if (web_contents) {
75+
render_view_host = web_contents->GetRenderViewHost();
76+
}
77+
}
78+
if (render_view_host) {
7279
if (render_view_host) {
7380
render_view_host->SetWebUIProperty(
7481
"adsBlockedStat",
@@ -95,13 +102,13 @@ void BraveNewTabUI::CustomizeNewTabWebUIProperties() {
95102

96103
void BraveNewTabUI::RenderFrameCreated(content::RenderFrameHost* render_frame_host) {
97104
if (0 != (web_ui()->GetBindings() & content::BINDINGS_POLICY_WEB_UI)) {
98-
CustomizeNewTabWebUIProperties();
105+
CustomizeNewTabWebUIProperties(render_frame_host);
99106
}
100107
}
101108

102109
void BraveNewTabUI::OnPreferenceChanged() {
103110
if (0 != (web_ui()->GetBindings() & content::BINDINGS_POLICY_WEB_UI)) {
104-
CustomizeNewTabWebUIProperties();
111+
CustomizeNewTabWebUIProperties(nullptr);
105112
web_ui()->CallJavascriptFunctionUnsafe("brave_new_tab.statsUpdated");
106113
}
107114
}

browser/ui/webui/brave_new_tab_ui.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ class BraveNewTabUI : public BasicUI {
1616
~BraveNewTabUI() override;
1717

1818
private:
19-
void CustomizeNewTabWebUIProperties();
2019
void RenderFrameCreated(content::RenderFrameHost* render_frame_host) override;
20+
void CustomizeNewTabWebUIProperties(content::RenderFrameHost* render_frame_host);
2121
void OnPreferenceChanged();
2222

2323
std::unique_ptr<PrefChangeRegistrar> pref_change_registrar_;

0 commit comments

Comments
 (0)