[Cardano] dApp permission settings (#29859)
Resolves https://github.com/brave/brave-browser/issues/46125
This commit is contained in:
@@ -788,25 +788,35 @@
|
||||
Block sites from autoplaying videos
|
||||
</message>
|
||||
<!-- Ethereum -->
|
||||
<message name="IDS_SETTINGS_SITE_SETTINGS_ETHEREUM" desc="Label for ethereum site settings.">
|
||||
<message name="IDS_SETTINGS_SITE_SETTINGS_ETHEREUM" desc="Title for ethereum site settings.">
|
||||
Ethereum
|
||||
</message>
|
||||
<message name="IDS_SETTINGS_SITE_SETTINGS_ETHEREUM_ASK" desc="Label for ethereum site settings.">
|
||||
<message name="IDS_SETTINGS_SITE_SETTINGS_ETHEREUM_ASK" desc="Label for ethereum site settings as group.">
|
||||
Ask when a site wants to access the Ethereum provider API
|
||||
</message>
|
||||
<message name="IDS_SETTINGS_SITE_SETTINGS_ETHEREUM_BLOCK" desc="Label for ethereum site settings.">
|
||||
<message name="IDS_SETTINGS_SITE_SETTINGS_ETHEREUM_BLOCK" desc="Label for ethereum site settings block group.">
|
||||
Block sites from accessing the Ethereum provider API
|
||||
</message>
|
||||
<!-- Solana -->
|
||||
<message name="IDS_SETTINGS_SITE_SETTINGS_SOLANA" desc="Label for solana site settings.">
|
||||
<message name="IDS_SETTINGS_SITE_SETTINGS_SOLANA" desc="Title for solana site settings.">
|
||||
Solana
|
||||
</message>
|
||||
<message name="IDS_SETTINGS_SITE_SETTINGS_SOLANA_ASK" desc="Label for solana site settings.">
|
||||
<message name="IDS_SETTINGS_SITE_SETTINGS_SOLANA_ASK" desc="Label for solana site settings ask group.">
|
||||
Ask when a site wants to access the Solana provider API
|
||||
</message>
|
||||
<message name="IDS_SETTINGS_SITE_SETTINGS_SOLANA_BLOCK" desc="Label for solana site settings.">
|
||||
<message name="IDS_SETTINGS_SITE_SETTINGS_SOLANA_BLOCK" desc="Label for solana site settings block group.">
|
||||
Block sites from accessing the Solana provider API
|
||||
</message>
|
||||
<!-- Cardano -->
|
||||
<message name="IDS_SETTINGS_SITE_SETTINGS_CARDANO" desc="Title for cardano site settings.">
|
||||
Cardano
|
||||
</message>
|
||||
<message name="IDS_SETTINGS_SITE_SETTINGS_CARDANO_ASK" desc="Label for cardano site settings ask group.">
|
||||
Ask when a site wants to access the Cardano provider API
|
||||
</message>
|
||||
<message name="IDS_SETTINGS_SITE_SETTINGS_CARDANO_BLOCK" desc="Label for cardano site settings block group.">
|
||||
Block sites from accessing the Cardano provider API
|
||||
</message>
|
||||
<!-- Google Sign-In setting -->
|
||||
<message name="IDS_SETTINGS_SITE_SETTINGS_GOOGLE_SIGN_IN" desc="Label for G sign-in site settings.">
|
||||
Google Sign-In
|
||||
|
||||
@@ -162,6 +162,36 @@ function InsertSolanaSubpage (pages: Element)
|
||||
`)
|
||||
}
|
||||
|
||||
function InsertCardanoSubpage (pages: Element)
|
||||
{
|
||||
pages.appendChild(
|
||||
html`
|
||||
<template is="dom-if" route-path="/content/cardano" no-search>
|
||||
<settings-subpage
|
||||
associated-control="[[$$('#cardano')]]"
|
||||
page-title="${loadTimeData.getString('siteSettingsCardano')}">
|
||||
<settings-category-default-radio-group
|
||||
id="cardanoDefault"
|
||||
category="[[contentSettingsTypesEnum_.CARDANO]]"
|
||||
block-option-label=
|
||||
"${loadTimeData.getString('siteSettingsCardanoBlock')}"
|
||||
allow-option-label=
|
||||
"${loadTimeData.getString('siteSettingsCardanoAsk')}"
|
||||
allow-option-icon="cardano-on"
|
||||
block-option-icon="cardano-off">
|
||||
</settings-category-default-radio-group>
|
||||
<category-setting-exceptions
|
||||
id="cardanoExceptions"
|
||||
category="[[contentSettingsTypesEnum_.CARDANO]]"
|
||||
block-header="${loadTimeData.getString('siteSettingsBlock')}"
|
||||
allow-header="${loadTimeData.getString('siteSettingsAllow')}"
|
||||
read-only-list>
|
||||
</category-setting-exceptions>
|
||||
</settings-subpage>
|
||||
</template>
|
||||
`)
|
||||
}
|
||||
|
||||
function InsertShieldsSubpage (pages: Element)
|
||||
{
|
||||
pages.appendChild(
|
||||
@@ -246,9 +276,14 @@ RegisterPolymerTemplateModifications({
|
||||
InsertAutoplaySubpage(pages)
|
||||
const isNativeBraveWalletEnabled =
|
||||
loadTimeData.getBoolean('isNativeBraveWalletFeatureEnabled')
|
||||
const isCardanoDappSupportFeatureEnabled =
|
||||
loadTimeData.getBoolean('isCardanoDappSupportFeatureEnabled')
|
||||
if (isNativeBraveWalletEnabled) {
|
||||
InsertEthereumSubpage(pages)
|
||||
InsertSolanaSubpage(pages)
|
||||
if (isCardanoDappSupportFeatureEnabled) {
|
||||
InsertCardanoSubpage(pages)
|
||||
}
|
||||
}
|
||||
InsertShieldsSubpage(pages)
|
||||
const permissionsLinkRow =
|
||||
|
||||
@@ -119,6 +119,8 @@ RegisterPolymerTemplateModifications({
|
||||
}
|
||||
const isNativeBraveWalletEnabled =
|
||||
loadTimeData.getBoolean('isNativeBraveWalletFeatureEnabled')
|
||||
const isCardanoDappSupportFeatureEnabled =
|
||||
loadTimeData.getBoolean('isCardanoDappSupportFeatureEnabled')
|
||||
if (isNativeBraveWalletEnabled) {
|
||||
insertBefore(firstPermissionItem, html`<site-details-permission
|
||||
category="[[contentSettingsTypesEnum_.ETHEREUM]]"
|
||||
@@ -145,6 +147,22 @@ RegisterPolymerTemplateModifications({
|
||||
solanaSettings.setAttribute(
|
||||
'label', loadTimeData.getString('siteSettingsSolana'))
|
||||
}
|
||||
if (isCardanoDappSupportFeatureEnabled) {
|
||||
curChild++
|
||||
insertBefore(firstPermissionItem, html`<site-details-permission
|
||||
category="[[contentSettingsTypesEnum_.CARDANO]]"
|
||||
icon="cardano-on">
|
||||
</site-details-permission>`)
|
||||
const cardanoSettings = templateContent.querySelector(
|
||||
`div.list-frame > site-details-permission:nth-child(${curChild})`)
|
||||
if (!cardanoSettings) {
|
||||
console.error('[Settings] Couldn\'t find Cardano settings')
|
||||
} else {
|
||||
cardanoSettings.setAttribute(
|
||||
'label', loadTimeData.getString('siteSettingsCardano'))
|
||||
}
|
||||
}
|
||||
|
||||
const adPersonalization =
|
||||
templateContent.querySelector('#adPersonalization')
|
||||
if (!adPersonalization) {
|
||||
|
||||
@@ -155,6 +155,8 @@ RegisterPolymerComponentReplacement(
|
||||
}
|
||||
const isNativeBraveWalletEnabled =
|
||||
loadTimeData.getBoolean('isNativeBraveWalletFeatureEnabled')
|
||||
const isCardanoDappSupportFeatureEnabled =
|
||||
loadTimeData.getBoolean('isCardanoDappSupportFeatureEnabled')
|
||||
if (isNativeBraveWalletEnabled) {
|
||||
currentIndex++
|
||||
const ethereumItem = {
|
||||
@@ -176,6 +178,18 @@ RegisterPolymerComponentReplacement(
|
||||
disabledLabel: 'siteSettingsSolanaBlock'
|
||||
}
|
||||
lists.permissionsAdvanced.splice(currentIndex, 0, solanaItem)
|
||||
if (isCardanoDappSupportFeatureEnabled) {
|
||||
currentIndex++
|
||||
const cardanoItem = {
|
||||
route: routes.SITE_SETTINGS_CARDANO,
|
||||
id: ContentSettingsTypes.CARDANO,
|
||||
label: 'siteSettingsCardano',
|
||||
icon: 'cardano-on',
|
||||
enabledLabel: 'siteSettingsCardanoAsk',
|
||||
disabledLabel: 'siteSettingsCardanoBlock'
|
||||
}
|
||||
lists.permissionsAdvanced.splice(currentIndex, 0, cardanoItem)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,9 +93,14 @@ export default function addBraveRoutes(r: Partial<SettingsRoutes>) {
|
||||
}
|
||||
const isNativeBraveWalletFeatureEnabled =
|
||||
loadTimeData.getBoolean('isNativeBraveWalletFeatureEnabled')
|
||||
const isCardanoDappSupportFeatureEnabled =
|
||||
loadTimeData.getBoolean('isCardanoDappSupportFeatureEnabled')
|
||||
if (isNativeBraveWalletFeatureEnabled) {
|
||||
r.SITE_SETTINGS_ETHEREUM = r.SITE_SETTINGS.createChild('ethereum')
|
||||
r.SITE_SETTINGS_SOLANA = r.SITE_SETTINGS.createChild('solana')
|
||||
if (isCardanoDappSupportFeatureEnabled) {
|
||||
r.SITE_SETTINGS_CARDANO = r.SITE_SETTINGS.createChild('cardano')
|
||||
}
|
||||
}
|
||||
r.SITE_SETTINGS_SHIELDS_STATUS = r.SITE_SETTINGS.createChild('braveShields')
|
||||
if (r.SITE_SETTINGS_ADS) {
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include "brave/components/ai_chat/core/common/features.h"
|
||||
#include "brave/components/brave_vpn/common/buildflags/buildflags.h"
|
||||
#include "brave/components/brave_vpn/common/features.h"
|
||||
#include "brave/components/brave_wallet/common/common_utils.h"
|
||||
#include "brave/components/brave_wallet/common/features.h"
|
||||
#include "brave/components/commander/common/features.h"
|
||||
#include "brave/components/commands/common/commands.mojom.h"
|
||||
@@ -162,6 +163,8 @@ void BraveSettingsUI::AddResources(content::WebUIDataSource* html_source,
|
||||
"isNativeBraveWalletFeatureEnabled",
|
||||
base::FeatureList::IsEnabled(
|
||||
brave_wallet::features::kNativeBraveWalletFeature));
|
||||
html_source->AddBoolean("isCardanoDappSupportFeatureEnabled",
|
||||
brave_wallet::IsCardanoDAppSupportEnabled());
|
||||
html_source->AddBoolean("isBraveWalletAllowed",
|
||||
brave_wallet::IsAllowedForContext(profile));
|
||||
html_source->AddBoolean("isForgetFirstPartyStorageFeatureEnabled",
|
||||
|
||||
@@ -118,6 +118,9 @@ void BraveAddCommonStrings(content::WebUIDataSource* html_source,
|
||||
{"siteSettingsCategorySolana", IDS_SETTINGS_SITE_SETTINGS_SOLANA},
|
||||
{"siteSettingsSolanaAsk", IDS_SETTINGS_SITE_SETTINGS_SOLANA_ASK},
|
||||
{"siteSettingsSolanaBlock", IDS_SETTINGS_SITE_SETTINGS_SOLANA_BLOCK},
|
||||
{"siteSettingsCardano", IDS_SETTINGS_SITE_SETTINGS_CARDANO},
|
||||
{"siteSettingsCardanoAsk", IDS_SETTINGS_SITE_SETTINGS_CARDANO_ASK},
|
||||
{"siteSettingsCardanoBlock", IDS_SETTINGS_SITE_SETTINGS_CARDANO_BLOCK},
|
||||
|
||||
{"siteSettingsGoogleSignIn", IDS_SETTINGS_SITE_SETTINGS_GOOGLE_SIGN_IN},
|
||||
{"siteSettingsCategoryGoogleSignIn",
|
||||
|
||||
+14
-2
@@ -85,8 +85,20 @@ export const WalletSettingsMenu = (props: Props) => {
|
||||
return
|
||||
}
|
||||
|
||||
const route =
|
||||
selectedNetwork.coin === BraveWallet.CoinType.ETH ? 'ethereum' : 'solana'
|
||||
let route: string
|
||||
switch (selectedNetwork.coin) {
|
||||
case BraveWallet.CoinType.ETH:
|
||||
route = 'ethereum'
|
||||
break
|
||||
case BraveWallet.CoinType.SOL:
|
||||
route = 'solana'
|
||||
break
|
||||
case BraveWallet.CoinType.ADA:
|
||||
route = 'cardano'
|
||||
break
|
||||
default:
|
||||
throw new Error('Coin not supported')
|
||||
}
|
||||
|
||||
chrome.tabs.create({ url: `brave://settings/content/${route}` }, () => {
|
||||
if (chrome.runtime.lastError) {
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
diff --git a/chrome/browser/resources/settings/router.ts b/chrome/browser/resources/settings/router.ts
|
||||
index 25270f0b11a5b29207154fba580fe98978f5035d..1e448ed15c9e4aa2b21242a9020fc93e5c2de79e 100644
|
||||
index 25270f0b11a5b29207154fba580fe98978f5035d..48de0ed914d8abad79ea2e2cdb61c1c4fbd7fb8f 100644
|
||||
--- a/chrome/browser/resources/settings/router.ts
|
||||
+++ b/chrome/browser/resources/settings/router.ts
|
||||
@@ -121,6 +121,7 @@ export interface SettingsRoutes {
|
||||
IMPORT_DATA: Route;
|
||||
SIGN_OUT: Route;
|
||||
// </if>
|
||||
+ GET_STARTED: Route; SHIELDS: Route; SOCIAL_BLOCKING: Route; EXTENSIONS: Route; EXTENSIONS_V2: Route; BRAVE_SYNC: Route; BRAVE_SYNC_SETUP: Route; BRAVE_WALLET: Route; BRAVE_WEB3: Route; BRAVE_NEW_TAB: Route; THEMES: Route; SITE_SETTINGS_AUTOPLAY: Route; SITE_SETTINGS_GOOGLE_SIGN_IN: Route; SITE_SETTINGS_LOCALHOST_ACCESS: Route; SITE_SETTINGS_BRAVE_OPEN_AI_CHAT: Route; SITE_SETTINGS_ETHEREUM: Route; SITE_SETTINGS_SOLANA: Route; SITE_SETTINGS_SHIELDS_STATUS: Route; SHIELDS_ADBLOCK: Route; SHORTCUTS: Route; BRAVE_WALLET_NETWORKS: Route; BRAVE_LEO_ASSISTANT: Route; BRAVE_CONTENT: Route; BRAVE_SURVEY_PANELIST: Route; DEFAULT_SEARCH: Route; PRIVATE_SEARCH: Route;
|
||||
+ GET_STARTED: Route; SHIELDS: Route; SOCIAL_BLOCKING: Route; EXTENSIONS: Route; EXTENSIONS_V2: Route; BRAVE_SYNC: Route; BRAVE_SYNC_SETUP: Route; BRAVE_WALLET: Route; BRAVE_WEB3: Route; BRAVE_NEW_TAB: Route; THEMES: Route; SITE_SETTINGS_AUTOPLAY: Route; SITE_SETTINGS_GOOGLE_SIGN_IN: Route; SITE_SETTINGS_LOCALHOST_ACCESS: Route; SITE_SETTINGS_BRAVE_OPEN_AI_CHAT: Route; SITE_SETTINGS_ETHEREUM: Route; SITE_SETTINGS_SOLANA: Route; SITE_SETTINGS_CARDANO: Route; SITE_SETTINGS_SHIELDS_STATUS: Route; SHIELDS_ADBLOCK: Route; SHORTCUTS: Route; BRAVE_WALLET_NETWORKS: Route; BRAVE_LEO_ASSISTANT: Route; BRAVE_CONTENT: Route; BRAVE_SURVEY_PANELIST: Route; DEFAULT_SEARCH: Route; PRIVATE_SEARCH: Route;
|
||||
}
|
||||
|
||||
/** Class for navigable routes. */
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
diff --git a/chrome/browser/resources/settings/site_settings/constants.ts b/chrome/browser/resources/settings/site_settings/constants.ts
|
||||
index edae5264609c46bfc498d45e569f9b441f5d13b6..fac1a362eb5b433731f6aca4e7adc8b15994957c 100644
|
||||
index edae5264609c46bfc498d45e569f9b441f5d13b6..cfb0ec586a814bb1caa268d838e9b6f1caa7eb58 100644
|
||||
--- a/chrome/browser/resources/settings/site_settings/constants.ts
|
||||
+++ b/chrome/browser/resources/settings/site_settings/constants.ts
|
||||
@@ -68,6 +68,7 @@ export enum ContentSettingsTypes {
|
||||
PDF_DOCUMENTS = 'pdfDocuments',
|
||||
SITE_DATA = 'site-data',
|
||||
OFFER_WRITING_HELP = 'offer-writing-help',
|
||||
+ AUTOPLAY = 'autoplay', ETHEREUM = 'ethereum', SOLANA = 'solana', BRAVE_SHIELDS = 'braveShields', GOOGLE_SIGN_IN = 'googleSignIn', LOCALHOST_ACCESS = 'localhostAccess', BRAVE_OPEN_AI_CHAT = 'braveOpenAIChat'
|
||||
+ AUTOPLAY = 'autoplay', ETHEREUM = 'ethereum', SOLANA = 'solana', CARDANO = 'cardano', BRAVE_SHIELDS = 'braveShields', GOOGLE_SIGN_IN = 'googleSignIn', LOCALHOST_ACCESS = 'localhostAccess', BRAVE_OPEN_AI_CHAT = 'braveOpenAIChat'
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+2
-2
@@ -1,12 +1,12 @@
|
||||
diff --git a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts
|
||||
index 7714bc08dfa780dc3137b9c13596c07ce032fa06..38b4a2e47f6a5164dfe352bd6c6e1be60add3ce6 100644
|
||||
index 7714bc08dfa780dc3137b9c13596c07ce032fa06..05eed61464ddf53d98117b174e4b4256e3ecb056 100644
|
||||
--- a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts
|
||||
+++ b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts
|
||||
@@ -174,6 +174,7 @@ export class SettingsCategoryDefaultRadioGroupElement extends
|
||||
case ContentSettingsTypes.WEB_PRINTING:
|
||||
// "Ask" vs "Blocked".
|
||||
return ContentSetting.ASK;
|
||||
+ case ContentSettingsTypes.ETHEREUM: case ContentSettingsTypes.SOLANA: case ContentSettingsTypes.GOOGLE_SIGN_IN: case ContentSettingsTypes.LOCALHOST_ACCESS: case ContentSettingsTypes.BRAVE_OPEN_AI_CHAT: return ContentSetting.ASK; case ContentSettingsTypes.AUTOPLAY: return ContentSetting.ALLOW;
|
||||
+ case ContentSettingsTypes.ETHEREUM: case ContentSettingsTypes.SOLANA: case ContentSettingsTypes.CARDANO: case ContentSettingsTypes.GOOGLE_SIGN_IN: case ContentSettingsTypes.LOCALHOST_ACCESS: case ContentSettingsTypes.BRAVE_OPEN_AI_CHAT: return ContentSetting.ASK; case ContentSettingsTypes.AUTOPLAY: return ContentSetting.ALLOW;
|
||||
default:
|
||||
assertNotReached('Invalid category: ' + this.category);
|
||||
}
|
||||
|
||||
@@ -199,6 +199,8 @@ leo_icons = [
|
||||
"carat-left.svg",
|
||||
"carat-right.svg",
|
||||
"carat-up.svg",
|
||||
"cardano-off.svg",
|
||||
"cardano-on.svg",
|
||||
"check-circle-filled.svg",
|
||||
"check-circle-outline.svg",
|
||||
"check-normal.svg",
|
||||
|
||||
Reference in New Issue
Block a user