From ed1a1c4672a2b98783e0cf55494042f4a9fb38d3 Mon Sep 17 00:00:00 2001 From: Cezar Augusto Date: Tue, 29 Oct 2019 18:29:39 -0300 Subject: [PATCH 01/21] Add basic support for Wayback Machine extension This change adds the minimal files for built-in support address https://github.com/brave/brave-browser/issues/6144 --- .gitignore | 1 + brave_paks.gni | 11 ++++++ browser/extensions/BUILD.gn | 8 ++++ ...ve_component_extension_resource_manager.cc | 10 +++++ browser/extensions/brave_component_loader.cc | 8 ++++ browser/resources/resource_ids | 5 +++ .../whitelist.cc | 5 ++- common/brave_switches.cc | 3 ++ common/brave_switches.h | 2 + common/extensions/api/_api_features.json | 9 +++++ common/extensions/extension_constants.cc | 1 + common/extensions/extension_constants.h | 1 + components/brave_wayback_machine/BUILD.gn | 39 +++++++++++++++++++ .../browser/buildflags/buildflags.gni | 6 +++ .../brave_wayback_machine/extension/BUILD.gn | 16 ++++++++ .../extension/background/actions/index.ts | 28 +++++++++++++ .../extension/background/api/index.ts | 7 ++++ .../extension/background/events/index.ts | 24 ++++++++++++ .../extension/background/index.ts | 9 +++++ .../extension/manifest.json | 20 ++++++++++ .../extension/utils/index.ts | 13 +++++++ .../brave_wayback_machine/resources.grd | 16 ++++++++ 22 files changed, 241 insertions(+), 1 deletion(-) create mode 100644 components/brave_wayback_machine/BUILD.gn create mode 100644 components/brave_wayback_machine/browser/buildflags/buildflags.gni create mode 100644 components/brave_wayback_machine/extension/BUILD.gn create mode 100644 components/brave_wayback_machine/extension/background/actions/index.ts create mode 100644 components/brave_wayback_machine/extension/background/api/index.ts create mode 100644 components/brave_wayback_machine/extension/background/events/index.ts create mode 100644 components/brave_wayback_machine/extension/background/index.ts create mode 100644 components/brave_wayback_machine/extension/manifest.json create mode 100644 components/brave_wayback_machine/extension/utils/index.ts create mode 100644 components/brave_wayback_machine/resources.grd diff --git a/.gitignore b/.gitignore index 542bdb1a08da..17b8e1818057 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ /components/brave_rewards/resources/extension/brave_rewards/out/ /components/brave_sync/extension/brave-sync/ /components/brave_sync/extension/brave-crypto/ +/components/brave_wayback_machine/extension/out/ /dist/ /out/ /vendor/* diff --git a/brave_paks.gni b/brave_paks.gni index 6d553f7d6a83..6dfa121f3050 100644 --- a/brave_paks.gni +++ b/brave_paks.gni @@ -6,6 +6,7 @@ import("//brave/components/brave_ads/browser/buildflags/buildflags.gni") import("//brave/components/brave_rewards/browser/buildflags/buildflags.gni") import("//brave/components/brave_sync/buildflags/buildflags.gni") import("//brave/components/brave_webtorrent/browser/buildflags/buildflags.gni") +import("//brave/components/brave_wayback_machine/browser/buildflags/buildflags.gni") import("//build/config/locales.gni") import("//chrome/common/features.gni") import("//extensions/buildflags/buildflags.gni") @@ -124,6 +125,16 @@ template("brave_extra_paks") { ] } + if (enable_brave_wayback_machine) { + sources += [ + "$root_gen_dir/brave/components/brave_wayback_machine/brave_wayback_machine_resources.pak", + ] + + deps += [ + "//brave/components/brave_wayback_machine:resources", + ] + } + if (enable_extensions) { sources += [ "$root_gen_dir/brave/browser/resources/extensions/brave_extensions_resources.pak", diff --git a/browser/extensions/BUILD.gn b/browser/extensions/BUILD.gn index a82b196fc2fd..fbe3e8eef5e6 100644 --- a/browser/extensions/BUILD.gn +++ b/browser/extensions/BUILD.gn @@ -3,6 +3,7 @@ import("//brave/components/brave_rewards/browser/buildflags/buildflags.gni") import("//brave/components/brave_sync/buildflags/buildflags.gni") import("//brave/components/brave_wallet/browser/buildflags/buildflags.gni") import("//brave/components/brave_webtorrent/browser/buildflags/buildflags.gni") +import("//brave/components/brave_wayback_machine/browser/buildflags/buildflags.gni") import("//build/config/features.gni") import("//components/gcm_driver/config.gni") @@ -120,6 +121,13 @@ source_set("extensions") { "//brave/browser/tor:buildflags", ] } + + if (enable_brave_wayback_machine) { + deps += [ + "//brave/components/brave_wayback_machine:generated_resources", + "//brave/components/brave_wayback_machine:static_resources", + ] + } } config("infura_config") { diff --git a/browser/extensions/brave_component_extension_resource_manager.cc b/browser/extensions/brave_component_extension_resource_manager.cc index a034b38ca85d..c15e6cfd09f8 100644 --- a/browser/extensions/brave_component_extension_resource_manager.cc +++ b/browser/extensions/brave_component_extension_resource_manager.cc @@ -11,6 +11,8 @@ #include "brave/components/brave_sync/buildflags/buildflags.h" #include "brave/components/brave_webtorrent/grit/brave_webtorrent_generated_map.h" #include "brave/components/brave_webtorrent/grit/brave_webtorrent_resources_map.h" +#include "brave/components/brave_wayback_machine/grit/brave_wayback_machine_generated_map.h" +#include "brave/components/brave_wayback_machine/grit/brave_wayback_machine_resources_map.h" #if BUILDFLAG(BRAVE_REWARDS_ENABLED) #include "brave/components/brave_rewards/resources/extension/grit/brave_rewards_extension_resources_map.h" @@ -59,6 +61,14 @@ BraveComponentExtensionResourceManager() { AddComponentResourceEntries( kBraveWebtorrentGenerated, kBraveWebtorrentGeneratedSize); + + AddComponentResourceEntries( + kBraveWaybackMachineResources, + kBraveWaybackMachineResourcesSize); + + AddComponentResourceEntries( + kBraveWaybackMachineGenerated, + kBraveWaybackMachineGeneratedSize); } BraveComponentExtensionResourceManager:: diff --git a/browser/extensions/brave_component_loader.cc b/browser/extensions/brave_component_loader.cc index 8a1155631874..9de952088927 100644 --- a/browser/extensions/brave_component_loader.cc +++ b/browser/extensions/brave_component_loader.cc @@ -19,6 +19,7 @@ #include "brave/components/brave_rewards/common/pref_names.h" #include "brave/components/brave_rewards/resources/extension/grit/brave_rewards_extension_resources.h" #include "brave/components/brave_webtorrent/grit/brave_webtorrent_resources.h" +#include "brave/components/brave_wayback_machine/grit/brave_wayback_machine_resources.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ui/webui/components_ui.h" @@ -104,6 +105,13 @@ void BraveComponentLoader::AddDefaultComponentExtensions( HandleRewardsEnabledStatus(); #endif + if (!command_line.HasSwitch(switches::kDisableBraveWaybackMachineExtension)) { + base::FilePath brave_wayback_machine_path(FILE_PATH_LITERAL("")); + brave_wayback_machine_path = + brave_wayback_machine_path.Append(FILE_PATH_LITERAL("brave_wayback_machine")); + Add(IDR_BRAVE_WAYBACK_MACHINE, brave_wayback_machine_path); + } + #if BUILDFLAG(BRAVE_WALLET_ENABLED) // If brave://wallet has been loaded at least once, then load it again. if (ExtensionPrefs::Get(profile_)-> diff --git a/browser/resources/resource_ids b/browser/resources/resource_ids index f7205b7a558f..53ddfd8714c8 100644 --- a/browser/resources/resource_ids +++ b/browser/resources/resource_ids @@ -96,4 +96,9 @@ "<(ROOT_GEN_DIR)/brave/web-ui-webcompat_reporter/webcompat_reporter.grd": { "includes": [45000], }, + # brave wayback machine 45000 + # This file is generated during the build. + "<(ROOT_GEN_DIR)/brave/web-ui-brave_wayback_machine/brave_wayback_machine.grd": { + "includes": [45020], + }, } diff --git a/chromium_src/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc b/chromium_src/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc index cb73fc8268f5..4440a13e6298 100644 --- a/chromium_src/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc +++ b/chromium_src/chrome/browser/extensions/component_extensions_whitelist/whitelist.cc @@ -14,6 +14,7 @@ #include "brave/components/brave_rewards/resources/extension/grit/brave_rewards_extension_resources.h" #include "brave/components/brave_sync/grit/brave_sync_resources.h" #include "brave/components/brave_webtorrent/grit/brave_webtorrent_resources.h" +#include "brave/components/brave_wayback_machine/grit/brave_wayback_machine_resources.h" namespace extensions { @@ -23,7 +24,8 @@ namespace extensions { brave_rewards_extension_id, brave_sync_extension_id, ethereum_remote_client_extension_id, - brave_webtorrent_extension_id + brave_webtorrent_extension_id, + brave_wayback_machine_extension_id, }; for (size_t i = 0; i < base::size(kAllowed); ++i) { @@ -41,6 +43,7 @@ namespace extensions { case IDR_BRAVE_REWARDS: case IDR_BRAVE_SYNC_EXTENSION: case IDR_BRAVE_WEBTORRENT: + case IDR_BRAVE_WAYBACK_MACHINE: return true; } diff --git a/common/brave_switches.cc b/common/brave_switches.cc index 324f6ee130ab..7bf78ec010d9 100644 --- a/common/brave_switches.cc +++ b/common/brave_switches.cc @@ -27,6 +27,9 @@ const char kDisableTorClientUpdaterExtension[] = // Allows disabling the WebTorrent extension. const char kDisableWebTorrentExtension[] = "disable-webtorrent-extension"; +// Allows disabling the Wayback Machine extension. +const char kDisableBraveWaybackMachineExtension[] = "disable-brave-wayback-machine-extension"; + // Specifies overriding the built-in theme setting. // Valid values are: "dark" | "light". const char kUiMode[] = "ui-mode"; diff --git a/common/brave_switches.h b/common/brave_switches.h index fdc2ccf27c30..c100e1e8c844 100644 --- a/common/brave_switches.h +++ b/common/brave_switches.h @@ -20,6 +20,8 @@ extern const char kDisableTorClientUpdaterExtension[]; extern const char kDisableWebTorrentExtension[]; +extern const char kDisableBraveWaybackMachineExtension[]; + extern const char kRewards[]; extern const char kUiMode[]; diff --git a/common/extensions/api/_api_features.json b/common/extensions/api/_api_features.json index 5d4b0c0ebced..e337fbf47396 100644 --- a/common/extensions/api/_api_features.json +++ b/common/extensions/api/_api_features.json @@ -4,6 +4,7 @@ // Command to get whitelist ID: // Brave Shields A321D47A2B4CA86898167A55CA8B2E02385EA7CD: echo -n mnojpmjdmbbfmejpflffifhffcmidifd | openssl sha1 | tr '[:lower:]' '[:upper:]' // WebTorrent 3D9518A72EB02667A773B69DBA9E72E0F4A37423: echo -n lgjmpdmojkpocjcopdikifhejkkjglho | openssl sha1 | tr '[:lower:]' '[:upper:]' +// Wayback Machine 97B6E7CA6FD22B592CC9DA8225F03985638C4C40: echo -n kpgdnghmcgkbndckiehmcfmgpnfpacjh | openssl sha1 | tr '[:lower:]' '[:upper:]' // sync api ACA6385EDA662A28A9B48E83A69CA85CB65DA263: echo -n nomlkjnggnifocmealianaaiobmebgil | openssl sha1 | tr '[:lower:]' '[:upper:]' // ipfs-companion 780BF954C0F7C586EA9662D4F967771F49CC2114: echo -n nibjojkomfdiaoajekhjakgkdhaomnch | openssl sha1 | tr '[:lower:]' '[:upper:]' // ipfs-companion-beta FF32507DC3DB5DFFD1D6733187C84D4B74713D63: echo -n hjoieblefckbooibpepigmacodalfndh | openssl sha1 | tr '[:lower:]' '[:upper:]' @@ -25,6 +26,14 @@ "ACA6385EDA662A28A9B48E83A69CA85CB65DA263" ] }, + "braveWaybackMachine": { + "channel": "stable", + "dependencies": [], + "contexts": ["blessed_extension"], + "whitelist": [ + "97B6E7CA6FD22B592CC9DA8225F03985638C4C40" + ] + }, "topSites": [{ "dependencies": ["permission:topSites"], "contexts": ["blessed_extension"] diff --git a/common/extensions/extension_constants.cc b/common/extensions/extension_constants.cc index e236e087371f..b9dda92efbf3 100644 --- a/common/extensions/extension_constants.cc +++ b/common/extensions/extension_constants.cc @@ -12,6 +12,7 @@ const char hangouts_extension_id[] = "nkeimhogjdpnpccoofpliimaahmaaome"; const char widevine_extension_id[] = "oimompecagnajdejgnnjijobebaeigek"; const char brave_sync_extension_id[] = "nomlkjnggnifocmealianaaiobmebgil"; const char crl_set_extension_id[] = "hfnkpimlhhgieaddgfemjhofmfblmnib"; +const char brave_wayback_machine_extension_id[] = "kpgdnghmcgkbndckiehmcfmgpnfpacjh"; const char ethereum_remote_client_extension_id[] = "odbfpeeihdkbihmopkbjmoonfanlbfcl"; diff --git a/common/extensions/extension_constants.h b/common/extensions/extension_constants.h index c27d2688bb54..27558e7a2d95 100644 --- a/common/extensions/extension_constants.h +++ b/common/extensions/extension_constants.h @@ -9,6 +9,7 @@ extern const char brave_extension_id[]; extern const char brave_rewards_extension_id[]; extern const char brave_webtorrent_extension_id[]; +extern const char brave_wayback_machine_extension_id[]; extern const char hangouts_extension_id[]; extern const char widevine_extension_id[]; extern const char brave_sync_extension_id[]; diff --git a/components/brave_wayback_machine/BUILD.gn b/components/brave_wayback_machine/BUILD.gn new file mode 100644 index 000000000000..5ba89287f6a0 --- /dev/null +++ b/components/brave_wayback_machine/BUILD.gn @@ -0,0 +1,39 @@ +import("//brave/components/common/typescript.gni") +import("//tools/grit/grit_rule.gni") +import("//tools/grit/repack.gni") + +grit("static_resources") { + source = "resources.grd" + outputs = [ + "grit/brave_wayback_machine_resources_map.cc", + "grit/brave_wayback_machine_resources_map.h", + "grit/brave_wayback_machine_resources.h", + "brave_wayback_machine_static.pak", + ] + + deps = [ ] + + resource_ids = "" +} + +pack_web_resources("generated_resources") { + resource_name = "brave_wayback_machine" + output_dir = "$root_gen_dir/brave/components/brave_wayback_machine" + # Need wepack and GRD generation first + deps = [ + "extension:generate_brave_wayback_machine" + ] +} + +repack("resources") { + deps = [ + ":static_resources", + ":generated_resources", + ] + sources = [ + "$root_gen_dir/brave/components/brave_wayback_machine/brave_wayback_machine_static.pak", + "$root_gen_dir/brave/components/brave_wayback_machine/brave_wayback_machine_generated.pak", + ] + # This output repacked by brave_paks.gni + output = "$root_gen_dir/brave/components/brave_wayback_machine/brave_wayback_machine_resources.pak" +} diff --git a/components/brave_wayback_machine/browser/buildflags/buildflags.gni b/components/brave_wayback_machine/browser/buildflags/buildflags.gni new file mode 100644 index 000000000000..d44caacd12fe --- /dev/null +++ b/components/brave_wayback_machine/browser/buildflags/buildflags.gni @@ -0,0 +1,6 @@ +import("//build/config/features.gni") +import("//extensions/buildflags/buildflags.gni") + +declare_args() { + enable_brave_wayback_machine = enable_extensions +} diff --git a/components/brave_wayback_machine/extension/BUILD.gn b/components/brave_wayback_machine/extension/BUILD.gn new file mode 100644 index 000000000000..79e2433a34d8 --- /dev/null +++ b/components/brave_wayback_machine/extension/BUILD.gn @@ -0,0 +1,16 @@ +import("//brave/components/common/typescript.gni") + +transpile_web_ui("generate_brave_wayback_machine") { + entry_points = [ + # Background script + ["brave_wayback_machine_background", rebase_path("background/index.ts")] + ] + + resource_name = "brave_wayback_machine" + + # Must match the relative path from the static GRD to the manifest.json + # plus any other relative path we want these files to live in the extension + extra_relative_path = "/brave_wayback_machine/extension/out" + + public_asset_path = "/extension/out/" +} diff --git a/components/brave_wayback_machine/extension/background/actions/index.ts b/components/brave_wayback_machine/extension/background/actions/index.ts new file mode 100644 index 000000000000..2bfc0ac22d53 --- /dev/null +++ b/components/brave_wayback_machine/extension/background/actions/index.ts @@ -0,0 +1,28 @@ +/* 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 http://mozilla.org/MPL/2.0/. */ + +import { isEmpty } from '../../utils' +import { updateURL } from '../api' + +/** + * Redirects the user to an archived version of a given URL + * @param {number} tabId - The specified tab id + * @param {string} url - The page url + */ +export function shouldRedirectUsers (tabId: number, url: string) { + const waybackMachineURL: string = `https://archive.org/wayback/available?url=${url}` + window.fetch(waybackMachineURL) + .then(response => response.json()) + .then(data => { + if (!isEmpty(data.archived_snapshots)) { + const closestArchivedUrl: string = data.archived_snapshots.closest.url + updateURL(tabId, closestArchivedUrl) + } else { + // the wayback machine has no records of this website, + // in this case we redirect to our custom URL + console.error('HELLO THIS FLOW NEEDS DESIGN SPEC: no archived version of this page is available') + } + }) + .catch(error => console.error('Unable to fetch the archived version of this page. Reason:', error)) +} diff --git a/components/brave_wayback_machine/extension/background/api/index.ts b/components/brave_wayback_machine/extension/background/api/index.ts new file mode 100644 index 000000000000..77e78f116faa --- /dev/null +++ b/components/brave_wayback_machine/extension/background/api/index.ts @@ -0,0 +1,7 @@ +/* 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 http://mozilla.org/MPL/2.0/. */ + +export function updateURL (tabId: number, url: string) { + chrome.tabs.update(tabId, { url }) +} diff --git a/components/brave_wayback_machine/extension/background/events/index.ts b/components/brave_wayback_machine/extension/background/events/index.ts new file mode 100644 index 000000000000..8343d1fdba5b --- /dev/null +++ b/components/brave_wayback_machine/extension/background/events/index.ts @@ -0,0 +1,24 @@ +/* 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 http://mozilla.org/MPL/2.0/. */ + +import { statusCode } from '../../utils' +import { shouldRedirectUsers } from '../actions' + +chrome.webRequest.onHeadersReceived.addListener(details => { + // only proceed this call if header response is something we care about + if (!statusCode.includes(details.statusCode)) { + return + } + + const confirmMessage = confirm('an archived version of this website is available. do you want to load it?') + if (confirmMessage) { + shouldRedirectUsers(details.tabId, details.url) + } +}, + { + urls: [ '' ], + types: ['main_frame'] + }, + ['blocking'] +) diff --git a/components/brave_wayback_machine/extension/background/index.ts b/components/brave_wayback_machine/extension/background/index.ts new file mode 100644 index 000000000000..e3052fc6d14c --- /dev/null +++ b/components/brave_wayback_machine/extension/background/index.ts @@ -0,0 +1,9 @@ +/* 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 http://mozilla.org/MPL/2.0/. */ + +// This file is used for bundling purposes only and should not +// include anything other than imports +import './actions' +import './api' +import './events' diff --git a/components/brave_wayback_machine/extension/manifest.json b/components/brave_wayback_machine/extension/manifest.json new file mode 100644 index 000000000000..0c9bbfd3617d --- /dev/null +++ b/components/brave_wayback_machine/extension/manifest.json @@ -0,0 +1,20 @@ +{ + "name": "Brave Wayback Machine", + "description": "__MSG_appDescription__", + "version": "0.0.1", + "manifest_version": 2, + "background": { + "scripts": [ + "extension/out/brave_wayback_machine_background.bundle.js" + ], + "persistent": true + }, + "incognito": "not_allowed", + "permissions": [ + "webRequest", + "webRequestBlocking", + "tabs", + "" + ], + "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt+p9PkEQg5Z0hmSpEbawsKnL0aBX6sGKqn5v+HE2KVD8EK6eJJlhHb8yRg2+EGI5V8Sgf9NZF8I32FvCcZm7JMWYwABXFMLPRZ44CrRbUjjCgA5f+4tz6tdHM3Y+G7ON62BB5hBOgbfrJNpGJojIxb23/sZA1ELwDxgGmmIo1DpjjuMWAxd2OdBtHgFhhjW2LiKSpT+oAxwCwAZ2BUetvaxMefzzKQlrfDPbBXFEaVgrDKQgJS5H8skwlEKwfRvHLZS+na8s3mLKsxDgT3RPgBc/RzpI7KuyVH7eiIemHqfcG0nwFv4GdD6F24qhcIUv3649fzg8mET2isGU0dL1zwIDAQAB" +} diff --git a/components/brave_wayback_machine/extension/utils/index.ts b/components/brave_wayback_machine/extension/utils/index.ts new file mode 100644 index 000000000000..a795ba41ae46 --- /dev/null +++ b/components/brave_wayback_machine/extension/utils/index.ts @@ -0,0 +1,13 @@ +/* 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 http://mozilla.org/MPL/2.0/. */ + +export function isEmpty (obj: object) { + return Object.entries(obj).length === 0 && obj.constructor === Object +} + +export const statusCode: Array = [ + 404, 408, 410, 451, 500, + 502, 503, 504, 509, 520, + 521, 523, 524, 525, 526 +] diff --git a/components/brave_wayback_machine/resources.grd b/components/brave_wayback_machine/resources.grd new file mode 100644 index 000000000000..0525a61214a3 --- /dev/null +++ b/components/brave_wayback_machine/resources.grd @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file From 2d0b5f09244a134c168c6f570a85bfb2a8d22cee Mon Sep 17 00:00:00 2001 From: Cezar Augusto Date: Wed, 30 Oct 2019 11:10:50 -0300 Subject: [PATCH 02/21] Provide a switch in settings for Wayback Machine This adds the ability to turn the Wayback Machine off. Setting can be located under "extension" sidebar item. Address https://github.com/brave/brave-browser/issues/6144 --- browser/BUILD.gn | 8 +++++ browser/brave_profile_prefs.cc | 10 ++++++ .../api/settings_private/brave_prefs_util.cc | 3 ++ browser/extensions/brave_component_loader.cc | 4 ++- browser/profiles/brave_profile_manager.cc | 6 ++++ .../brave_default_extensions_page.html | 4 +++ .../brave_default_extensions_handler.cc | 30 +++++++++++++++++ .../brave_default_extensions_handler.h | 1 + common/pref_names.cc | 1 + common/pref_names.h | 1 + .../brave_wayback_machine/browser/BUILD.gn | 20 ++++++++++++ .../browser/buildflags/BUILD.gn | 9 ++++++ .../browser/wayback_machine_util.cc | 32 +++++++++++++++++++ .../browser/wayback_machine_util.h | 25 +++++++++++++++ 14 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 components/brave_wayback_machine/browser/BUILD.gn create mode 100644 components/brave_wayback_machine/browser/buildflags/BUILD.gn create mode 100644 components/brave_wayback_machine/browser/wayback_machine_util.cc create mode 100644 components/brave_wayback_machine/browser/wayback_machine_util.h diff --git a/browser/BUILD.gn b/browser/BUILD.gn index e310365042f3..e89dc1d69cf2 100644 --- a/browser/BUILD.gn +++ b/browser/BUILD.gn @@ -4,6 +4,7 @@ import("//brave/components/brave_ads/browser/buildflags/buildflags.gni") import("//brave/components/brave_sync/buildflags/buildflags.gni") import("//brave/components/brave_wallet/browser/buildflags/buildflags.gni") import("//brave/components/brave_webtorrent/browser/buildflags/buildflags.gni") +import("//brave/components/brave_wayback_machine/browser/buildflags/buildflags.gni") import("//brave/components/greaselion/browser/buildflags/buildflags.gni") import("//build/buildflag_header.gni") import("//build/config/features.gni") @@ -131,6 +132,7 @@ source_set("browser_process") { "//brave/components/brave_shields/browser", "//brave/components/brave_wallet/browser", "//brave/components/brave_webtorrent/browser/buildflags", + "//brave/components/brave_wayback_machine/browser/buildflags", "//brave/components/content_settings/core/browser", "//brave/components/greaselion/browser/buildflags", "//brave/components/ntp_tiles", @@ -271,6 +273,12 @@ source_set("browser_process") { deps += [ "//brave/browser/widevine" ] } + if (enable_brave_wayback_machine) { + deps += [ + "//brave/components/brave_wayback_machine/browser", + ] + } + if (is_win && is_official_build) { sources += [ "//chrome/browser/google/google_update_win.cc", diff --git a/browser/brave_profile_prefs.cc b/browser/brave_profile_prefs.cc index 7835ce2baaa7..1253d8c3a170 100644 --- a/browser/brave_profile_prefs.cc +++ b/browser/brave_profile_prefs.cc @@ -9,6 +9,7 @@ #include "brave/components/brave_shields/browser/brave_shields_web_contents_observer.h" #include "brave/components/brave_sync/brave_sync_prefs.h" #include "brave/components/brave_webtorrent/browser/buildflags/buildflags.h" +#include "brave/components/brave_wayback_machine/browser/buildflags/buildflags.h" #include "chrome/browser/net/prediction_options.h" #include "chrome/browser/prefs/session_startup_pref.h" #include "chrome/common/pref_names.h" @@ -26,6 +27,10 @@ #include "brave/components/brave_webtorrent/browser/webtorrent_util.h" #endif +#if BUILDFLAG(ENABLE_BRAVE_WAYBACK_MACHINE) +#include "brave/components/brave_wayback_machine/browser/wayback_machine_util.h" +#endif + #if !defined(OS_ANDROID) #include "chrome/browser/first_run/first_run.h" #endif @@ -96,6 +101,11 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { webtorrent::RegisterProfilePrefs(registry); #endif + // wayback machine +#if BUILDFLAG(ENABLE_BRAVE_WAYBACK_MACHINE) + brave_wayback_machine::RegisterProfilePrefs(registry); +#endif + #if defined(OS_ANDROID) registry->RegisterBooleanPref(kDesktopModeEnabled, false); registry->RegisterBooleanPref(kPlayYTVideoInBrowserEnabled, true); diff --git a/browser/extensions/api/settings_private/brave_prefs_util.cc b/browser/extensions/api/settings_private/brave_prefs_util.cc index fe1f33027aef..5396016d01b9 100644 --- a/browser/extensions/api/settings_private/brave_prefs_util.cc +++ b/browser/extensions/api/settings_private/brave_prefs_util.cc @@ -90,6 +90,9 @@ const PrefsUtil::TypedPrefMap& BravePrefsUtil::GetWhitelistedKeys() { // WebTorrent pref (*s_brave_whitelist)[kWebTorrentEnabled] = settings_api::PrefType::PREF_TYPE_BOOLEAN; + // Wayback Machine pref + (*s_brave_whitelist)[kBraveWaybackMachineEnabled] = + settings_api::PrefType::PREF_TYPE_BOOLEAN; // Hangouts pref (*s_brave_whitelist)[kHangoutsEnabled] = settings_api::PrefType::PREF_TYPE_BOOLEAN; diff --git a/browser/extensions/brave_component_loader.cc b/browser/extensions/brave_component_loader.cc index 9de952088927..8d9e6caf40c7 100644 --- a/browser/extensions/brave_component_loader.cc +++ b/browser/extensions/brave_component_loader.cc @@ -105,7 +105,9 @@ void BraveComponentLoader::AddDefaultComponentExtensions( HandleRewardsEnabledStatus(); #endif - if (!command_line.HasSwitch(switches::kDisableBraveWaybackMachineExtension)) { + if (!command_line.HasSwitch(switches::kDisableBraveWaybackMachineExtension) && + (!profile_prefs_->FindPreference(kBraveWaybackMachineEnabled) || + profile_prefs_->GetBoolean(kBraveWaybackMachineEnabled))) { base::FilePath brave_wayback_machine_path(FILE_PATH_LITERAL("")); brave_wayback_machine_path = brave_wayback_machine_path.Append(FILE_PATH_LITERAL("brave_wayback_machine")); diff --git a/browser/profiles/brave_profile_manager.cc b/browser/profiles/brave_profile_manager.cc index 898326324435..e57002577d37 100644 --- a/browser/profiles/brave_profile_manager.cc +++ b/browser/profiles/brave_profile_manager.cc @@ -24,6 +24,7 @@ #include "brave/components/brave_shields/browser/ad_block_service.h" #include "brave/components/brave_shields/browser/brave_shields_util.h" #include "brave/components/brave_webtorrent/browser/buildflags/buildflags.h" +#include "brave/components/brave_wayback_machine/browser/buildflags/buildflags.h" #include "brave/content/browser/webui/brave_shared_resources_data_source.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/profiles/profile_attributes_entry.h" @@ -100,6 +101,11 @@ void BraveProfileManager::InitTorProfileUserPrefs(Profile* profile) { #if BUILDFLAG(ENABLE_BRAVE_WEBTORRENT) pref_service->SetBoolean(kWebTorrentEnabled, false); #endif + +#if BUILDFLAG(ENABLE_BRAVE_WAYBACK_MACHINE) + pref_service->SetBoolean(kBraveWaybackMachineEnabled, false); +#endif + // Disable the automatic translate bubble in Tor because we currently don't // support extensions in Tor mode and users cannot disable this through // settings page for Tor windows. diff --git a/browser/resources/settings/brave_default_extensions_page/brave_default_extensions_page.html b/browser/resources/settings/brave_default_extensions_page/brave_default_extensions_page.html index 021d228088bf..98957ea58d47 100644 --- a/browser/resources/settings/brave_default_extensions_page/brave_default_extensions_page.html +++ b/browser/resources/settings/brave_default_extensions_page/brave_default_extensions_page.html @@ -72,6 +72,10 @@ sub-label="$i18n{braveWalletEnabledDesc}" on-settings-boolean-control-change="onBraveWalletEnabledChange_"> + + RegisterMessageCallback( + "setBraveWaybackMachineEnabled", + base::BindRepeating(&BraveDefaultExtensionsHandler::SetBraveWaybackMachineEnabled, + base::Unretained(this))); web_ui()->RegisterMessageCallback( "setBraveWalletEnabled", base::BindRepeating(&BraveDefaultExtensionsHandler::SetBraveWalletEnabled, @@ -162,6 +167,31 @@ void BraveDefaultExtensionsHandler::SetWebTorrentEnabled( } } +void BraveDefaultExtensionsHandler::SetBraveWaybackMachineEnabled( + const base::ListValue* args) { + CHECK_EQ(args->GetSize(), 1U); + CHECK(profile_); + bool enabled; + args->GetBoolean(0, &enabled); + + extensions::ExtensionService* service = + extensions::ExtensionSystem::Get(profile_)->extension_service(); + extensions::ComponentLoader* loader = service->component_loader(); + + if (enabled) { + if (!loader->Exists(brave_wayback_machine_extension_id)) { + base::FilePath brave_wayback_machine_path(FILE_PATH_LITERAL("")); + brave_wayback_machine_path = + brave_wayback_machine_path.Append(FILE_PATH_LITERAL("brave_wayback_machine")); + loader->Add(IDR_BRAVE_WAYBACK_MACHINE, brave_wayback_machine_path); + } + service->EnableExtension(brave_wayback_machine_extension_id); + } else { + service->DisableExtension(brave_wayback_machine_extension_id, + extensions::disable_reason::DisableReason::DISABLE_BLOCKED_BY_POLICY); + } +} + void BraveDefaultExtensionsHandler::SetHangoutsEnabled( const base::ListValue* args) { CHECK_EQ(args->GetSize(), 1U); diff --git a/browser/ui/webui/settings/brave_default_extensions_handler.h b/browser/ui/webui/settings/brave_default_extensions_handler.h index 33f0b7cf9cbd..2b1076920546 100644 --- a/browser/ui/webui/settings/brave_default_extensions_handler.h +++ b/browser/ui/webui/settings/brave_default_extensions_handler.h @@ -29,6 +29,7 @@ class BraveDefaultExtensionsHandler : public settings::SettingsPageUIHandler { void GetRestartNeeded(const base::ListValue* args); void SetWebTorrentEnabled(const base::ListValue* args); + void SetBraveWaybackMachineEnabled(const base::ListValue* args); void SetHangoutsEnabled(const base::ListValue* args); void SetIPFSCompanionEnabled(const base::ListValue* args); void SetMediaRouterEnabled(const base::ListValue* args); diff --git a/common/pref_names.cc b/common/pref_names.cc index efebc578e1eb..a73748462955 100644 --- a/common/pref_names.cc +++ b/common/pref_names.cc @@ -56,6 +56,7 @@ const char kMigratedMuonProfile[] = "brave.muon.migrated_profile"; const char kBravePaymentsPinnedItemCount[] = "brave.muon.import_pinned_item_count"; const char kWebTorrentEnabled[] = "brave.webtorrent_enabled"; +const char kBraveWaybackMachineEnabled[] = "brave.wayback_machine_enabled"; const char kHangoutsEnabled[] = "brave.hangouts_enabled"; const char kHideBraveRewardsButton[] = "brave.hide_brave_rewards_button"; const char kIPFSCompanionEnabled[] = "brave.ipfs_companion_enabled"; diff --git a/common/pref_names.h b/common/pref_names.h index ac09d70d189d..5189e922a373 100644 --- a/common/pref_names.h +++ b/common/pref_names.h @@ -48,6 +48,7 @@ extern const char kLinkedInEmbedControlType[]; extern const char kMigratedMuonProfile[]; extern const char kBravePaymentsPinnedItemCount[]; extern const char kWebTorrentEnabled[]; +extern const char kBraveWaybackMachineEnabled[]; extern const char kHangoutsEnabled[]; extern const char kHideBraveRewardsButton[]; extern const char kIPFSCompanionEnabled[]; diff --git a/components/brave_wayback_machine/browser/BUILD.gn b/components/brave_wayback_machine/browser/BUILD.gn new file mode 100644 index 000000000000..3eeea36568b2 --- /dev/null +++ b/components/brave_wayback_machine/browser/BUILD.gn @@ -0,0 +1,20 @@ +source_set("browser") { + sources = [ + "content_browser_client_helper.h", + "wayback_machine_util.cc", + "wayback_machine_util.h", + ] + + deps = [ + "//base", + "//brave/common", + "//components/pref_registry", + "//content/public/browser", + "//extensions/browser", + "//extensions/common", + ] + + public_deps = [ + "buildflags", + ] +} diff --git a/components/brave_wayback_machine/browser/buildflags/BUILD.gn b/components/brave_wayback_machine/browser/buildflags/BUILD.gn new file mode 100644 index 000000000000..79eda2795497 --- /dev/null +++ b/components/brave_wayback_machine/browser/buildflags/BUILD.gn @@ -0,0 +1,9 @@ +import("//build/buildflag_header.gni") +import("buildflags.gni") + +buildflag_header("buildflags") { + header = "buildflags.h" + flags = [ + "ENABLE_BRAVE_WAYBACK_MACHINE=$enable_brave_wayback_machine", + ] +} diff --git a/components/brave_wayback_machine/browser/wayback_machine_util.cc b/components/brave_wayback_machine/browser/wayback_machine_util.cc new file mode 100644 index 000000000000..b8c98b2dd1bd --- /dev/null +++ b/components/brave_wayback_machine/browser/wayback_machine_util.cc @@ -0,0 +1,32 @@ +/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ + +#include "brave/components/brave_wayback_machine/browser/wayback_machine_util.h" + +#include "brave/common/extensions/extension_constants.h" +#include "brave/common/pref_names.h" +#include "chrome/browser/profiles/profile.h" +#include "components/pref_registry/pref_registry_syncable.h" +#include "components/prefs/pref_service.h" +#include "extensions/browser/extension_registry.h" + +namespace brave_wayback_machine { + +bool IsBraveWaybackMachineEnabled(content::BrowserContext* browser_context) { + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(browser_context); + return registry->enabled_extensions().Contains(brave_wayback_machine_extension_id); +} + +bool IsBraveWaybackMachinePrefEnabled(content::BrowserContext* browser_context) { + return Profile::FromBrowserContext(browser_context)-> + GetPrefs()->GetBoolean(kBraveWaybackMachineEnabled); +} + +void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) { + registry->RegisterBooleanPref(kBraveWaybackMachineEnabled, true); +} + +} // namespace brave_wayback_machine diff --git a/components/brave_wayback_machine/browser/wayback_machine_util.h b/components/brave_wayback_machine/browser/wayback_machine_util.h new file mode 100644 index 000000000000..01627e7a4360 --- /dev/null +++ b/components/brave_wayback_machine/browser/wayback_machine_util.h @@ -0,0 +1,25 @@ +/* Copyright (c) 2019 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 http://mozilla.org/MPL/2.0/. */ + +#ifndef BRAVE_COMPONENTS_BRAVE_WAYBACK_MACHINE_BROWSER_WAYBACK_MACHINE_UTIL_H_ +#define BRAVE_COMPONENTS_BRAVE_WAYBACK_MACHINE_BROWSER_WAYBACK_MACHINE_UTIL_H_ + +namespace content { +class BrowserContext; +} + +namespace user_prefs { +class PrefRegistrySyncable; +} + +namespace brave_wayback_machine { + +bool IsBraveWaybackMachineEnabled(content::BrowserContext* browser_context); +bool IsBraveWaybackMachinePrefEnabled(content::BrowserContext* browser_context); +void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry); + +} // brave_wayback_machine + +#endif // BRAVE_COMPONENTS_BRAVE_WAYBACK_MACHINE_BROWSER_WAYBACK_MACHINE_UTIL_H_ From bea69f0cd07f390b787f2f9526c867da0173b87b Mon Sep 17 00:00:00 2001 From: Cezar Augusto Date: Wed, 30 Oct 2019 11:25:37 -0300 Subject: [PATCH 03/21] Add browser tests for Wayback Machine * Assert true that extension is bundled * Assert true that extension is enabled in default windows * Assert false that extension is disabled in Tor windows --- .../brave_content_browser_client_browsertest.cc | 9 +++++++++ browser/brave_profile_prefs_browsertest.cc | 2 ++ .../profiles/brave_profile_manager_unittest.cc | 15 +++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/browser/brave_content_browser_client_browsertest.cc b/browser/brave_content_browser_client_browsertest.cc index d5f903eeca56..e7def1e5b2d2 100644 --- a/browser/brave_content_browser_client_browsertest.cc +++ b/browser/brave_content_browser_client_browsertest.cc @@ -405,6 +405,15 @@ IN_PROC_BROWSER_TEST_F(BraveContentBrowserClientTest, << "No changes on the real URL"; } +IN_PROC_BROWSER_TEST_F(BraveContentBrowserClientTest, + BraveWaybackMachineExtensionEnabledByDefault) { + ASSERT_TRUE(browser()->profile()->GetPrefs()->GetBoolean(kBraveWaybackMachineEnabled)); + extensions::ExtensionRegistry* registry = + extensions::ExtensionRegistry::Get(browser()->profile()); + ASSERT_TRUE( + registry->enabled_extensions().Contains(brave_wayback_machine_extension_id)); +} + #if BUILDFLAG(ENABLE_HANGOUT_SERVICES_EXTENSION) IN_PROC_BROWSER_TEST_F(BraveContentBrowserClientTest, HangoutsEnabledByDefault) { diff --git a/browser/brave_profile_prefs_browsertest.cc b/browser/brave_profile_prefs_browsertest.cc index 32bb2efa05bb..43fdcd0b0714 100644 --- a/browser/brave_profile_prefs_browsertest.cc +++ b/browser/brave_profile_prefs_browsertest.cc @@ -45,6 +45,8 @@ IN_PROC_BROWSER_TEST_F(BraveProfilePrefsBrowserTest, MiscBravePrefs) { browser()->profile()->GetPrefs()->GetBoolean(kLinkedInEmbedControlType)); EXPECT_TRUE( browser()->profile()->GetPrefs()->GetBoolean(kWebTorrentEnabled)); + EXPECT_TRUE( + browser()->profile()->GetPrefs()->GetBoolean(kBraveWaybackMachineEnabled)); EXPECT_TRUE( browser()->profile()->GetPrefs()->GetBoolean(kHangoutsEnabled)); EXPECT_FALSE( diff --git a/browser/profiles/brave_profile_manager_unittest.cc b/browser/profiles/brave_profile_manager_unittest.cc index 560b4c41ad89..0a27884ba3f0 100644 --- a/browser/profiles/brave_profile_manager_unittest.cc +++ b/browser/profiles/brave_profile_manager_unittest.cc @@ -18,6 +18,7 @@ #include "brave/common/tor/pref_names.h" #include "brave/common/tor/tor_constants.h" #include "brave/components/brave_webtorrent/browser/webtorrent_util.h" +#include "brave/components/brave_wayback_machine/browser/wayback_machine_util.h" #include "chrome/browser/net/proxy_config_monitor.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_avatar_icon_util.h" @@ -237,6 +238,20 @@ TEST_F(BraveProfileManagerTest, NoWebtorrentInTorProfile) { EXPECT_FALSE(webtorrent::IsWebtorrentEnabled(profile)); } +TEST_F(BraveProfileManagerTest, NoWaybackMachineInTorProfile) { + base::FilePath tor_parent_profile_path = + temp_dir_.GetPath().AppendASCII(TestingProfile::kTestUserProfileDir); + ProfileManager* profile_manager = g_browser_process->profile_manager(); + base::FilePath tor_path = BraveProfileManager::GetTorProfilePath(); + Profile* parent_profile = + profile_manager->GetProfile(tor_parent_profile_path); + Profile* profile = profile_manager->GetProfile(tor_path); + ASSERT_TRUE(profile); + EXPECT_EQ(brave::GetParentProfile(profile), parent_profile); + + EXPECT_FALSE(brave_wayback_machine::IsBraveWaybackMachineEnabled(profile)); +} + TEST_F(BraveProfileManagerTest, ProxyConfigMonitorInTorProfile) { ScopedTorLaunchPreventerForTest prevent_tor_process; ProfileManager* profile_manager = g_browser_process->profile_manager(); From 4f55bf0d48c5bda047d419c5951b3ac0e35831c0 Mon Sep 17 00:00:00 2001 From: Cezar Augusto Date: Wed, 30 Oct 2019 14:38:12 -0300 Subject: [PATCH 04/21] Create `Help Tips` section in settings This creates a new section to host the Wayback Machine toggle option. Option is located under Additional settings panel as per spec. For further info, see https://docs.google.com/document/d/1ioGkGUVmLE0ndfvLRBjDN1d9QtOKeyPOM-33lK0L78k --- app/brave_generated_resources.grd | 7 ++++++ .../brave_default_extensions_page.html | 4 ---- .../brave_help_tips_browser_proxy.html | 2 ++ .../brave_help_tips_browser_proxy.js | 20 ++++++++++++++++ .../brave_help_tips_page.html | 16 +++++++++++++ .../brave_help_tips_page.js | 23 +++++++++++++++++++ browser/resources/settings/brave_icons.html | 4 ++++ .../settings/brave_settings_overrides.html | 1 + .../settings/brave_settings_overrides.js | 23 +++++++++++++++++-- .../resources/settings/settings_resources.grd | 6 +++++ .../settings_localized_strings_provider.cc | 4 ++++ 11 files changed, 104 insertions(+), 6 deletions(-) create mode 100644 browser/resources/settings/brave_help_tips_page/brave_help_tips_browser_proxy.html create mode 100644 browser/resources/settings/brave_help_tips_page/brave_help_tips_browser_proxy.js create mode 100644 browser/resources/settings/brave_help_tips_page/brave_help_tips_page.html create mode 100644 browser/resources/settings/brave_help_tips_page/brave_help_tips_page.js diff --git a/app/brave_generated_resources.grd b/app/brave_generated_resources.grd index 39eaa20de33c..d698021f49d3 100644 --- a/app/brave_generated_resources.grd +++ b/app/brave_generated_resources.grd @@ -416,6 +416,13 @@ By installing this extension, you are agreeing to the Google Widevine Terms of U Access Sync via + + + Help Tips + + + Show Wayback Machine prompt on 404 pages + Light diff --git a/browser/resources/settings/brave_default_extensions_page/brave_default_extensions_page.html b/browser/resources/settings/brave_default_extensions_page/brave_default_extensions_page.html index 98957ea58d47..021d228088bf 100644 --- a/browser/resources/settings/brave_default_extensions_page/brave_default_extensions_page.html +++ b/browser/resources/settings/brave_default_extensions_page/brave_default_extensions_page.html @@ -72,10 +72,6 @@ sub-label="$i18n{braveWalletEnabledDesc}" on-settings-boolean-control-change="onBraveWalletEnabledChange_"> - - + diff --git a/browser/resources/settings/brave_help_tips_page/brave_help_tips_browser_proxy.js b/browser/resources/settings/brave_help_tips_page/brave_help_tips_browser_proxy.js new file mode 100644 index 000000000000..7145da8447b7 --- /dev/null +++ b/browser/resources/settings/brave_help_tips_page/brave_help_tips_browser_proxy.js @@ -0,0 +1,20 @@ +/* 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 http://mozilla.org/MPL/2.0/. */ + + cr.define('settings', function() { + /** @interface */ + class BraveHelpTipsBrowserProxy {} + + /** + * @implements {settings.BraveHelpTipsBrowserProxy} + */ + class BraveHelpTipsBrowserProxyImpl {} + + cr.addSingletonGetter(BraveHelpTipsBrowserProxyImpl); + + return { + BraveHelpTipsBrowserProxy, + BraveHelpTipsBrowserProxyImpl + }; +}); diff --git a/browser/resources/settings/brave_help_tips_page/brave_help_tips_page.html b/browser/resources/settings/brave_help_tips_page/brave_help_tips_page.html new file mode 100644 index 000000000000..afb765344af1 --- /dev/null +++ b/browser/resources/settings/brave_help_tips_page/brave_help_tips_page.html @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/browser/resources/settings/brave_help_tips_page/brave_help_tips_page.js b/browser/resources/settings/brave_help_tips_page/brave_help_tips_page.js new file mode 100644 index 000000000000..5832b430afc5 --- /dev/null +++ b/browser/resources/settings/brave_help_tips_page/brave_help_tips_page.js @@ -0,0 +1,23 @@ +/* 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 http://mozilla.org/MPL/2.0/. */ + +(function() { + 'use strict'; + + /** + * 'settings-brave-help-tips-page' is the settings page containing + * brave's help tips features. + */ + Polymer({ + is: 'settings-brave-help-tips-page', + + /** @private {?settings.BraveHelpTipsBrowserProxy} */ + browserProxy_: null, + + /** @override */ + created: function() { + this.browserProxy_ = settings.BraveHelpTipsBrowserProxyImpl.getInstance(); + }, + }); +})(); diff --git a/browser/resources/settings/brave_icons.html b/browser/resources/settings/brave_icons.html index 0dc185cb72d3..e2fc474264d4 100644 --- a/browser/resources/settings/brave_icons.html +++ b/browser/resources/settings/brave_icons.html @@ -63,6 +63,10 @@ + + + diff --git a/browser/resources/settings/brave_settings_overrides.html b/browser/resources/settings/brave_settings_overrides.html index 807b585071b8..3c3549ad4f18 100644 --- a/browser/resources/settings/brave_settings_overrides.html +++ b/browser/resources/settings/brave_settings_overrides.html @@ -7,6 +7,7 @@ +