0

[DevUI DFM] Move 9 chrome:// pages to DFM, via new dev_ui_components_resources.pak.

This CL moves 31.6 kB of "long tail" resources to the Developer WebUI
Dynamic Feature Module (DevUI DFM), for 9 chrome:// pages whose
resources were in components_resources.pak. These resource reside in
GRDP files. The new PAK file is created by moving GRDP <part> from the
components_resources.grd to newly file dev_ui_components_resources.grd.

7 chrome:// pages that are directly moved are:

  autofill-internals = password-manager-internals
    (IDR_AUTOFILL_AND_PASSWORD_MANAGER_INTERNALS_*)
  crashes (IDR_CRASH_CRASHES_*)
  gcm-internals (IDR_GCM_DRIVER_GCM_INTERNALS_*)
  net-export (IDR_NET_LOG_NET_EXPORT_*)
  policy (IDR_POLICY_*)
  signin-internals (IDR_SIGNIN_INTERNALS_INDEX_*)
  user-actions (IDR_USER_ACTIONS_*)

2 chrome:// pages that needed new GRDP files (to separate DevUI
resources from end user-facing resources) are:

  ntp-tiles-internals (IDR_NTP_TILES_INTERNALS_*)
  interstitials (IDR_SECURITY_INTERSTITIAL_UI_*)

These resources are moved to new file dev_ui_components_resources.pak,
which then feeds into dev_ui_resources.pak. WebUI .cc and .mm files have
their resource include headers updated.

Bug: 927131
Change-Id: I4834288d4d6f64a1b5c21ab66402bb20b60844e1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1959770
Commit-Queue: Samuel Huang <huangs@chromium.org>
Reviewed-by: Jochen Eisinger <jochen@chromium.org>
Reviewed-by: Andrew Grieve <agrieve@chromium.org>
Cr-Commit-Position: refs/heads/master@{#729520}
This commit is contained in:
Samuel Huang
2020-01-08 22:20:34 +00:00
committed by Commit Bot
parent 4bc5173a0b
commit 1b99a06400
31 changed files with 132 additions and 30 deletions

@ -866,6 +866,7 @@ grit("generate_mojo_resources") {
}
grit("generate_components_resources") {
# Note that dev_ui_components_resources.grd is Chrome-only, so excluded.
source = "../components/resources/components_resources.grd"
# The .grd contains references to generated files.

@ -444,6 +444,7 @@ repack("dev_ui_paks") {
"$root_gen_dir/chrome/quota_internals_resources.pak",
"$root_gen_dir/chrome/usb_internals_resources.pak",
"$root_gen_dir/chrome/webrtc_logs_resources.pak",
"$root_gen_dir/components/dev_ui_components_resources.pak",
"$root_gen_dir/components/sync_driver_resources.pak",
"$root_gen_dir/content/browser/resources/media/media_internals_resources.pak",
"$root_gen_dir/content/browser/webrtc/resources/webrtc_internals_resources.pak",
@ -457,6 +458,7 @@ repack("dev_ui_paks") {
"//chrome/browser/resources/omnibox:resources",
"//chrome/browser/resources/quota_internals:quota_internals_resources",
"//chrome/browser/resources/usb_internals:resources",
"//components/resources:dev_ui_components_resources",
"//components/sync/driver:resources",
"//content/browser/resources/media:media_internals_resources",
"//content/browser/webrtc/resources",

@ -4,13 +4,15 @@
#include "chrome/browser/ui/webui/autofill_and_password_manager_internals/internals_ui_handler.h"
#include <utility>
#include "base/values.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_content_browser_client.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/common/channel_info.h"
#include "components/autofill/core/browser/logging/log_router.h"
#include "components/grit/components_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "components/version_info/version_info.h"
#include "components/version_ui/version_handler_helper.h"
#include "components/version_ui/version_ui_constants.h"

@ -7,6 +7,8 @@
#include <stddef.h>
#include <memory>
#include <string>
#include <vector>
#include "base/bind.h"
#include "base/bind_helpers.h"
@ -24,8 +26,8 @@
#include "chrome/common/url_constants.h"
#include "chrome/grit/chromium_strings.h"
#include "components/crash/core/browser/crashes_ui_util.h"
#include "components/grit/components_resources.h"
#include "components/grit/components_scaled_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "components/signin/public/identity_manager/identity_manager.h"
#include "components/version_info/version_info.h"
#include "content/public/browser/web_contents.h"

@ -20,7 +20,7 @@
#include "components/gcm_driver/gcm_internals_constants.h"
#include "components/gcm_driver/gcm_internals_helper.h"
#include "components/gcm_driver/gcm_profile_service.h"
#include "components/grit/components_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "content/public/browser/web_ui.h"
#include "content/public/browser/web_ui_controller.h"
#include "content/public/browser/web_ui_data_source.h"

@ -5,6 +5,7 @@
#include "chrome/browser/ui/webui/interstitials/interstitial_ui.h"
#include <memory>
#include <utility>
#include "base/atomic_sequence_num.h"
#include "base/strings/string_number_conversions.h"
@ -23,7 +24,7 @@
#include "chrome/browser/ssl/mitm_software_blocking_page.h"
#include "chrome/common/buildflags.h"
#include "chrome/common/url_constants.h"
#include "components/grit/components_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "components/safe_browsing/core/db/database_manager.h"
#include "components/security_interstitials/content/bad_clock_blocking_page.h"
#include "components/security_interstitials/content/origin_policy_ui.h"

@ -8,6 +8,7 @@
#include <memory>
#include <string>
#include <utility>
#include <vector>
#include "base/bind.h"
@ -29,7 +30,7 @@
#include "chrome/browser/ui/chrome_select_file_policy.h"
#include "chrome/common/channel_info.h"
#include "chrome/common/url_constants.h"
#include "components/grit/components_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "components/net_log/net_export_file_writer.h"
#include "components/net_log/net_export_ui_constants.h"
#include "content/public/browser/browser_thread.h"

@ -5,6 +5,8 @@
#include "chrome/browser/ui/webui/ntp_tiles_internals_ui.h"
#include <memory>
#include <string>
#include <vector>
#include "base/bind.h"
#include "build/build_config.h"
@ -15,7 +17,7 @@
#include "chrome/browser/search/suggestions/suggestions_service_factory.h"
#include "chrome/browser/search_engines/template_url_service_factory.h"
#include "chrome/common/url_constants.h"
#include "components/grit/components_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "components/history/core/browser/top_sites.h"
#include "components/image_fetcher/core/image_fetcher_impl.h"
#include "components/ntp_tiles/features.h"

@ -11,7 +11,7 @@
#include "chrome/browser/ui/webui/policy_ui_handler.h"
#include "chrome/browser/ui/webui/webui_util.h"
#include "chrome/common/url_constants.h"
#include "components/grit/components_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "components/strings/grit/components_strings.h"
#include "content/public/browser/web_ui.h"

@ -13,7 +13,7 @@
#include "chrome/browser/signin/about_signin_internals_factory.h"
#include "chrome/browser/signin/identity_manager_factory.h"
#include "chrome/common/url_constants.h"
#include "components/grit/components_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "components/signin/public/identity_manager/accounts_in_cookie_jar_info.h"
#include "components/signin/public/identity_manager/identity_manager.h"
#include "content/public/browser/web_ui.h"

@ -9,7 +9,7 @@
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/webui/user_actions/user_actions_ui_handler.h"
#include "chrome/common/url_constants.h"
#include "components/grit/components_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "content/public/browser/web_ui.h"
#include "content/public/browser/web_ui_controller.h"
#include "content/public/browser/web_ui_data_source.h"

@ -558,6 +558,7 @@ if (is_android) {
"$root_gen_dir/chrome/android/chrome_apk_paks/locales/en-US.pak",
"$root_gen_dir/chrome/android/chrome_apk_paks/resources.pak",
"$root_gen_dir/components/components_resources.pak",
"$root_gen_dir/components/dev_ui_components_resources.pak",
"$root_out_dir/browser_tests.pak",
"//components/test/data/payments/",
"//chrome/test/data/ssl/",
@ -591,7 +592,10 @@ if (is_android) {
# These are grit() rules so they are in $root_gen_dir.
deps += [ "//components/resources" ]
sources += [ "$root_gen_dir/components/components_resources.pak" ]
sources += [
"$root_gen_dir/components/components_resources.pak",
"$root_gen_dir/components/dev_ui_components_resources.pak",
]
# These are repack() rules so they are in $root_out_dir.
deps += [ "//chrome:browser_tests_pak" ]

@ -12,6 +12,7 @@ group("resources") {
public_deps = [
":components_resources",
":components_scaled_resources",
":dev_ui_components_resources",
]
}
@ -44,6 +45,16 @@ grit("components_resources") {
]
}
grit("dev_ui_components_resources") {
source = "dev_ui_components_resources.grd"
outputs = [
"grit/dev_ui_components_resources.h",
"dev_ui_components_resources.pak",
]
output_dir = "$root_gen_dir/components"
}
grit("components_scaled_resources") {
source = "components_scaled_resources.grd"

@ -18,12 +18,14 @@ per-file gcm_driver_resources.grdp=peter@chromium.org
per-file gcm_driver_resources.grdp=zea@chromium.org
per-file neterror*=mmenke@chromium.org
per-file neterror*=file://net/OWNERS
per-file ntp_tiles_dev_ui_resources.grdp=file://components/ntp_tiles/OWNERS
per-file ntp_tiles_resources.grdp=file://components/ntp_tiles/OWNERS
per-file welcome_scaled_resources.grdp=file://ui/webui/PLATFORM_OWNERS
per-file offline_pages_resources.grdp=file://components/offline_pages/OWNERS
per-file policy_resources.grdp=file://components/policy/OWNERS
per-file proximity_auth*=tengs@chromium.org
per-file printing_resources.grdp=file://printing/OWNERS
per-file security_interstitials_dev_ui_resources.grdp=file://components/security_interstitials/OWNERS
per-file security_interstitials_resources.grdp=file://components/security_interstitials/OWNERS
per-file sync_driver_resources.grdp=file://components/sync/OWNERS
per-file translate_resources.grdp=file://components/translate/OWNERS

@ -1,4 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
This file aggregates resource GRDPs for user-facing features under /components.
Resources for developer-facing chrome:// pages should be aggregated in
dev_ui_components_resources.grd.
-->
<grit latest_public_release="0" current_release="1" output_all_resource_defines="false">
<outputs>
<output filename="grit/components_resources.h" type="rc_header">
@ -8,23 +13,16 @@
</outputs>
<release seq="1">
<includes>
<part file="autofill_and_password_manager_internals_resources.grdp" />
<part file="about_ui_resources.grdp" />
<part file="crash_resources.grdp" />
<part file="dom_distiller_resources.grdp" />
<part file="flags_ui_resources.grdp" />
<part file="gcm_driver_resources.grdp" />
<part file="net_log_resources.grdp" />
<part file="neterror_resources.grdp" />
<part file="ntp_tiles_resources.grdp" />
<part file="offline_pages_resources.grdp" />
<part file="policy_resources.grdp" />
<part file="printing_resources.grdp" />
<part file="safe_browsing_resources.grdp" />
<part file="security_interstitials_resources.grdp" />
<part file="signin_resources.grdp" />
<part file="translate_resources.grdp" />
<part file="user_actions_ui_resources.grdp" />
<part file="version_ui_resources.grdp" />
</includes>
</release>

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
This file aggregates resource GRDPs for developer-facing chrome:// pages
(DevUI pages) under /components. This is needed by the Developer WebUI Dynamic
Feature Module (DevUI DFM) for Android Chrome. More info:
* User-facing resources should be aggregated in component_resources.grd.
* DevUI page resources that are *not* for Android Chrome can be aggregated in
component_resources.grd (or browser_resources.grd if applicable).
-->
<grit latest_public_release="0" current_release="1" output_all_resource_defines="false">
<outputs>
<output filename="grit/dev_ui_components_resources.h" type="rc_header">
<emit emit_type='prepend'></emit>
</output>
<output filename="dev_ui_components_resources.pak" type="data_package" />
</outputs>
<release seq="1">
<includes>
<part file="autofill_and_password_manager_internals_resources.grdp" />
<part file="crash_resources.grdp" />
<part file="gcm_driver_resources.grdp" />
<part file="net_log_resources.grdp" />
<part file="ntp_tiles_dev_ui_resources.grdp" />
<part file="policy_resources.grdp" />
<part file="security_interstitials_dev_ui_resources.grdp" />
<part file="signin_resources.grdp" />
<part file="user_actions_ui_resources.grdp" />
</includes>
</release>
</grit>

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Resources for developer-facing page chrome://ntp-tiles-internals. -->
<grit-part>
<include name="IDR_NTP_TILES_INTERNALS_HTML"
file="../ntp_tiles/webui/resources/ntp_tiles_internals.html"
flattenhtml="true"
allowexternalscript="true"
type="BINDATA"
compress="gzip" />
<include name="IDR_NTP_TILES_INTERNALS_JS"
file="../ntp_tiles/webui/resources/ntp_tiles_internals.js"
type="BINDATA"
compress="gzip" />
<include name="IDR_NTP_TILES_INTERNALS_CSS"
file="../ntp_tiles/webui/resources/ntp_tiles_internals.css"
type="BINDATA"
compress="gzip" />
</grit-part>

@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Resources for user-facing NTP features. -->
<grit-part>
<if expr="is_android or is_ios">
<if expr="_google_chrome">
@ -19,7 +20,4 @@
</else>
</if>
</if>
<include name="IDR_NTP_TILES_INTERNALS_HTML" file="../ntp_tiles/webui/resources/ntp_tiles_internals.html" flattenhtml="true" allowexternalscript="true" type="BINDATA" compress="gzip" />
<include name="IDR_NTP_TILES_INTERNALS_JS" file="../ntp_tiles/webui/resources/ntp_tiles_internals.js" type="BINDATA" compress="gzip" />
<include name="IDR_NTP_TILES_INTERNALS_CSS" file="../ntp_tiles/webui/resources/ntp_tiles_internals.css" type="BINDATA" compress="gzip" />
</grit-part>

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Resources for developer-facing page chrome://interstitials. -->
<grit-part>
<include name="IDR_SECURITY_INTERSTITIAL_UI_HTML"
file="../security_interstitials/core/browser/resources/list_of_interstitials.html"
compress="gzip"
flattenhtml="true"
type="BINDATA" />
</grit-part>

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Resources for user-facing security interstitial pages. -->
<grit-part>
<include name="IDR_SECURITY_INTERSTITIAL_COMMON_CSS" file="../security_interstitials/core/common/resources/interstitial_common.css" compress="gzip" type="BINDATA" />
<include name="IDR_SECURITY_INTERSTITIAL_CORE_CSS" file="../security_interstitials/core/common/resources/interstitial_core.css" compress="gzip" type="BINDATA" />
<include name="IDR_SECURITY_INTERSTITIAL_UI_HTML" file="../security_interstitials/core/browser/resources/list_of_interstitials.html" compress="gzip" flattenhtml="true" type="BINDATA" />
<include name="IDR_SECURITY_INTERSTITIAL_HTML" file="../security_interstitials/core/browser/resources/interstitial_large.html" compress="gzip" flattenhtml="true" type="BINDATA"/>
<include name="IDR_SECURITY_INTERSTITIAL_QUIET_HTML" file="../security_interstitials/core/browser/resources/interstitial_webview_quiet.html" compress="gzip" flattenhtml="true" type="BINDATA" />
<include name="IDR_SECURITY_INTERSTITIAL_CONNECTION_HELP_HTML" file="../security_interstitials/content/resources/connection_help.html" compress="gzip" type="BINDATA" />

@ -85,6 +85,12 @@ Resource files are specified in a `.grdp` file. Here's our
</grit-part>
```
Add the created file in `components/resources/dev_ui_components_resources.grd`:
```xml
+<part file="hello_world_resources.grdp" />
```
## Adding URL constants for the new chrome URL
Create the `constants.cc` and `constants.h` files to add the URL constants. This is where you will add the URL or URL's which will be directed to your new resources.
@ -148,8 +154,8 @@ class HelloWorldUI : public content::WebUIController {
```c++
#include "components/hello_world/hello_world_ui.h"
#include "components/grit/components_resources.h"
#include "components/grit/components_scaled_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "components/hello_world/constants.h"
#include "components/strings/grit/components_strings.h"
#include "content/public/browser/browser_context.h"
@ -199,9 +205,9 @@ sources = [
and `src/components/hello_world/DEPS:`
```
include_rules = [
"+components/grit/components_resources.h",
"+components/strings/grit/components_strings.h",
"+components/grit/components_scaled_resources.h"
"+components/grit/dev_ui_components_resources.h",
]
```
@ -300,6 +306,11 @@ You'll notice that the call is asynchronous. We must wait for the C++ side to ca
Some pages have many messages or share code that sends messages. To make possible message handling and/or to create a WebUI dialogue `c++->js` and `js->c++`, follow the guide in [WebUI Explainer](https://chromium.googlesource.com/chromium/src/+/master/docs/webui_explainer.md).
## DevUI Pages
DevUI pages are WebUI pages intended for developers, and unlikely used by most users. An example is `chrome://bluetooth-internals`. On Android Chrome, these pages are moved to a separate [Dynamic Feature Module (DFM)](https://chromium.googlesource.com/chromium/src/+/master/docs/android_dynamic_feature_modules.md) to reduce binary size. Most WebUI pages are DevUI. This is why in this doc uses `dev_ui_components_resources.{grd, h}` in its examples.
`components/` resources that are intended for end users are associated with `components_resources.{grd, h}` and `components_scaled_resorces.{grd, h}`. Use these in place of or inadditional to `dev_ui_components_resources.{grd, h}` if needed.
<script>
let nameEls = Array.from(document.querySelectorAll('[id], a[name]'));

@ -61,6 +61,7 @@ repack("repack_unscaled_resources") {
visibility = [ ":packed_resources" ]
sources = [
"$root_gen_dir/components/components_resources.pak",
"$root_gen_dir/components/dev_ui_components_resources.pak",
"$root_gen_dir/components/sync_driver_resources.pak",
"$root_gen_dir/ios/chrome/ios_resources.pak",
"$root_gen_dir/ios/web/ios_web_resources.pak",

@ -5,7 +5,7 @@
#include "ios/chrome/browser/ui/webui/autofill_and_password_manager_internals/internals_ui_handler.h"
#include "components/autofill/core/browser/logging/log_router.h"
#include "components/grit/components_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "components/version_info/version_info.h"
#include "components/version_ui/version_handler_helper.h"
#include "components/version_ui/version_ui_constants.h"

@ -7,6 +7,7 @@
#include <stddef.h>
#include <memory>
#include <vector>
#include "base/bind.h"
#include "base/bind_helpers.h"
@ -15,7 +16,7 @@
#include "base/system/sys_info.h"
#include "base/values.h"
#include "components/crash/core/browser/crashes_ui_util.h"
#include "components/grit/components_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "components/strings/grit/components_chromium_strings.h"
#include "components/strings/grit/components_strings.h"
#include "components/version_info/version_info.h"

@ -17,7 +17,7 @@
#include "components/gcm_driver/gcm_internals_constants.h"
#include "components/gcm_driver/gcm_internals_helper.h"
#include "components/gcm_driver/gcm_profile_service.h"
#include "components/grit/components_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#include "ios/chrome/browser/chrome_url_constants.h"
#include "ios/chrome/browser/gcm/ios_chrome_gcm_profile_service_factory.h"

@ -13,7 +13,7 @@
#include "base/scoped_observer.h"
#include "base/strings/string_util.h"
#include "base/values.h"
#include "components/grit/components_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "components/net_log/net_export_file_writer.h"
#include "components/net_log/net_export_ui_constants.h"
#include "ios/chrome/browser/application_context.h"

@ -5,8 +5,9 @@
#include "ios/chrome/browser/ui/webui/ntp_tiles_internals_ui.h"
#include <memory>
#include <vector>
#include "components/grit/components_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "components/keyed_service/core/service_access_type.h"
#include "components/ntp_tiles/most_visited_sites.h"
#include "components/ntp_tiles/webui/ntp_tiles_internals_message_handler.h"

@ -4,8 +4,11 @@
#include "ios/chrome/browser/ui/webui/signin_internals_ui_ios.h"
#include <string>
#include <vector>
#include "base/hash/hash.h"
#include "components/grit/components_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "components/signin/public/identity_manager/accounts_in_cookie_jar_info.h"
#include "components/signin/public/identity_manager/identity_manager.h"
#include "ios/chrome/browser/browser_state/chrome_browser_state.h"

@ -4,7 +4,7 @@
#include "ios/chrome/browser/ui/webui/user_actions_ui.h"
#include "components/grit/components_resources.h"
#include "components/grit/dev_ui_components_resources.h"
#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#include "ios/chrome/browser/chrome_url_constants.h"
#include "ios/chrome/browser/ui/webui/user_actions_handler.h"

@ -35,6 +35,7 @@ source_set("web") {
"//components/error_page/common",
"//components/image_fetcher/ios",
"//components/resources:components_resources_grit",
"//components/resources:dev_ui_components_resources_grit",
"//components/search_engines",
"//components/strings",
"//ios/chrome/app/strings:ios_strings_grit",

@ -225,6 +225,9 @@
"components/sync/driver/resources.grd": {
"includes": [2200],
},
"components/resources/dev_ui_components_resources.grd": {
"includes": [2210],
},
"content/browser/resources/media/media_internals_resources.grd": {
"includes": [2220],
},