mojo_web_ui_controller.cc revision 5c02ac1a9c1b504631c0a3d2b6e737b5d738bae1
15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be 35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file. 45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/ui/webui/mojo_web_ui_controller.h" 65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/profiles/profile.h" 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/ui/webui/mojo_web_ui_handler.h" 95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "content/public/browser/render_view_host.h" 105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "content/public/browser/web_ui_data_source.h" 115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "content/public/common/bindings_policy.h" 125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "mojo/public/cpp/bindings/interface.h" 135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuMojoWebUIController::MojoWebUIController(content::WebUI* contents) 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu : WebUIController(contents), 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu mojo_data_source_(NULL) { 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuMojoWebUIController::~MojoWebUIController() { 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid MojoWebUIController::RenderViewCreated( 235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu content::RenderViewHost* render_view_host) { 245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu render_view_host->AllowBindings(content::BINDINGS_POLICY_WEB_UI); 255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu mojo::InterfacePipe<mojo::AnyInterface, mojo::AnyInterface> pipe; 275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ui_handler_ = CreateUIHandler(pipe.handle_to_peer.Pass()); 285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu render_view_host->SetWebUIHandle(pipe.handle_to_self.Pass()); 295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuvoid MojoWebUIController::AddMojoResourcePath(const std::string& path, 325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu int resource_id) { 335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu if (!mojo_data_source_) { 345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu mojo_data_source_ = content::WebUIDataSource::AddMojoDataSource( 355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu Profile::FromWebUI(web_ui())); 365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu } 375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu mojo_data_source_->AddResourcePath(path, resource_id); 385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 39