#include "content/public/browser/web_ui_controller.h"
#include "base/no_destructor.h"
#include "content/browser/renderer_host/render_frame_host_impl.h"
#include "content/browser/webui/web_ui_managed_interface.h"
#include "content/public/browser/web_ui_browser_interface_broker_registry.h"
#include "url/gurl.h"
namespace content {
namespace {
WebUIBrowserInterfaceBrokerRegistry& GetWebUIBrowserInterfaceBrokerRegistry() {
static base::NoDestructor<WebUIBrowserInterfaceBrokerRegistry> registry;
return *registry;
}
}
WebUIController::WebUIController(WebUI* web_ui) : web_ui_(web_ui) {}
WebUIController::~WebUIController() {
RemoveWebUIManagedInterfaces(this);
}
bool WebUIController::OverrideHandleWebUIMessage(
const GURL& source_url,
const std::string& message,
const base::Value::List& args) {
return false;
}
WebUIController::Type WebUIController::GetType() {
return nullptr;
}
bool WebUIController::IsJavascriptErrorReportingEnabled() {
return true;
}
void WebUIController::WebUIReadyToCommitNavigation(
RenderFrameHost* render_frame_host) {
broker_ =
GetWebUIBrowserInterfaceBrokerRegistry().CreateInterfaceBroker(*this);
if (broker_) {
RenderFrameHostImpl* rfh =
static_cast<RenderFrameHostImpl*>(render_frame_host);
rfh->EnableMojoJsBindingsWithBroker(broker_->BindNewPipeAndPassRemote());
}
}
}