Skip to content

Commit

Permalink
Select default browser on welcome page import page
Browse files Browse the repository at this point in the history
  • Loading branch information
spylogsster committed Feb 17, 2023
1 parent 089252e commit 0dcce26
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 2 deletions.
28 changes: 28 additions & 0 deletions browser/ui/webui/brave_welcome_ui.cc
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,12 @@ class WelcomeDOMHandler : public WebUIMessageHandler {
private:
void HandleImportNowRequested(const base::Value::List& args);
void HandleRecordP3A(const base::Value::List& args);
void GetDefaultBrowser(const base::Value::List& args);
void SetLocalStateBooleanEnabled(const std::string& path,
const base::Value::List& args);
void OnGetDefaultBrowser(const std::string& callback_id,
shell_integration::DefaultWebClientState state,
const std::u16string& name);
void SetP3AEnabled(const base::Value::List& args);
void HandleOpenSettingsPage(const base::Value::List& args);
void HandleSetMetricsReportingEnabled(const base::Value::List& args);
Expand All @@ -132,6 +136,7 @@ class WelcomeDOMHandler : public WebUIMessageHandler {
bool finished_ = false;
bool skipped_ = false;
Profile* profile_ = nullptr;
base::WeakPtrFactory<WelcomeDOMHandler> weak_ptr_factory_{this};
};

WelcomeDOMHandler::WelcomeDOMHandler(Profile* profile) : profile_(profile) {}
Expand Down Expand Up @@ -163,6 +168,10 @@ void WelcomeDOMHandler::RegisterMessages() {
"setMetricsReportingEnabled",
base::BindRepeating(&WelcomeDOMHandler::HandleSetMetricsReportingEnabled,
base::Unretained(this)));
web_ui()->RegisterMessageCallback(
"getDefaultBrowser",
base::BindRepeating(&WelcomeDOMHandler::GetDefaultBrowser,
base::Unretained(this)));
}

void WelcomeDOMHandler::HandleImportNowRequested(
Expand All @@ -171,6 +180,25 @@ void WelcomeDOMHandler::HandleImportNowRequested(
chrome::kImportDataSubPage);
}

void WelcomeDOMHandler::GetDefaultBrowser(const base::Value::List& args) {
CHECK_EQ(1U, args.size());
const auto& callback_id = args[0].GetString();
AllowJavascript();

base::MakeRefCounted<shell_integration::DefaultProtocolClientWorker>(
GURL("https://brave.com"))
->StartCheckIsDefaultAndGetDefaultClientName(
base::BindOnce(&WelcomeDOMHandler::OnGetDefaultBrowser,
weak_ptr_factory_.GetWeakPtr(), callback_id));
}

void WelcomeDOMHandler::OnGetDefaultBrowser(
const std::string& callback_id,
shell_integration::DefaultWebClientState state,
const std::u16string& name) {
ResolveJavascriptCallback(base::Value(callback_id), base::Value(name));
}

void WelcomeDOMHandler::HandleRecordP3A(const base::Value::List& args) {
if (!args[0].is_int() || !args[1].is_bool() || !args[2].is_bool())
return;
Expand Down
6 changes: 6 additions & 0 deletions components/brave_welcome_ui/api/welcome_browser_proxy.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
// you can obtain one at https://mozilla.org/MPL/2.0/.

import { sendWithPromise } from 'gen/ui/webui/resources/preprocessed/js/cr'
import { DefaultBrowserBrowserProxyImpl } from './default_browser_browser_proxy'
import { ImportDataBrowserProxyImpl, BrowserProfile as _BrowserProfile } from './import_data_browser_proxy'

Expand Down Expand Up @@ -31,6 +32,7 @@ export interface WelcomeBrowserProxy {
setP3AEnabled: (enabled: boolean) => void
setMetricsReportingEnabled: (enabled: boolean) => void
openSettingsPage: () => void
getDefaultBrowser: () => Promise<string>
}

export { DefaultBrowserBrowserProxyImpl, ImportDataBrowserProxyImpl }
Expand All @@ -52,6 +54,10 @@ export class WelcomeBrowserProxyImpl implements WelcomeBrowserProxy {
chrome.send('openSettingsPage')
}

getDefaultBrowser (): Promise<string> {
return sendWithPromise('getDefaultBrowser')
}

static getInstance (): WelcomeBrowserProxy {
return instance || (instance = new WelcomeBrowserProxyImpl())
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,10 @@ function BrowserItemButton (props: BrowserItemButtonProps) {
function SelectBrowser () {
const { browserProfiles, currentSelectedBrowser, setCurrentSelectedBrowser, setViewType, incrementCount, scenes } = React.useContext(DataContext)
const browserTypes = getUniqueBrowserTypes(browserProfiles ?? [])

WelcomeBrowserProxyImpl.getInstance().getDefaultBrowser().then(
(name: string) => {
setCurrentSelectedBrowser?.(name)
})
const handleSelectionChange = (browserName: string) => {
setCurrentSelectedBrowser?.(browserName)
}
Expand Down Expand Up @@ -106,7 +109,6 @@ function SelectBrowser () {
setViewType(ViewType.HelpImprove)
WelcomeBrowserProxyImpl.getInstance().recordP3A({ currentScreen: ViewType.ImportSelectBrowser, isFinished: false, isSkipped: true })
}

return (
<S.MainBox>
<div className="view-header-box">
Expand Down

0 comments on commit 0dcce26

Please sign in to comment.