#include "content/public/browser/web_ui_controller.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"
namespace content {
namespace {
base::LazyInstance<WebUIBrowserInterfaceBrokerRegistry>::Leaky
g_web_ui_browser_interface_broker_registry = LAZY_INSTANCE_INITIALIZER;
}
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) {
RenderFrameHostImpl* rfh =
static_cast<RenderFrameHostImpl*>(render_frame_host);
broker_ =
g_web_ui_browser_interface_broker_registry.Get().CreateInterfaceBroker(
*this);
if (broker_) {
rfh->EnableMojoJsBindingsWithBroker(broker_->BindNewPipeAndPassRemote());
}
}
}