From ccd56418a143673551889ed0c5ccbdfdd65992a1 Mon Sep 17 00:00:00 2001 From: Sergey P Date: Fri, 17 Feb 2023 17:53:14 +0530 Subject: [PATCH 1/2] Select default browser on welcome page import page --- browser/ui/webui/brave_welcome_ui.cc | 28 +++++++++++++++++++ .../api/welcome_browser_proxy.ts | 6 ++++ .../components/select-browser/index.tsx | 8 +++++- 3 files changed, 41 insertions(+), 1 deletion(-) diff --git a/browser/ui/webui/brave_welcome_ui.cc b/browser/ui/webui/brave_welcome_ui.cc index 2d856696c268..8d5655895291 100644 --- a/browser/ui/webui/brave_welcome_ui.cc +++ b/browser/ui/webui/brave_welcome_ui.cc @@ -122,8 +122,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); @@ -133,6 +137,7 @@ class WelcomeDOMHandler : public WebUIMessageHandler { bool finished_ = false; bool skipped_ = false; Profile* profile_ = nullptr; + base::WeakPtrFactory weak_ptr_factory_{this}; }; WelcomeDOMHandler::WelcomeDOMHandler(Profile* profile) : profile_(profile) {} @@ -164,6 +169,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( @@ -172,6 +181,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( + 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; diff --git a/components/brave_welcome_ui/api/welcome_browser_proxy.ts b/components/brave_welcome_ui/api/welcome_browser_proxy.ts index 1ee424c0f006..d9f86d1f62fe 100644 --- a/components/brave_welcome_ui/api/welcome_browser_proxy.ts +++ b/components/brave_welcome_ui/api/welcome_browser_proxy.ts @@ -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' @@ -31,6 +32,7 @@ export interface WelcomeBrowserProxy { setP3AEnabled: (enabled: boolean) => void setMetricsReportingEnabled: (enabled: boolean) => void openSettingsPage: () => void + getDefaultBrowser: () => Promise } export { DefaultBrowserBrowserProxyImpl, ImportDataBrowserProxyImpl } @@ -52,6 +54,10 @@ export class WelcomeBrowserProxyImpl implements WelcomeBrowserProxy { chrome.send('openSettingsPage') } + getDefaultBrowser (): Promise { + return sendWithPromise('getDefaultBrowser') + } + static getInstance (): WelcomeBrowserProxy { return instance || (instance = new WelcomeBrowserProxyImpl()) } diff --git a/components/brave_welcome_ui/components/select-browser/index.tsx b/components/brave_welcome_ui/components/select-browser/index.tsx index 82bebbe5575b..98542ab0be21 100644 --- a/components/brave_welcome_ui/components/select-browser/index.tsx +++ b/components/brave_welcome_ui/components/select-browser/index.tsx @@ -78,7 +78,6 @@ function BrowserItemButton (props: BrowserItemButtonProps) { function SelectBrowser () { const { browserProfiles, currentSelectedBrowser, setCurrentSelectedBrowser, setViewType, incrementCount, scenes } = React.useContext(DataContext) const browserTypes = getUniqueBrowserTypes(browserProfiles ?? []) - const handleSelectionChange = (browserName: string) => { setCurrentSelectedBrowser?.(browserName) } @@ -107,6 +106,13 @@ function SelectBrowser () { WelcomeBrowserProxyImpl.getInstance().recordP3A({ currentScreen: ViewType.ImportSelectBrowser, isFinished: false, isSkipped: true }) } + React.useEffect(() => { + WelcomeBrowserProxyImpl.getInstance().getDefaultBrowser().then( + (name: string) => { + setCurrentSelectedBrowser?.(name) + }) + }, []) + return (
From f80f5ffd448ba1ab7d0bad3ef8e06884a8e55acf Mon Sep 17 00:00:00 2001 From: Sergey P Date: Thu, 23 Feb 2023 10:44:17 +0530 Subject: [PATCH 2/2] Sync browser type names --- browser/ui/webui/brave_welcome_ui.cc | 9 +-- .../chrome/browser/importer/importer_list.cc | 12 ++-- .../api/welcome_browser_proxy.ts | 2 +- .../components/select-browser/index.tsx | 12 ++-- .../svg/browser-icons/chrome-beta.tsx | 71 +++++++++++++++++++ .../svg/browser-icons/chrome-dev.tsx | 67 +++++++++++++++++ .../brave_welcome_ui/state/component_types.ts | 10 +-- components/brave_welcome_ui/stories/story.tsx | 4 +- 8 files changed, 167 insertions(+), 20 deletions(-) create mode 100644 components/brave_welcome_ui/components/svg/browser-icons/chrome-beta.tsx create mode 100644 components/brave_welcome_ui/components/svg/browser-icons/chrome-dev.tsx diff --git a/browser/ui/webui/brave_welcome_ui.cc b/browser/ui/webui/brave_welcome_ui.cc index 8d5655895291..90a5ec133092 100644 --- a/browser/ui/webui/brave_welcome_ui.cc +++ b/browser/ui/webui/brave_welcome_ui.cc @@ -10,6 +10,7 @@ #include #include "base/feature_list.h" +#include "base/memory/raw_ptr.h" #include "base/metrics/histogram_macros.h" #include "base/task/single_thread_task_runner.h" #include "brave/browser/ui/webui/brave_webui_source.h" @@ -122,7 +123,7 @@ 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 HandleGetDefaultBrowser(const base::Value::List& args); void SetLocalStateBooleanEnabled(const std::string& path, const base::Value::List& args); void OnGetDefaultBrowser(const std::string& callback_id, @@ -136,7 +137,7 @@ class WelcomeDOMHandler : public WebUIMessageHandler { int screen_number_ = 0; bool finished_ = false; bool skipped_ = false; - Profile* profile_ = nullptr; + raw_ptr profile_ = nullptr; base::WeakPtrFactory weak_ptr_factory_{this}; }; @@ -171,7 +172,7 @@ void WelcomeDOMHandler::RegisterMessages() { base::Unretained(this))); web_ui()->RegisterMessageCallback( "getDefaultBrowser", - base::BindRepeating(&WelcomeDOMHandler::GetDefaultBrowser, + base::BindRepeating(&WelcomeDOMHandler::HandleGetDefaultBrowser, base::Unretained(this))); } @@ -181,7 +182,7 @@ void WelcomeDOMHandler::HandleImportNowRequested( chrome::kImportDataSubPage); } -void WelcomeDOMHandler::GetDefaultBrowser(const base::Value::List& args) { +void WelcomeDOMHandler::HandleGetDefaultBrowser(const base::Value::List& args) { CHECK_EQ(1U, args.size()); const auto& callback_id = args[0].GetString(); AllowJavascript(); diff --git a/chromium_src/chrome/browser/importer/importer_list.cc b/chromium_src/chrome/browser/importer/importer_list.cc index 97e2b6b98ec1..59497a835cc0 100644 --- a/chromium_src/chrome/browser/importer/importer_list.cc +++ b/chromium_src/chrome/browser/importer/importer_list.cc @@ -46,6 +46,7 @@ void AddChromeToProfiles(std::vector* profiles, chrome.importer_name = base::UTF8ToUTF16(base::StrCat({brand, " ", *name})); chrome.importer_type = type; chrome.services_supported = items; + chrome.profile = base::UTF8ToUTF16(brand); chrome.source_path = user_data_folder.Append( base::FilePath::StringType(profile->begin(), profile->end())); profiles->push_back(chrome); @@ -59,23 +60,24 @@ void DetectChromeProfiles(std::vector* profiles) { profiles, GetChromeSourceProfiles(GetChromeUserDataFolder().Append( base::FilePath::StringType(FILE_PATH_LITERAL("Local State")))), - GetChromeUserDataFolder(), "Chrome", importer::TYPE_CHROME); + GetChromeUserDataFolder(), "Google Chrome", importer::TYPE_CHROME); AddChromeToProfiles( profiles, GetChromeSourceProfiles(GetChromeBetaUserDataFolder().Append( base::FilePath::StringType(FILE_PATH_LITERAL("Local State")))), - GetChromeBetaUserDataFolder(), "Chrome Beta", importer::TYPE_CHROME); + GetChromeBetaUserDataFolder(), "Google Chrome Beta", + importer::TYPE_CHROME); AddChromeToProfiles( profiles, GetChromeSourceProfiles(GetChromeDevUserDataFolder().Append( base::FilePath::StringType(FILE_PATH_LITERAL("Local State")))), - GetChromeDevUserDataFolder(), "Chrome Dev", importer::TYPE_CHROME); + GetChromeDevUserDataFolder(), "Google Chrome Dev", importer::TYPE_CHROME); #if !BUILDFLAG(IS_LINUX) AddChromeToProfiles( profiles, GetChromeSourceProfiles(GetCanaryUserDataFolder().Append( base::FilePath::StringType(FILE_PATH_LITERAL("Local State")))), - GetCanaryUserDataFolder(), "Chrome Canary", importer::TYPE_CHROME); + GetCanaryUserDataFolder(), "Google Chrome Canary", importer::TYPE_CHROME); #endif AddChromeToProfiles( profiles, @@ -111,7 +113,7 @@ void DetectChromeProfiles(std::vector* profiles) { profiles, GetChromeSourceProfiles(GetWhaleUserDataFolder().Append( base::FilePath::StringType(FILE_PATH_LITERAL("Local State")))), - GetWhaleUserDataFolder(), "Whale", importer::TYPE_WHALE); + GetWhaleUserDataFolder(), "NAVER Whale", importer::TYPE_WHALE); #if BUILDFLAG(IS_LINUX) // Installed via snap Opera has different profile path. diff --git a/components/brave_welcome_ui/api/welcome_browser_proxy.ts b/components/brave_welcome_ui/api/welcome_browser_proxy.ts index d9f86d1f62fe..abc6201c541a 100644 --- a/components/brave_welcome_ui/api/welcome_browser_proxy.ts +++ b/components/brave_welcome_ui/api/welcome_browser_proxy.ts @@ -3,7 +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 { sendWithPromise } from 'chrome://resources/js/cr.js' import { DefaultBrowserBrowserProxyImpl } from './default_browser_browser_proxy' import { ImportDataBrowserProxyImpl, BrowserProfile as _BrowserProfile } from './import_data_browser_proxy' diff --git a/components/brave_welcome_ui/components/select-browser/index.tsx b/components/brave_welcome_ui/components/select-browser/index.tsx index 98542ab0be21..c0877501e69d 100644 --- a/components/brave_welcome_ui/components/select-browser/index.tsx +++ b/components/brave_welcome_ui/components/select-browser/index.tsx @@ -16,6 +16,8 @@ import { getLocale } from '$web-common/locale' import ChromeCanarySVG from '../svg/browser-icons/chrome-canary' import ChromeSVG from '../svg/browser-icons/chrome' +import ChromeBetaSVG from '../svg/browser-icons/chrome-beta' +import ChromeDevSVG from '../svg/browser-icons/chrome-dev' import ChromiumSVG from '../svg/browser-icons/chromium' import EdgeSVG from '../svg/browser-icons/edge' import FirefoxSVG from '../svg/browser-icons/firefox' @@ -33,15 +35,17 @@ interface BrowserItemButtonProps { } const browserIcons = { - 'Chrome Canary': , - 'Chrome': , + 'Google Chrome Canary': , + 'Google Chrome': , + 'Google Chrome Dev': , + 'Google Chrome Beta': , 'Chromium': , 'Microsoft Edge': , - 'Mozilla Firefox': , + 'Firefox': , 'Opera': , 'Safari': , 'Vivaldi': , - 'Whale': , + 'NAVER Whale': , 'Yandex': , 'Microsoft Internet Explorer': } diff --git a/components/brave_welcome_ui/components/svg/browser-icons/chrome-beta.tsx b/components/brave_welcome_ui/components/svg/browser-icons/chrome-beta.tsx new file mode 100644 index 000000000000..076764a9a22a --- /dev/null +++ b/components/brave_welcome_ui/components/svg/browser-icons/chrome-beta.tsx @@ -0,0 +1,71 @@ +// Copyright (c) 2023 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 https://mozilla.org/MPL/2.0/. + +import * as React from 'react' + +const SvgComponent = (props: any) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + + +) + +export default SvgComponent diff --git a/components/brave_welcome_ui/components/svg/browser-icons/chrome-dev.tsx b/components/brave_welcome_ui/components/svg/browser-icons/chrome-dev.tsx new file mode 100644 index 000000000000..9e604e111094 --- /dev/null +++ b/components/brave_welcome_ui/components/svg/browser-icons/chrome-dev.tsx @@ -0,0 +1,67 @@ +// Copyright (c) 2023 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 https://mozilla.org/MPL/2.0/. + +import * as React from 'react' + +const SvgComponent = (props: any) => ( + + + + + + + + + + + + + + + + + + + + + + + + + + +) + +export default SvgComponent diff --git a/components/brave_welcome_ui/state/component_types.ts b/components/brave_welcome_ui/state/component_types.ts index ea4440dcfa20..d3f05e3e0a96 100644 --- a/components/brave_welcome_ui/state/component_types.ts +++ b/components/brave_welcome_ui/state/component_types.ts @@ -17,16 +17,18 @@ export enum ViewType { } export enum BrowserType { - Chrome_Canary = 'Chrome Canary', - Chrome = 'Chrome', + Chrome_Canary = 'Google Chrome Canary', + Chrome_Beta = 'Google Chrome Beta', + Chrome_Dev = 'Google Chrome Dev', + Chrome = 'Google Chrome', Chromium = 'Chromium', Safari = 'Safari', - Mozilla_Firefox = 'Mozilla Firefox', + Mozilla_Firefox = 'Firefox', Microsoft_Edge = 'Microsoft Edge', Vivaldi = 'Vivaldi', Opera = 'Opera', Yandex = 'Yandex', - Whale = 'Whale', + Whale = 'NAVER Whale', Microsoft_IE = 'Microsoft Internet Explorer' } diff --git a/components/brave_welcome_ui/stories/story.tsx b/components/brave_welcome_ui/stories/story.tsx index 424e3440069f..ad099853b277 100644 --- a/components/brave_welcome_ui/stories/story.tsx +++ b/components/brave_welcome_ui/stories/story.tsx @@ -48,7 +48,7 @@ const payload = [ 'payments': false, 'profileName': '', 'search': false, - 'browserType': 'Chrome' + 'browserType': 'Google Chrome' }, { 'autofillFormData': false, @@ -61,7 +61,7 @@ const payload = [ 'payments': false, 'profileName': '', 'search': false, - 'browserType': 'Chrome' + 'browserType': 'Google Chrome' }, { 'autofillFormData': false,