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 {
|
namespace ui {
|
||||||
|
|
||||||
MojoWebUIController::MojoWebUIController(content::WebUI* contents,
|
EnableMojoWebUI::EnableMojoWebUI(content::WebUI* contents,
|
||||||
bool enable_chrome_send)
|
bool enable_chrome_send) {
|
||||||
: content::WebUIController(contents) {
|
|
||||||
content::BindingsPolicySet bindings(
|
content::BindingsPolicySet bindings(
|
||||||
{content::BindingsPolicyValue::kMojoWebUi});
|
{content::BindingsPolicyValue::kMojoWebUi});
|
||||||
if (enable_chrome_send) {
|
if (enable_chrome_send) {
|
||||||
@ -18,6 +17,14 @@ MojoWebUIController::MojoWebUIController(content::WebUI* contents,
|
|||||||
}
|
}
|
||||||
contents->SetBindings(bindings);
|
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;
|
MojoWebUIController::~MojoWebUIController() = default;
|
||||||
|
|
||||||
} // namespace ui
|
} // namespace ui
|
||||||
|
@ -10,6 +10,19 @@
|
|||||||
|
|
||||||
namespace ui {
|
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
|
// MojoWebUIController is intended for WebUI pages that use Mojo. It is
|
||||||
// expected that subclasses will:
|
// expected that subclasses will:
|
||||||
// . Add all Mojo Bindings Resources via AddResourcePath(), eg:
|
// . Add all Mojo Bindings Resources via AddResourcePath(), eg:
|
||||||
@ -23,7 +36,8 @@ namespace ui {
|
|||||||
// BinderMap:
|
// BinderMap:
|
||||||
// - chrome/browser/chrome_browser_interface_binders.cc for chrome/ WebUIs;
|
// - chrome/browser/chrome_browser_interface_binders.cc for chrome/ WebUIs;
|
||||||
// - content/browser/browser_interface_binders.cc for content/ WebUIs.
|
// - content/browser/browser_interface_binders.cc for content/ WebUIs.
|
||||||
class MojoWebUIController : public content::WebUIController {
|
class MojoWebUIController : public content::WebUIController,
|
||||||
|
public EnableMojoWebUI {
|
||||||
public:
|
public:
|
||||||
// By default MojoWebUIControllers do not have normal WebUI bindings. Pass
|
// By default MojoWebUIControllers do not have normal WebUI bindings. Pass
|
||||||
// |enable_chrome_send| as true if these are needed.
|
// |enable_chrome_send| as true if these are needed.
|
||||||
|
Reference in New Issue
Block a user