chrome://devices: Replace content with a deprecation warning
Cloud and privet printing are being deprecated at the end of December.
Remove chrome://devices, since it is used for adding new cloud and
privet printers.
- Help center link is still TBD, but should be available shortly.
- Legacy page can be restored temporarily using a new flag added
in this CL, ForceEnableDevicesPage, to be deleted in M88.
Bug: 1114186
Change-Id: I662e195223c64ffe50df96d0512371ef0ebb0345
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2343952
Commit-Queue: Rebekah Potter <rbpotter@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#796676}
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index fa71d01..37cbe4b 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -2777,6 +2777,10 @@
ENABLE_DISABLE_VALUE_TYPE(switches::kEnableDeviceDiscoveryNotifications,
switches::kDisableDeviceDiscoveryNotifications)},
#endif // BUILDFLAG(ENABLE_SERVICE_DISCOVERY)
+ {"force-enable-devices-page",
+ flag_descriptions::kForceEnableDevicesPageName,
+ flag_descriptions::kForceEnableDevicesPageDescription, kOsDesktop,
+ FEATURE_VALUE_TYPE(features::kForceEnableDevicesPage)},
#if defined(OS_WIN) || defined(OS_LINUX) || defined(OS_CHROMEOS)
{"enable-webgl2-compute-context",
flag_descriptions::kWebGL2ComputeContextName,
diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd
index 6a77bf40..badf56a1 100644
--- a/chrome/browser/browser_resources.grd
+++ b/chrome/browser/browser_resources.grd
@@ -151,6 +151,7 @@
<if expr="enable_service_discovery">
<include name="IDR_LOCAL_DISCOVERY_HTML" file="resources\local_discovery\local_discovery.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" />
+ <include name="IDR_LOCAL_DISCOVERY_WARNING_HTML" file="resources\local_discovery\local_discovery_warning.html" type="BINDATA" />
<include name="IDR_LOCAL_DISCOVERY_CSS" file="resources\local_discovery\local_discovery.css" flattenhtml="true" type="BINDATA" />
<include name="IDR_LOCAL_DISCOVERY_JS" file="resources\local_discovery\local_discovery.js" flattenhtml="true" type="BINDATA" />
</if>
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index e546ac0..5c22de0 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -2503,6 +2503,11 @@
"expiry_milestone": 89
},
{
+ "name": "force-enable-devices-page",
+ "owners": [ "thestig", "rbpotter", "dhoss" ],
+ "expiry_milestone": 88
+ },
+ {
"name": "force-preferred-interval-for-video",
"owners": [ "khushalsagar" ],
"expiry_milestone": 89
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index 84b9486..d92299a 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -504,6 +504,12 @@
const char kDeviceDiscoveryNotificationsDescription[] =
"Device discovery notifications on local network.";
+const char kForceEnableDevicesPageName[] = "Force enable chrome://devices page";
+const char kForceEnableDevicesPageDescription[] =
+ "With this flag on, the chrome://devices page will show its previous "
+ "content, instead of a warning message. Note: chrome://devices is "
+ "no longer supported, and this flag will be permanently removed in M88.";
+
const char kDisableBestEffortTasksName[] = "Skip best effort tasks";
const char kDisableBestEffortTasksDescription[] =
"With this flag on, tasks of the lowest priority will not be executed "
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 593cf64..7b2f8a1 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -312,6 +312,9 @@
extern const char kDeviceDiscoveryNotificationsName[];
extern const char kDeviceDiscoveryNotificationsDescription[];
+extern const char kForceEnableDevicesPageName[];
+extern const char kForceEnableDevicesPageDescription[];
+
extern const char kDisableBestEffortTasksName[];
extern const char kDisableBestEffortTasksDescription[];
diff --git a/chrome/browser/resources/local_discovery/local_discovery_warning.html b/chrome/browser/resources/local_discovery/local_discovery_warning.html
new file mode 100644
index 0000000..b94695fe5
--- /dev/null
+++ b/chrome/browser/resources/local_discovery/local_discovery_warning.html
@@ -0,0 +1,32 @@
+<!doctype html>
+<html dir="$i18n{textdirection}" lang="$i18n{language}">
+<head>
+ <meta charset="utf-8">
+ <title>$i18n{devicesTitle}</title>
+ <link rel="stylesheet" href="chrome://resources/css/chrome_shared.css">
+</head>
+<style>
+ body {
+ margin: 21px 10px 24px 10px;
+ }
+
+ h1 {
+ margin: 0 0 13px 0;
+ }
+
+ header {
+ border-bottom: 1px solid #eee;
+ max-width: 718px;
+ }
+
+ div {
+ margin-top: 23px;
+ }
+</style>
+<body>
+ <header>
+ <h1>$i18n{devicesTitle}</h1>
+ </header>
+ <div>$i18nRaw{cloudPrintDeprecationWarning}</div>
+</body>
+</html>
diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc
index 3db0665..130fc24 100644
--- a/chrome/browser/ui/ui_features.cc
+++ b/chrome/browser/ui/ui_features.cc
@@ -21,6 +21,10 @@
const base::Feature kExtensionsToolbarMenu{"ExtensionsToolbarMenu",
base::FEATURE_ENABLED_BY_DEFAULT};
+// Force enables the legacy chrome://devices page. To be removed in M88.
+const base::Feature kForceEnableDevicesPage{"ForceEnableDevicesPage",
+ base::FEATURE_DISABLED_BY_DEFAULT};
+
// Enables tabs from different browser types (NORMAL vs APP) and different apps
// to mix via dragging.
// https://crbug.com/1012169
diff --git a/chrome/browser/ui/ui_features.h b/chrome/browser/ui/ui_features.h
index 009798c9..de85992 100644
--- a/chrome/browser/ui/ui_features.h
+++ b/chrome/browser/ui/ui_features.h
@@ -26,6 +26,8 @@
extern const base::Feature kExtensionsToolbarMenu;
+extern const base::Feature kForceEnableDevicesPage;
+
extern const base::Feature kMixBrowserTypeTabs;
extern const base::Feature kNewProfilePicker;
diff --git a/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc b/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
index 79d76f9a..bd40e88 100644
--- a/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
+++ b/chrome/browser/ui/webui/local_discovery/local_discovery_ui.cc
@@ -8,6 +8,7 @@
#include "build/build_config.h"
#include "chrome/browser/profiles/profile.h"
+#include "chrome/browser/ui/ui_features.h"
#include "chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h"
#include "chrome/browser/ui/webui/metrics_handler.h"
#include "chrome/browser/ui/webui/webui_util.h"
@@ -22,8 +23,42 @@
#include "printing/buildflags/buildflags.h"
#include "ui/base/webui/web_ui_util.h"
+#if defined(OS_CHROMEOS)
+#include "chrome/browser/browser_process.h"
+#include "chrome/browser/browser_process_platform_part.h"
+#include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
+#elif defined(OS_WIN)
+#include "base/enterprise_util.h"
+#endif
+
namespace {
+content::WebUIDataSource* CreateLocalDiscoveryWarningHTMLSource() {
+ content::WebUIDataSource* source =
+ content::WebUIDataSource::Create(chrome::kChromeUIDevicesHost);
+
+ source->SetDefaultResource(IDR_LOCAL_DISCOVERY_WARNING_HTML);
+ source->AddLocalizedString("devicesTitle",
+ IDS_LOCAL_DISCOVERY_DEVICES_PAGE_TITLE);
+
+ bool enterprise_managed = false;
+#if defined(OS_CHROMEOS)
+ policy::BrowserPolicyConnectorChromeOS* connector =
+ g_browser_process->platform_part()->browser_policy_connector_chromeos();
+ enterprise_managed = connector->IsEnterpriseManaged();
+#elif defined(OS_WIN)
+ enterprise_managed = base::IsMachineExternallyManaged();
+#endif
+ source->AddLocalizedString(
+ "cloudPrintDeprecationWarning",
+ enterprise_managed ? IDS_CLOUD_PRINTING_NOT_SUPPORTED_WARNING_ENTERPRISE
+ : IDS_CLOUD_PRINTING_NOT_SUPPORTED_WARNING);
+
+ source->DisableDenyXFrameOptions();
+
+ return source;
+}
+
content::WebUIDataSource* CreateLocalDiscoveryHTMLSource() {
content::WebUIDataSource* source =
content::WebUIDataSource::Create(chrome::kChromeUIDevicesHost);
@@ -93,10 +128,19 @@
LocalDiscoveryUI::LocalDiscoveryUI(content::WebUI* web_ui)
: WebUIController(web_ui) {
+ const bool use_legacy_page =
+ base::FeatureList::IsEnabled(features::kForceEnableDevicesPage);
// Set up the chrome://devices/ source.
- content::WebUIDataSource* source = CreateLocalDiscoveryHTMLSource();
+ content::WebUIDataSource* source =
+ use_legacy_page ? CreateLocalDiscoveryHTMLSource()
+ : CreateLocalDiscoveryWarningHTMLSource();
+
content::WebUIDataSource::Add(Profile::FromWebUI(web_ui), source);
+ if (!use_legacy_page) {
+ return;
+ }
+
// TODO(gene): Use LocalDiscoveryUIHandler to send updated to the devices
// page. For example
web_ui->AddMessageHandler(
diff --git a/chrome/browser/ui/webui/local_discovery/local_discovery_ui_browsertest.cc b/chrome/browser/ui/webui/local_discovery/local_discovery_ui_browsertest.cc
index 40ac82d..66785ec 100644
--- a/chrome/browser/ui/webui/local_discovery/local_discovery_ui_browsertest.cc
+++ b/chrome/browser/ui/webui/local_discovery/local_discovery_ui_browsertest.cc
@@ -29,6 +29,7 @@
#include "chrome/browser/signin/chrome_signin_client_factory.h"
#include "chrome/browser/signin/identity_manager_factory.h"
#include "chrome/browser/ui/browser.h"
+#include "chrome/browser/ui/ui_features.h"
#include "chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h"
#include "chrome/common/chrome_constants.h"
#include "chrome/common/chrome_switches.h"
@@ -355,8 +356,9 @@
// presence of a valid DualMediaSinkService.
// TODO(crbug.com/1028753): Enable the Media Route Provider features.
feature_list_.InitWithFeatures(
- {}, /* disabled_features */ {media_router::kDialMediaRouteProvider,
- media_router::kCastMediaRouteProvider});
+ /* enabled_features */ {features::kForceEnableDevicesPage},
+ /* disabled_features */ {media_router::kDialMediaRouteProvider,
+ media_router::kCastMediaRouteProvider});
WebUIBrowserTest::SetUp();
}
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index 5295db0e..dbfd7fd 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -40484,6 +40484,7 @@
<int value="-1567727398" label="DesktopPWAsWithoutExtensions:disabled"/>
<int value="-1564232131"
label="OmniboxOnDeviceHeadProviderNonIncognito:enabled"/>
+ <int value="-1562065709" label="ForceEnableDevicesPage:enabled"/>
<int value="-1561360053" label="LauncherSettingsSearch:disabled"/>
<int value="-1561252720" label="AutofillCreditCardUploadFeedback:disabled"/>
<int value="-1560729847" label="AutofillCacheQueryResponses:enabled"/>
@@ -43277,6 +43278,7 @@
<int value="1393722373" label="SaveEditedPDFForm:disabled"/>
<int value="1397069250" label="NetworkService:disabled"/>
<int value="1398148960" label="LanguageSettingsUpdate:disabled"/>
+ <int value="1398333721" label="ForceEnableDevicesPage:disabled"/>
<int value="1399950951" label="AutofillTokenPrefixMatching:disabled"/>
<int value="1403195370" label="ArcCupsApi:enabled"/>
<int value="1405459667" label="enable-fast-text-autosizing"/>