Break out EnableMojoWebUI from MojoWebUIController as a mix-in class.
Some WebUIController subclasses don't currently support Mojo and reworking the hierarchy may not be possible. Breaking the enable Mojo operations into a separate mix-in class would allow other WebUIControllers to selectively enable Mojo. One such class that doesn't immediately support Mojo is ConstrainedWebDialogUI. There is currently some confusion about using ShowConstrainedWebDialog with a web ui which needs Mojo. Change-Id: If421d1360cc27934b32bf7c35bbe88896bb2eca5 Bug: 365593101 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5954285 Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com> Reviewed-by: Demetrios Papadopoulos <dpapad@chromium.org> Commit-Queue: Allen Bauer <kylixrd@chromium.org> Cr-Commit-Position: refs/heads/main@{#1372851}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
2589ab5d02
commit
9bdbd594b8
@ -8,9 +8,8 @@
|
||||
|
||||
namespace ui {
|
||||
|
||||
MojoWebUIController::MojoWebUIController(content::WebUI* contents,
|
||||
bool enable_chrome_send)
|
||||
: content::WebUIController(contents) {
|
||||
EnableMojoWebUI::EnableMojoWebUI(content::WebUI* contents,
|
||||
bool enable_chrome_send) {
|
||||
content::BindingsPolicySet bindings(
|
||||
{content::BindingsPolicyValue::kMojoWebUi});
|
||||
if (enable_chrome_send) {
|
||||
@ -18,6 +17,14 @@ MojoWebUIController::MojoWebUIController(content::WebUI* contents,
|
||||
}
|
||||
contents->SetBindings(bindings);
|
||||
}
|
||||
|
||||
EnableMojoWebUI::~EnableMojoWebUI() = default;
|
||||
|
||||
MojoWebUIController::MojoWebUIController(content::WebUI* contents,
|
||||
bool enable_chrome_send)
|
||||
: content::WebUIController(contents),
|
||||
EnableMojoWebUI(contents, enable_chrome_send) {}
|
||||
|
||||
MojoWebUIController::~MojoWebUIController() = default;
|
||||
|
||||
} // namespace ui
|
||||
|
@ -10,6 +10,19 @@
|
||||
|
||||
namespace ui {
|
||||
|
||||
// EnableMojoWebUI is intended for WebUI pages that use Mojo. Inherit from this
|
||||
// class in addition to WebUIController (or other WebUIController subclass) to
|
||||
// enable Mojo for a given WebUI page. See below for expectations.
|
||||
class EnableMojoWebUI {
|
||||
public:
|
||||
explicit EnableMojoWebUI(content::WebUI* contents, bool enable_chrome_send);
|
||||
|
||||
EnableMojoWebUI(const EnableMojoWebUI&) = delete;
|
||||
EnableMojoWebUI& operator=(const EnableMojoWebUI&) = delete;
|
||||
|
||||
virtual ~EnableMojoWebUI();
|
||||
};
|
||||
|
||||
// MojoWebUIController is intended for WebUI pages that use Mojo. It is
|
||||
// expected that subclasses will:
|
||||
// . Add all Mojo Bindings Resources via AddResourcePath(), eg:
|
||||
@ -23,7 +36,8 @@ namespace ui {
|
||||
// BinderMap:
|
||||
// - chrome/browser/chrome_browser_interface_binders.cc for chrome/ WebUIs;
|
||||
// - content/browser/browser_interface_binders.cc for content/ WebUIs.
|
||||
class MojoWebUIController : public content::WebUIController {
|
||||
class MojoWebUIController : public content::WebUIController,
|
||||
public EnableMojoWebUI {
|
||||
public:
|
||||
// By default MojoWebUIControllers do not have normal WebUI bindings. Pass
|
||||
// |enable_chrome_send| as true if these are needed.
|
||||
|
Reference in New Issue
Block a user