summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/extensions/extension_web_ui.cc2
-rw-r--r--chrome/browser/extensions/extension_web_ui.h9
-rw-r--r--chrome/browser/ui/webui/about_page/about_page_ui.cc3
-rw-r--r--chrome/browser/ui/webui/about_page/about_page_ui.h3
-rw-r--r--chrome/browser/ui/webui/about_ui.cc2
-rw-r--r--chrome/browser/ui/webui/about_ui.h3
-rw-r--r--chrome/browser/ui/webui/bookmarks_ui.cc2
-rw-r--r--chrome/browser/ui/webui/bookmarks_ui.h3
-rw-r--r--chrome/browser/ui/webui/chromeos/choose_mobile_network_ui.cc2
-rw-r--r--chrome/browser/ui/webui/chromeos/choose_mobile_network_ui.h3
-rw-r--r--chrome/browser/ui/webui/chromeos/imageburner/imageburner_ui.cc2
-rw-r--r--chrome/browser/ui/webui/chromeos/imageburner/imageburner_ui.h3
-rw-r--r--chrome/browser/ui/webui/chromeos/login/oobe_ui.cc2
-rw-r--r--chrome/browser/ui/webui/chromeos/login/oobe_ui.h3
-rw-r--r--chrome/browser/ui/webui/chromeos/mobile_setup_ui.cc6
-rw-r--r--chrome/browser/ui/webui/chromeos/mobile_setup_ui.h4
-rw-r--r--chrome/browser/ui/webui/chromeos/proxy_settings_ui.cc2
-rw-r--r--chrome/browser/ui/webui/chromeos/proxy_settings_ui.h3
-rw-r--r--chrome/browser/ui/webui/chromeos/register_page_ui.cc2
-rw-r--r--chrome/browser/ui/webui/chromeos/register_page_ui.h3
-rw-r--r--chrome/browser/ui/webui/chromeos/sim_unlock_ui.cc2
-rw-r--r--chrome/browser/ui/webui/chromeos/sim_unlock_ui.h3
-rw-r--r--chrome/browser/ui/webui/chromeos/system_info_ui.cc2
-rw-r--r--chrome/browser/ui/webui/chromeos/system_info_ui.h3
-rw-r--r--chrome/browser/ui/webui/conflicts_ui.cc2
-rw-r--r--chrome/browser/ui/webui/conflicts_ui.h3
-rw-r--r--chrome/browser/ui/webui/constrained_html_ui.cc4
-rw-r--r--chrome/browser/ui/webui/constrained_html_ui.h4
-rw-r--r--chrome/browser/ui/webui/crashes_ui.cc2
-rw-r--r--chrome/browser/ui/webui/crashes_ui.h3
-rw-r--r--chrome/browser/ui/webui/devtools_ui.cc3
-rw-r--r--chrome/browser/ui/webui/devtools_ui.h5
-rw-r--r--chrome/browser/ui/webui/downloads_ui.cc2
-rw-r--r--chrome/browser/ui/webui/downloads_ui.h3
-rw-r--r--chrome/browser/ui/webui/extensions/extensions_ui.cc2
-rw-r--r--chrome/browser/ui/webui/extensions/extensions_ui.h3
-rw-r--r--chrome/browser/ui/webui/flags_ui.cc2
-rw-r--r--chrome/browser/ui/webui/flags_ui.h3
-rw-r--r--chrome/browser/ui/webui/flash_ui.cc2
-rw-r--r--chrome/browser/ui/webui/flash_ui.h3
-rw-r--r--chrome/browser/ui/webui/gpu_internals_ui.cc2
-rw-r--r--chrome/browser/ui/webui/gpu_internals_ui.h3
-rw-r--r--chrome/browser/ui/webui/history_ui.cc2
-rw-r--r--chrome/browser/ui/webui/history_ui.h5
-rw-r--r--chrome/browser/ui/webui/html_dialog_ui.cc4
-rw-r--r--chrome/browser/ui/webui/html_dialog_ui.h5
-rw-r--r--chrome/browser/ui/webui/keyboard_ui.cc2
-rw-r--r--chrome/browser/ui/webui/keyboard_ui.h3
-rw-r--r--chrome/browser/ui/webui/media/media_internals_ui.cc2
-rw-r--r--chrome/browser/ui/webui/media/media_internals_ui.h3
-rw-r--r--chrome/browser/ui/webui/net_internals/net_internals_ui.cc2
-rw-r--r--chrome/browser/ui/webui/net_internals/net_internals_ui.h3
-rw-r--r--chrome/browser/ui/webui/network_action_predictor/network_action_predictor_ui.cc2
-rw-r--r--chrome/browser/ui/webui/network_action_predictor/network_action_predictor_ui.h3
-rw-r--r--chrome/browser/ui/webui/ntp/new_tab_ui.cc4
-rw-r--r--chrome/browser/ui/webui/ntp/new_tab_ui.h6
-rw-r--r--chrome/browser/ui/webui/options/options_ui.cc6
-rw-r--r--chrome/browser/ui/webui/options/options_ui.h5
-rw-r--r--chrome/browser/ui/webui/options2/options_ui2.cc7
-rw-r--r--chrome/browser/ui/webui/options2/options_ui2.h5
-rw-r--r--chrome/browser/ui/webui/plugins_ui.cc2
-rw-r--r--chrome/browser/ui/webui/plugins_ui.h3
-rw-r--r--chrome/browser/ui/webui/policy_ui.cc2
-rw-r--r--chrome/browser/ui/webui/policy_ui.h3
-rw-r--r--chrome/browser/ui/webui/profiler_ui.cc2
-rw-r--r--chrome/browser/ui/webui/profiler_ui.h3
-rw-r--r--chrome/browser/ui/webui/quota_internals_ui.cc2
-rw-r--r--chrome/browser/ui/webui/quota_internals_ui.h3
-rw-r--r--chrome/browser/ui/webui/sessions_ui.cc2
-rw-r--r--chrome/browser/ui/webui/sessions_ui.h3
-rw-r--r--chrome/browser/ui/webui/sync_internals_ui.cc9
-rw-r--r--chrome/browser/ui/webui/sync_internals_ui.h11
-rw-r--r--chrome/browser/ui/webui/sync_internals_ui_unittest.cc10
-rw-r--r--chrome/browser/ui/webui/sync_promo/sync_promo_ui.cc2
-rw-r--r--chrome/browser/ui/webui/sync_promo/sync_promo_ui.h3
-rw-r--r--chrome/browser/ui/webui/task_manager_ui.cc2
-rw-r--r--chrome/browser/ui/webui/task_manager_ui.h3
-rw-r--r--chrome/browser/ui/webui/test_chrome_web_ui_factory_browsertest.cc4
-rw-r--r--chrome/browser/ui/webui/tracing_ui.cc2
-rw-r--r--chrome/browser/ui/webui/tracing_ui.h3
-rw-r--r--chrome/browser/ui/webui/uber/uber_ui.cc29
-rw-r--r--chrome/browser/ui/webui/uber/uber_ui.h11
-rw-r--r--chrome/browser/ui/webui/web_ui_browsertest.cc4
-rw-r--r--chrome/browser/ui/webui/workers_ui.cc2
-rw-r--r--chrome/browser/ui/webui/workers_ui.h3
-rw-r--r--chrome/renderer/chrome_ppb_pdf_impl.cc22
-rw-r--r--content/browser/tab_contents/render_view_host_manager.cc5
-rw-r--r--content/browser/tab_contents/render_view_host_manager_unittest.cc4
-rw-r--r--content/browser/tab_contents/tab_contents_unittest.cc4
-rw-r--r--content/browser/webui/web_ui.cc13
-rw-r--r--content/browser/webui/web_ui.h45
-rw-r--r--content/content_browser.gypi2
-rw-r--r--content/public/browser/web_ui_controller.cc15
-rw-r--r--content/public/browser/web_ui_controller.h56
-rw-r--r--content/public/browser/web_ui_message_handler.h2
-rw-r--r--content/public/common/content_client.cc5
-rw-r--r--content/public/common/content_client.h8
97 files changed, 307 insertions, 189 deletions
diff --git a/chrome/browser/extensions/extension_web_ui.cc b/chrome/browser/extensions/extension_web_ui.cc
index 2902e8b..0313dd1 100644
--- a/chrome/browser/extensions/extension_web_ui.cc
+++ b/chrome/browser/extensions/extension_web_ui.cc
@@ -128,7 +128,7 @@ const char ExtensionWebUI::kExtensionURLOverrides[] =
"extensions.chrome_url_overrides";
ExtensionWebUI::ExtensionWebUI(WebContents* web_contents, const GURL& url)
- : WebUI(web_contents),
+ : WebUI(web_contents, this),
url_(url) {
Profile* profile =
Profile::FromBrowserContext(web_contents->GetBrowserContext());
diff --git a/chrome/browser/extensions/extension_web_ui.h b/chrome/browser/extensions/extension_web_ui.h
index 05e6d19..4996c63 100644
--- a/chrome/browser/extensions/extension_web_ui.h
+++ b/chrome/browser/extensions/extension_web_ui.h
@@ -13,21 +13,16 @@
#include "chrome/browser/favicon/favicon_service.h"
#include "chrome/common/extensions/extension.h"
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
-class GURL;
class PrefService;
class Profile;
-namespace base {
-class ListValue;
-class Value;
-}
-
// This class implements WebUI for extensions and allows extensions to put UI in
// the main tab contents area. For example, each extension can specify an
// "options_page", and that page is displayed in the tab contents area and is
// hosted by this class.
-class ExtensionWebUI : public WebUI {
+class ExtensionWebUI : public WebUI, public content::WebUIController {
public:
static const char kExtensionURLOverrides[];
diff --git a/chrome/browser/ui/webui/about_page/about_page_ui.cc b/chrome/browser/ui/webui/about_page/about_page_ui.cc
index 573a6c9..633ee08 100644
--- a/chrome/browser/ui/webui/about_page/about_page_ui.cc
+++ b/chrome/browser/ui/webui/about_page/about_page_ui.cc
@@ -27,7 +27,8 @@ ChromeWebUIDataSource* CreateAboutPageHTMLSource() {
} // namespace
-AboutPageUI::AboutPageUI(content::WebContents* contents) : WebUI(contents) {
+AboutPageUI::AboutPageUI(content::WebContents* contents)
+ : WebUI(contents, this) {
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext());
ChromeWebUIDataSource* source = CreateAboutPageHTMLSource();
profile->GetChromeURLDataManager()->AddDataSource(source);
diff --git a/chrome/browser/ui/webui/about_page/about_page_ui.h b/chrome/browser/ui/webui/about_page/about_page_ui.h
index a53181f..c9c4ce4 100644
--- a/chrome/browser/ui/webui/about_page/about_page_ui.h
+++ b/chrome/browser/ui/webui/about_page/about_page_ui.h
@@ -8,8 +8,9 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
-class AboutPageUI : public WebUI {
+class AboutPageUI : public WebUI, public content::WebUIController {
public:
explicit AboutPageUI(content::WebContents* contents);
virtual ~AboutPageUI();
diff --git a/chrome/browser/ui/webui/about_ui.cc b/chrome/browser/ui/webui/about_ui.cc
index 24b4752..fd17b96 100644
--- a/chrome/browser/ui/webui/about_ui.cc
+++ b/chrome/browser/ui/webui/about_ui.cc
@@ -1379,7 +1379,7 @@ std::string AboutUIHTMLSource::GetMimeType(const std::string& path) const {
}
AboutUI::AboutUI(WebContents* contents, const std::string& name)
- : WebUI(contents) {
+ : WebUI(contents, this) {
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext());
ChromeURLDataManager::DataSource* source =
new AboutUIHTMLSource(name, profile);
diff --git a/chrome/browser/ui/webui/about_ui.h b/chrome/browser/ui/webui/about_ui.h
index b02e105..bb4288b 100644
--- a/chrome/browser/ui/webui/about_ui.h
+++ b/chrome/browser/ui/webui/about_ui.h
@@ -11,6 +11,7 @@
#include "base/basictypes.h"
#include "chrome/browser/ui/webui/chrome_url_data_manager.h"
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
class Profile;
class TabContents;
@@ -43,7 +44,7 @@ class AboutUIHTMLSource : public ChromeURLDataManager::DataSource {
DISALLOW_COPY_AND_ASSIGN(AboutUIHTMLSource);
};
-class AboutUI : public WebUI {
+class AboutUI : public WebUI, public content::WebUIController {
public:
explicit AboutUI(content::WebContents* contents, const std::string& host);
virtual ~AboutUI() {}
diff --git a/chrome/browser/ui/webui/bookmarks_ui.cc b/chrome/browser/ui/webui/bookmarks_ui.cc
index e7ddc5c..42370f3 100644
--- a/chrome/browser/ui/webui/bookmarks_ui.cc
+++ b/chrome/browser/ui/webui/bookmarks_ui.cc
@@ -56,7 +56,7 @@ std::string BookmarksUIHTMLSource::GetMimeType(const std::string& path) const {
//
////////////////////////////////////////////////////////////////////////////////
-BookmarksUI::BookmarksUI(WebContents* contents) : WebUI(contents) {
+BookmarksUI::BookmarksUI(WebContents* contents) : WebUI(contents, this) {
BookmarksUIHTMLSource* html_source = new BookmarksUIHTMLSource();
// Set up the chrome://bookmarks/ source.
diff --git a/chrome/browser/ui/webui/bookmarks_ui.h b/chrome/browser/ui/webui/bookmarks_ui.h
index 6c26f54..0fce89c 100644
--- a/chrome/browser/ui/webui/bookmarks_ui.h
+++ b/chrome/browser/ui/webui/bookmarks_ui.h
@@ -10,6 +10,7 @@
#include "chrome/browser/ui/webui/chrome_url_data_manager.h"
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
class RefCountedMemory;
@@ -31,7 +32,7 @@ class BookmarksUIHTMLSource : public ChromeURLDataManager::DataSource {
// This class is used to hook up chrome://bookmarks/ which in turn gets
// overridden by an extension.
-class BookmarksUI : public WebUI {
+class BookmarksUI : public WebUI, public content::WebUIController {
public:
explicit BookmarksUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/chromeos/choose_mobile_network_ui.cc b/chrome/browser/ui/webui/chromeos/choose_mobile_network_ui.cc
index 2fef4e4..50e64db 100644
--- a/chrome/browser/ui/webui/chromeos/choose_mobile_network_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/choose_mobile_network_ui.cc
@@ -211,7 +211,7 @@ void ChooseMobileNetworkHandler::HandlePageReady(const ListValue* args) {
} // namespace
ChooseMobileNetworkUI::ChooseMobileNetworkUI(WebContents* contents)
- : WebUI(contents) {
+ : WebUI(contents, this) {
ChooseMobileNetworkHandler* handler = new ChooseMobileNetworkHandler();
AddMessageHandler(handler);
// Set up the "chrome://choose-mobile-network" source.
diff --git a/chrome/browser/ui/webui/chromeos/choose_mobile_network_ui.h b/chrome/browser/ui/webui/chromeos/choose_mobile_network_ui.h
index 217b65e..56b79cd 100644
--- a/chrome/browser/ui/webui/chromeos/choose_mobile_network_ui.h
+++ b/chrome/browser/ui/webui/chromeos/choose_mobile_network_ui.h
@@ -7,11 +7,12 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
namespace chromeos {
// A custom WebUI that defines datasource for choosing cellular network dialog.
-class ChooseMobileNetworkUI : public WebUI {
+class ChooseMobileNetworkUI : public WebUI, public content::WebUIController {
public:
explicit ChooseMobileNetworkUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/chromeos/imageburner/imageburner_ui.cc b/chrome/browser/ui/webui/chromeos/imageburner/imageburner_ui.cc
index 672dfd0..0fcb8de 100644
--- a/chrome/browser/ui/webui/chromeos/imageburner/imageburner_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/imageburner/imageburner_ui.cc
@@ -645,7 +645,7 @@ bool WebUIHandler::CheckNetwork() {
//
////////////////////////////////////////////////////////////////////////////////
-ImageBurnUI::ImageBurnUI(WebContents* contents) : WebUI(contents) {
+ImageBurnUI::ImageBurnUI(WebContents* contents) : WebUI(contents, this) {
imageburner::WebUIHandler* handler = new imageburner::WebUIHandler(contents);
AddMessageHandler(handler);
diff --git a/chrome/browser/ui/webui/chromeos/imageburner/imageburner_ui.h b/chrome/browser/ui/webui/chromeos/imageburner/imageburner_ui.h
index 73d3f9a..1f1e141 100644
--- a/chrome/browser/ui/webui/chromeos/imageburner/imageburner_ui.h
+++ b/chrome/browser/ui/webui/chromeos/imageburner/imageburner_ui.h
@@ -6,8 +6,9 @@
#define CHROME_BROWSER_UI_WEBUI_CHROMEOS_IMAGEBURNER_IMAGEBURNER_UI_H_
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
-class ImageBurnUI : public WebUI {
+class ImageBurnUI : public WebUI, public content::WebUIController {
public:
explicit ImageBurnUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
index c7b8f67..8c3fd678 100644
--- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.cc
@@ -109,7 +109,7 @@ std::string OobeUIHTMLSource::GetDataResource(int resource_id) const {
// OobeUI ----------------------------------------------------------------------
OobeUI::OobeUI(WebContents* contents)
- : WebUI(contents),
+ : WebUI(contents, this),
update_screen_actor_(NULL),
network_screen_actor_(NULL),
eula_screen_actor_(NULL),
diff --git a/chrome/browser/ui/webui/chromeos/login/oobe_ui.h b/chrome/browser/ui/webui/chromeos/login/oobe_ui.h
index 5f3d0a6..5d0a8c3 100644
--- a/chrome/browser/ui/webui/chromeos/login/oobe_ui.h
+++ b/chrome/browser/ui/webui/chromeos/login/oobe_ui.h
@@ -8,6 +8,7 @@
#include "chrome/browser/chromeos/login/oobe_display.h"
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
namespace base {
class DictionaryValue;
@@ -27,7 +28,7 @@ namespace chromeos {
// - eula screen (CrOS (+ OEM) EULA content/TPM password/crash reporting).
// - update screen.
class OobeUI : public OobeDisplay,
- public WebUI {
+ public WebUI, public content::WebUIController {
public:
explicit OobeUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/chromeos/mobile_setup_ui.cc b/chrome/browser/ui/webui/chromeos/mobile_setup_ui.cc
index 9cefa55..3219e92 100644
--- a/chrome/browser/ui/webui/chromeos/mobile_setup_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/mobile_setup_ui.cc
@@ -1390,12 +1390,11 @@ void MobileSetupHandler::StartActivationOnUIThread() {
////////////////////////////////////////////////////////////////////////////////
MobileSetupUI::MobileSetupUI(WebContents* contents)
- : WebUI(contents),
+ : WebUI(contents, this),
frame_load_observer_(NULL) {
chromeos::CellularNetwork* network = GetCellularNetwork();
std::string service_path = network ? network->service_path() : std::string();
- MobileSetupHandler* handler = new MobileSetupHandler(service_path);
- AddMessageHandler(handler);
+ AddMessageHandler(new MobileSetupHandler(service_path));
MobileSetupUIHTMLSource* html_source =
new MobileSetupUIHTMLSource(service_path);
@@ -1405,7 +1404,6 @@ MobileSetupUI::MobileSetupUI(WebContents* contents)
}
void MobileSetupUI::RenderViewCreated(RenderViewHost* host) {
- WebUI::RenderViewCreated(host);
// Destroyed by the corresponding RenderViewHost.
frame_load_observer_ =
new PortalFrameLoadObserver(AsWeakPtr(), host);
diff --git a/chrome/browser/ui/webui/chromeos/mobile_setup_ui.h b/chrome/browser/ui/webui/chromeos/mobile_setup_ui.h
index 539684c..ddd3881 100644
--- a/chrome/browser/ui/webui/chromeos/mobile_setup_ui.h
+++ b/chrome/browser/ui/webui/chromeos/mobile_setup_ui.h
@@ -8,11 +8,13 @@
#include "base/memory/weak_ptr.h"
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
class PortalFrameLoadObserver;
// A custom WebUI that defines datasource for mobile setup registration page
// that is used in Chrome OS activate modem and perform plan subscription tasks.
class MobileSetupUI : public WebUI,
+ public content::WebUIController,
public base::SupportsWeakPtr<MobileSetupUI> {
public:
explicit MobileSetupUI(content::WebContents* contents);
@@ -20,7 +22,7 @@ class MobileSetupUI : public WebUI,
void OnObserverDeleted();
private:
- // WebUI overrides.
+ // WebUIController overrides.
virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE;
PortalFrameLoadObserver* frame_load_observer_;
diff --git a/chrome/browser/ui/webui/chromeos/proxy_settings_ui.cc b/chrome/browser/ui/webui/chromeos/proxy_settings_ui.cc
index 1d86f02..c12eb1c 100644
--- a/chrome/browser/ui/webui/chromeos/proxy_settings_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/proxy_settings_ui.cc
@@ -69,7 +69,7 @@ void ProxySettingsHTMLSource::StartDataRequest(const std::string& path,
namespace chromeos {
ProxySettingsUI::ProxySettingsUI(WebContents* contents)
- : WebUI(contents),
+ : WebUI(contents, this),
proxy_handler_(new ProxyHandler()) {
// |localized_strings| will be owned by ProxySettingsHTMLSource.
DictionaryValue* localized_strings = new DictionaryValue();
diff --git a/chrome/browser/ui/webui/chromeos/proxy_settings_ui.h b/chrome/browser/ui/webui/chromeos/proxy_settings_ui.h
index e2e3a0a..5cb9eca 100644
--- a/chrome/browser/ui/webui/chromeos/proxy_settings_ui.h
+++ b/chrome/browser/ui/webui/chromeos/proxy_settings_ui.h
@@ -8,6 +8,7 @@
#include "chrome/browser/ui/webui/options/options_ui.h"
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
namespace chromeos {
@@ -15,7 +16,7 @@ class ProxyHandler;
// A WebUI to host proxy settings splitted from settings page for better
// performance.
-class ProxySettingsUI : public WebUI,
+class ProxySettingsUI : public WebUI, public content::WebUIController,
public OptionsPageUIHandlerHost {
public:
explicit ProxySettingsUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/chromeos/register_page_ui.cc b/chrome/browser/ui/webui/chromeos/register_page_ui.cc
index 2dfad53..5d19283 100644
--- a/chrome/browser/ui/webui/chromeos/register_page_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/register_page_ui.cc
@@ -294,7 +294,7 @@ void RegisterPageHandler::SendUserInfo() {
//
////////////////////////////////////////////////////////////////////////////////
-RegisterPageUI::RegisterPageUI(WebContents* contents) : WebUI(contents) {
+RegisterPageUI::RegisterPageUI(WebContents* contents) : WebUI(contents, this) {
RegisterPageHandler* handler = new RegisterPageHandler();
AddMessageHandler(handler);
RegisterPageUIHTMLSource* html_source = new RegisterPageUIHTMLSource();
diff --git a/chrome/browser/ui/webui/chromeos/register_page_ui.h b/chrome/browser/ui/webui/chromeos/register_page_ui.h
index 6e53b93..f4401c4 100644
--- a/chrome/browser/ui/webui/chromeos/register_page_ui.h
+++ b/chrome/browser/ui/webui/chromeos/register_page_ui.h
@@ -7,10 +7,11 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
// A custom WebUI that defines datasource for host registration page that
// is used in Chrome OS to register product on first sign in.
-class RegisterPageUI : public WebUI {
+class RegisterPageUI : public WebUI, public content::WebUIController {
public:
explicit RegisterPageUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/chromeos/sim_unlock_ui.cc b/chrome/browser/ui/webui/chromeos/sim_unlock_ui.cc
index 37444c8..6058ff5 100644
--- a/chrome/browser/ui/webui/chromeos/sim_unlock_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/sim_unlock_ui.cc
@@ -662,7 +662,7 @@ void SimUnlockHandler::UpdatePage(const chromeos::NetworkDevice* cellular,
// SimUnlockUI -----------------------------------------------------------------
-SimUnlockUI::SimUnlockUI(WebContents* contents) : WebUI(contents) {
+SimUnlockUI::SimUnlockUI(WebContents* contents) : WebUI(contents, this) {
SimUnlockHandler* handler = new SimUnlockHandler();
AddMessageHandler(handler);
SimUnlockUIHTMLSource* html_source = new SimUnlockUIHTMLSource();
diff --git a/chrome/browser/ui/webui/chromeos/sim_unlock_ui.h b/chrome/browser/ui/webui/chromeos/sim_unlock_ui.h
index 0036e64..6bed044 100644
--- a/chrome/browser/ui/webui/chromeos/sim_unlock_ui.h
+++ b/chrome/browser/ui/webui/chromeos/sim_unlock_ui.h
@@ -7,6 +7,7 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
namespace chromeos {
@@ -14,7 +15,7 @@ namespace chromeos {
// in Chrome OS for specific tasks:
// - Unlock SIM card (enter PIN/PUK codes).
// - Display "SIM card is blocked" message when there're no PUK tries left.
-class SimUnlockUI : public WebUI {
+class SimUnlockUI : public WebUI, public content::WebUIController {
public:
explicit SimUnlockUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/chromeos/system_info_ui.cc b/chrome/browser/ui/webui/chromeos/system_info_ui.cc
index bf67039..415416d 100644
--- a/chrome/browser/ui/webui/chromeos/system_info_ui.cc
+++ b/chrome/browser/ui/webui/chromeos/system_info_ui.cc
@@ -172,7 +172,7 @@ void SystemInfoHandler::RegisterMessages() {
//
////////////////////////////////////////////////////////////////////////////////
-SystemInfoUI::SystemInfoUI(WebContents* contents) : WebUI(contents) {
+SystemInfoUI::SystemInfoUI(WebContents* contents) : WebUI(contents, this) {
SystemInfoHandler* handler = new SystemInfoHandler();
AddMessageHandler(handler);
SystemInfoUIHTMLSource* html_source = new SystemInfoUIHTMLSource();
diff --git a/chrome/browser/ui/webui/chromeos/system_info_ui.h b/chrome/browser/ui/webui/chromeos/system_info_ui.h
index 192f718..3e038bd 100644
--- a/chrome/browser/ui/webui/chromeos/system_info_ui.h
+++ b/chrome/browser/ui/webui/chromeos/system_info_ui.h
@@ -7,8 +7,9 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
-class SystemInfoUI : public WebUI {
+class SystemInfoUI : public WebUI, public content::WebUIController {
public:
explicit SystemInfoUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/conflicts_ui.cc b/chrome/browser/ui/webui/conflicts_ui.cc
index 83e790e..6094cf4 100644
--- a/chrome/browser/ui/webui/conflicts_ui.cc
+++ b/chrome/browser/ui/webui/conflicts_ui.cc
@@ -159,7 +159,7 @@ void ConflictsDOMHandler::Observe(int type,
//
///////////////////////////////////////////////////////////////////////////////
-ConflictsUI::ConflictsUI(WebContents* contents) : WebUI(contents) {
+ConflictsUI::ConflictsUI(WebContents* contents) : WebUI(contents, this) {
content::RecordAction(UserMetricsAction("ViewAboutConflicts"));
AddMessageHandler(new ConflictsDOMHandler());
diff --git a/chrome/browser/ui/webui/conflicts_ui.h b/chrome/browser/ui/webui/conflicts_ui.h
index f265f58..3f26af7 100644
--- a/chrome/browser/ui/webui/conflicts_ui.h
+++ b/chrome/browser/ui/webui/conflicts_ui.h
@@ -7,13 +7,14 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
#if defined(OS_WIN)
class RefCountedMemory;
// The Web UI handler for about:conflicts.
-class ConflictsUI : public WebUI {
+class ConflictsUI : public WebUI, public content::WebUIController {
public:
explicit ConflictsUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/constrained_html_ui.cc b/chrome/browser/ui/webui/constrained_html_ui.cc
index cc7c2ef..c4b961f 100644
--- a/chrome/browser/ui/webui/constrained_html_ui.cc
+++ b/chrome/browser/ui/webui/constrained_html_ui.cc
@@ -25,15 +25,13 @@ static base::LazyInstance<base::PropertyAccessor<ConstrainedHtmlUIDelegate*> >
g_constrained_html_ui_property_accessor = LAZY_INSTANCE_INITIALIZER;
ConstrainedHtmlUI::ConstrainedHtmlUI(WebContents* contents)
- : WebUI(contents) {
+ : WebUI(contents, this) {
}
ConstrainedHtmlUI::~ConstrainedHtmlUI() {
}
void ConstrainedHtmlUI::RenderViewCreated(RenderViewHost* render_view_host) {
- WebUI::RenderViewCreated(render_view_host);
-
ConstrainedHtmlUIDelegate* delegate = GetConstrainedDelegate();
if (!delegate)
return;
diff --git a/chrome/browser/ui/webui/constrained_html_ui.h b/chrome/browser/ui/webui/constrained_html_ui.h
index a6d7d49..46519a2 100644
--- a/chrome/browser/ui/webui/constrained_html_ui.h
+++ b/chrome/browser/ui/webui/constrained_html_ui.h
@@ -7,6 +7,7 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
class ConstrainedWindow;
class HtmlDialogUIDelegate;
@@ -47,11 +48,12 @@ class ConstrainedHtmlUIDelegate {
//
// Since ConstrainedWindow requires platform-specific delegate
// implementations, this class is just a factory stub.
-class ConstrainedHtmlUI : public WebUI {
+class ConstrainedHtmlUI : public WebUI, public content::WebUIController {
public:
explicit ConstrainedHtmlUI(content::WebContents* contents);
virtual ~ConstrainedHtmlUI();
+ // WebUIController implementation:
virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE;
// Create a constrained HTML dialog. The actual object that gets created
diff --git a/chrome/browser/ui/webui/crashes_ui.cc b/chrome/browser/ui/webui/crashes_ui.cc
index 813ec8b..c0c1ed8 100644
--- a/chrome/browser/ui/webui/crashes_ui.cc
+++ b/chrome/browser/ui/webui/crashes_ui.cc
@@ -159,7 +159,7 @@ void CrashesDOMHandler::UpdateUI() {
//
///////////////////////////////////////////////////////////////////////////////
-CrashesUI::CrashesUI(WebContents* contents) : WebUI(contents) {
+CrashesUI::CrashesUI(WebContents* contents) : WebUI(contents, this) {
AddMessageHandler(new CrashesDOMHandler());
// Set up the chrome://crashes/ source.
diff --git a/chrome/browser/ui/webui/crashes_ui.h b/chrome/browser/ui/webui/crashes_ui.h
index 2501a70..4b7609d 100644
--- a/chrome/browser/ui/webui/crashes_ui.h
+++ b/chrome/browser/ui/webui/crashes_ui.h
@@ -7,10 +7,11 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
class RefCountedMemory;
-class CrashesUI : public WebUI {
+class CrashesUI : public WebUI, public content::WebUIController {
public:
explicit CrashesUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/devtools_ui.cc b/chrome/browser/ui/webui/devtools_ui.cc
index d9d6229..f870a8a 100644
--- a/chrome/browser/ui/webui/devtools_ui.cc
+++ b/chrome/browser/ui/webui/devtools_ui.cc
@@ -100,7 +100,7 @@ void DevToolsUI::RegisterDevToolsDataSource(Profile* profile) {
}
}
-DevToolsUI::DevToolsUI(WebContents* contents) : WebUI(contents) {
+DevToolsUI::DevToolsUI(WebContents* contents) : WebUI(contents, this) {
DevToolsDataSource* data_source = new DevToolsDataSource();
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext());
profile->GetChromeURLDataManager()->AddDataSource(data_source);
@@ -108,5 +108,4 @@ DevToolsUI::DevToolsUI(WebContents* contents) : WebUI(contents) {
void DevToolsUI::RenderViewCreated(RenderViewHost* render_view_host) {
content::DevToolsClientHost::SetupDevToolsFrontendClient(render_view_host);
- WebUI::RenderViewCreated(render_view_host);
}
diff --git a/chrome/browser/ui/webui/devtools_ui.h b/chrome/browser/ui/webui/devtools_ui.h
index 567b47a..0643fff 100644
--- a/chrome/browser/ui/webui/devtools_ui.h
+++ b/chrome/browser/ui/webui/devtools_ui.h
@@ -7,16 +7,17 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
class Profile;
-class DevToolsUI : public WebUI {
+class DevToolsUI : public WebUI, public content::WebUIController {
public:
static void RegisterDevToolsDataSource(Profile* profile);
explicit DevToolsUI(content::WebContents* contents);
- // WebUI
+ // WebUIController
virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE;
private:
diff --git a/chrome/browser/ui/webui/downloads_ui.cc b/chrome/browser/ui/webui/downloads_ui.cc
index f930f7ab..8b965d7 100644
--- a/chrome/browser/ui/webui/downloads_ui.cc
+++ b/chrome/browser/ui/webui/downloads_ui.cc
@@ -84,7 +84,7 @@ ChromeWebUIDataSource* CreateDownloadsUIHTMLSource() {
//
///////////////////////////////////////////////////////////////////////////////
-DownloadsUI::DownloadsUI(WebContents* contents) : WebUI(contents) {
+DownloadsUI::DownloadsUI(WebContents* contents) : WebUI(contents, this) {
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext());
DownloadManager* dlm =
DownloadServiceFactory::GetForProfile(profile)->GetDownloadManager();
diff --git a/chrome/browser/ui/webui/downloads_ui.h b/chrome/browser/ui/webui/downloads_ui.h
index 4ee9f1a..8489c85 100644
--- a/chrome/browser/ui/webui/downloads_ui.h
+++ b/chrome/browser/ui/webui/downloads_ui.h
@@ -7,10 +7,11 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
class RefCountedMemory;
-class DownloadsUI : public WebUI {
+class DownloadsUI : public WebUI, public content::WebUIController {
public:
explicit DownloadsUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/extensions/extensions_ui.cc b/chrome/browser/ui/webui/extensions/extensions_ui.cc
index 1b5020a..0450e44 100644
--- a/chrome/browser/ui/webui/extensions/extensions_ui.cc
+++ b/chrome/browser/ui/webui/extensions/extensions_ui.cc
@@ -30,7 +30,7 @@ ChromeWebUIDataSource* CreateExtensionsHTMLSource() {
} // namespace
-ExtensionsUI::ExtensionsUI(WebContents* contents) : WebUI(contents) {
+ExtensionsUI::ExtensionsUI(WebContents* contents) : WebUI(contents, this) {
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext());
ChromeWebUIDataSource* source = CreateExtensionsHTMLSource();
profile->GetChromeURLDataManager()->AddDataSource(source);
diff --git a/chrome/browser/ui/webui/extensions/extensions_ui.h b/chrome/browser/ui/webui/extensions/extensions_ui.h
index d5be20a..476a5a9 100644
--- a/chrome/browser/ui/webui/extensions/extensions_ui.h
+++ b/chrome/browser/ui/webui/extensions/extensions_ui.h
@@ -7,8 +7,9 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
-class ExtensionsUI : public WebUI {
+class ExtensionsUI : public WebUI, public content::WebUIController {
public:
explicit ExtensionsUI(content::WebContents* contents);
virtual ~ExtensionsUI();
diff --git a/chrome/browser/ui/webui/flags_ui.cc b/chrome/browser/ui/webui/flags_ui.cc
index f203602..7901e1b 100644
--- a/chrome/browser/ui/webui/flags_ui.cc
+++ b/chrome/browser/ui/webui/flags_ui.cc
@@ -159,7 +159,7 @@ void FlagsDOMHandler::HandleRestartBrowser(const ListValue* args) {
//
///////////////////////////////////////////////////////////////////////////////
-FlagsUI::FlagsUI(WebContents* contents) : WebUI(contents) {
+FlagsUI::FlagsUI(WebContents* contents) : WebUI(contents, this) {
AddMessageHandler(new FlagsDOMHandler());
// Set up the about:flags source.
diff --git a/chrome/browser/ui/webui/flags_ui.h b/chrome/browser/ui/webui/flags_ui.h
index b559568..a3b7642 100644
--- a/chrome/browser/ui/webui/flags_ui.h
+++ b/chrome/browser/ui/webui/flags_ui.h
@@ -7,11 +7,12 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
class PrefService;
class RefCountedMemory;
-class FlagsUI : public WebUI {
+class FlagsUI : public WebUI, public content::WebUIController {
public:
explicit FlagsUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/flash_ui.cc b/chrome/browser/ui/webui/flash_ui.cc
index 726e59c..61b57ab 100644
--- a/chrome/browser/ui/webui/flash_ui.cc
+++ b/chrome/browser/ui/webui/flash_ui.cc
@@ -367,7 +367,7 @@ void FlashDOMHandler::MaybeRespondToPage() {
//
///////////////////////////////////////////////////////////////////////////////
-FlashUI::FlashUI(WebContents* contents) : WebUI(contents) {
+FlashUI::FlashUI(WebContents* contents) : WebUI(contents, this) {
content::RecordAction(
UserMetricsAction("ViewAboutFlash"));
diff --git a/chrome/browser/ui/webui/flash_ui.h b/chrome/browser/ui/webui/flash_ui.h
index 54c71c5..b02c3d4 100644
--- a/chrome/browser/ui/webui/flash_ui.h
+++ b/chrome/browser/ui/webui/flash_ui.h
@@ -7,11 +7,12 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
class RefCountedMemory;
// The Web UI handler for about:flash.
-class FlashUI : public WebUI {
+class FlashUI : public WebUI, public content::WebUIController {
public:
explicit FlashUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/gpu_internals_ui.cc b/chrome/browser/ui/webui/gpu_internals_ui.cc
index e93ebaf..9f969b4 100644
--- a/chrome/browser/ui/webui/gpu_internals_ui.cc
+++ b/chrome/browser/ui/webui/gpu_internals_ui.cc
@@ -239,7 +239,7 @@ void GpuMessageHandler::OnGpuInfoUpdate() {
//
////////////////////////////////////////////////////////////////////////////////
-GpuInternalsUI::GpuInternalsUI(WebContents* contents) : WebUI(contents) {
+GpuInternalsUI::GpuInternalsUI(WebContents* contents) : WebUI(contents, this) {
AddMessageHandler(new GpuMessageHandler());
// Set up the chrome://gpu-internals/ source.
diff --git a/chrome/browser/ui/webui/gpu_internals_ui.h b/chrome/browser/ui/webui/gpu_internals_ui.h
index c820b38..66dffcd 100644
--- a/chrome/browser/ui/webui/gpu_internals_ui.h
+++ b/chrome/browser/ui/webui/gpu_internals_ui.h
@@ -7,8 +7,9 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
-class GpuInternalsUI : public WebUI {
+class GpuInternalsUI : public WebUI, public content::WebUIController {
public:
explicit GpuInternalsUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/history_ui.cc b/chrome/browser/ui/webui/history_ui.cc
index cdd156b..dd8277c 100644
--- a/chrome/browser/ui/webui/history_ui.cc
+++ b/chrome/browser/ui/webui/history_ui.cc
@@ -423,7 +423,7 @@ void BrowsingHistoryHandler::Observe(
//
////////////////////////////////////////////////////////////////////////////////
-HistoryUI::HistoryUI(WebContents* contents) : WebUI(contents) {
+HistoryUI::HistoryUI(WebContents* contents) : WebUI(contents, this) {
AddMessageHandler(new BrowsingHistoryHandler());
HistoryUIHTMLSource* html_source = new HistoryUIHTMLSource();
diff --git a/chrome/browser/ui/webui/history_ui.h b/chrome/browser/ui/webui/history_ui.h
index e03dd09..b576e79 100644
--- a/chrome/browser/ui/webui/history_ui.h
+++ b/chrome/browser/ui/webui/history_ui.h
@@ -14,10 +14,9 @@
#include "chrome/browser/ui/webui/chrome_url_data_manager.h"
#include "content/browser/webui/web_ui.h"
#include "content/public/browser/notification_registrar.h"
+#include "content/public/browser/web_ui_controller.h"
#include "content/public/browser/web_ui_message_handler.h"
-class GURL;
-
// The handler for Javascript messages related to the "history" view.
class BrowsingHistoryHandler : public content::WebUIMessageHandler,
public content::NotificationObserver {
@@ -78,7 +77,7 @@ class BrowsingHistoryHandler : public content::WebUIMessageHandler,
DISALLOW_COPY_AND_ASSIGN(BrowsingHistoryHandler);
};
-class HistoryUI : public WebUI {
+class HistoryUI : public WebUI, public content::WebUIController {
public:
explicit HistoryUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/html_dialog_ui.cc b/chrome/browser/ui/webui/html_dialog_ui.cc
index 31abaa1..e207538 100644
--- a/chrome/browser/ui/webui/html_dialog_ui.cc
+++ b/chrome/browser/ui/webui/html_dialog_ui.cc
@@ -23,7 +23,7 @@ static base::LazyInstance<base::PropertyAccessor<HtmlDialogUIDelegate*> >
g_html_dialog_ui_property_accessor = LAZY_INSTANCE_INITIALIZER;
HtmlDialogUI::HtmlDialogUI(WebContents* web_contents)
- : WebUI(web_contents) {
+ : WebUI(web_contents, this) {
}
HtmlDialogUI::~HtmlDialogUI() {
@@ -77,8 +77,6 @@ void HtmlDialogUI::RenderViewCreated(RenderViewHost* render_view_host) {
chrome::NOTIFICATION_HTML_DIALOG_SHOWN,
content::Source<WebUI>(this),
content::Details<RenderViewHost>(render_view_host));
-
- WebUI::RenderViewCreated(render_view_host);
}
void HtmlDialogUI::OnDialogClosed(const ListValue* args) {
diff --git a/chrome/browser/ui/webui/html_dialog_ui.h b/chrome/browser/ui/webui/html_dialog_ui.h
index 3253c91..322242e 100644
--- a/chrome/browser/ui/webui/html_dialog_ui.h
+++ b/chrome/browser/ui/webui/html_dialog_ui.h
@@ -11,6 +11,7 @@
#include "base/string16.h"
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
#include "googleurl/src/gurl.h"
#include "ui/base/ui_base_types.h"
#include "ui/gfx/rect.h"
@@ -95,7 +96,7 @@ class HtmlDialogUIDelegate {
// there and call it back. This is a bit of a hack to allow the dialog to pass
// its delegate to the Web UI without having nasty accessors on the WebContents.
// The correct design using RVH directly would avoid all of this.
-class HtmlDialogUI : public WebUI {
+class HtmlDialogUI : public WebUI, public content::WebUIController {
public:
struct HtmlDialogParams {
// The URL for the content that will be loaded in the dialog.
@@ -120,7 +121,7 @@ class HtmlDialogUI : public WebUI {
static base::PropertyAccessor<HtmlDialogUIDelegate*>& GetPropertyAccessor();
private:
- // WebUI
+ // WebUIController
virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE;
// JS message handler.
diff --git a/chrome/browser/ui/webui/keyboard_ui.cc b/chrome/browser/ui/webui/keyboard_ui.cc
index 5b21b62..1644d1a 100644
--- a/chrome/browser/ui/webui/keyboard_ui.cc
+++ b/chrome/browser/ui/webui/keyboard_ui.cc
@@ -19,7 +19,7 @@ using content::WebContents;
// KeyboardUI
KeyboardUI::KeyboardUI(WebContents* contents)
- : WebUI(contents) {
+ : WebUI(contents, this) {
KeyboardHTMLSource* html_source = new KeyboardHTMLSource();
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext());
profile->GetChromeURLDataManager()->AddDataSource(html_source);
diff --git a/chrome/browser/ui/webui/keyboard_ui.h b/chrome/browser/ui/webui/keyboard_ui.h
index 82cd495..dc6eaba 100644
--- a/chrome/browser/ui/webui/keyboard_ui.h
+++ b/chrome/browser/ui/webui/keyboard_ui.h
@@ -10,9 +10,10 @@
#include "chrome/browser/ui/webui/chrome_url_data_manager.h"
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
// The TabContents used for the keyboard page.
-class KeyboardUI : public WebUI {
+class KeyboardUI : public WebUI, public content::WebUIController {
public:
explicit KeyboardUI(content::WebContents* manager);
virtual ~KeyboardUI();
diff --git a/chrome/browser/ui/webui/media/media_internals_ui.cc b/chrome/browser/ui/webui/media/media_internals_ui.cc
index 3fdc900..92c175f 100644
--- a/chrome/browser/ui/webui/media/media_internals_ui.cc
+++ b/chrome/browser/ui/webui/media/media_internals_ui.cc
@@ -39,7 +39,7 @@ ChromeWebUIDataSource* CreateMediaInternalsHTMLSource() {
////////////////////////////////////////////////////////////////////////////////
MediaInternalsUI::MediaInternalsUI(WebContents* contents)
- : WebUI(contents) {
+ : WebUI(contents, this) {
AddMessageHandler(new MediaInternalsMessageHandler());
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext());
diff --git a/chrome/browser/ui/webui/media/media_internals_ui.h b/chrome/browser/ui/webui/media/media_internals_ui.h
index 9e31f24..b3951de 100644
--- a/chrome/browser/ui/webui/media/media_internals_ui.h
+++ b/chrome/browser/ui/webui/media/media_internals_ui.h
@@ -7,9 +7,10 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
// The implementation for the chrome://media-internals page.
-class MediaInternalsUI : public WebUI {
+class MediaInternalsUI : public WebUI, public content::WebUIController {
public:
explicit MediaInternalsUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc b/chrome/browser/ui/webui/net_internals/net_internals_ui.cc
index 028ad48..b19a6c4 100644
--- a/chrome/browser/ui/webui/net_internals/net_internals_ui.cc
+++ b/chrome/browser/ui/webui/net_internals/net_internals_ui.cc
@@ -1637,7 +1637,7 @@ Value* NetInternalsUI::GetConstants() {
return constants_dict;
}
-NetInternalsUI::NetInternalsUI(WebContents* contents) : WebUI(contents) {
+NetInternalsUI::NetInternalsUI(WebContents* contents) : WebUI(contents, this) {
AddMessageHandler(new NetInternalsMessageHandler());
// Set up the chrome://net-internals/ source.
diff --git a/chrome/browser/ui/webui/net_internals/net_internals_ui.h b/chrome/browser/ui/webui/net_internals/net_internals_ui.h
index 948758d..11b5c51 100644
--- a/chrome/browser/ui/webui/net_internals/net_internals_ui.h
+++ b/chrome/browser/ui/webui/net_internals/net_internals_ui.h
@@ -7,12 +7,13 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
namespace base {
class Value;
}
-class NetInternalsUI : public WebUI {
+class NetInternalsUI : public WebUI, public content::WebUIController {
public:
explicit NetInternalsUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/network_action_predictor/network_action_predictor_ui.cc b/chrome/browser/ui/webui/network_action_predictor/network_action_predictor_ui.cc
index 877b5b2..36fdd46 100644
--- a/chrome/browser/ui/webui/network_action_predictor/network_action_predictor_ui.cc
+++ b/chrome/browser/ui/webui/network_action_predictor/network_action_predictor_ui.cc
@@ -26,7 +26,7 @@ ChromeWebUIDataSource* CreateNetworkActionPredictorUIHTMLSource() {
NetworkActionPredictorUI::NetworkActionPredictorUI(
content::WebContents* contents)
- : WebUI(contents) {
+ : WebUI(contents, this) {
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext());
AddMessageHandler(new NetworkActionPredictorDOMHandler(profile));
profile->GetChromeURLDataManager()->AddDataSource(
diff --git a/chrome/browser/ui/webui/network_action_predictor/network_action_predictor_ui.h b/chrome/browser/ui/webui/network_action_predictor/network_action_predictor_ui.h
index 185ab87..68d4115 100644
--- a/chrome/browser/ui/webui/network_action_predictor/network_action_predictor_ui.h
+++ b/chrome/browser/ui/webui/network_action_predictor/network_action_predictor_ui.h
@@ -7,8 +7,9 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
-class NetworkActionPredictorUI : public WebUI {
+class NetworkActionPredictorUI : public WebUI, public content::WebUIController {
public:
explicit NetworkActionPredictorUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/ntp/new_tab_ui.cc b/chrome/browser/ui/webui/ntp/new_tab_ui.cc
index 36e0d21..3b76dc9 100644
--- a/chrome/browser/ui/webui/ntp/new_tab_ui.cc
+++ b/chrome/browser/ui/webui/ntp/new_tab_ui.cc
@@ -75,7 +75,7 @@ static base::LazyInstance<std::set<const WebUI*> > g_live_new_tabs;
// NewTabUI
NewTabUI::NewTabUI(WebContents* contents)
- : WebUI(contents) {
+ : WebUI(contents, this) {
g_live_new_tabs.Pointer()->insert(this);
// Override some options on the Web UI.
hide_favicon_ = true;
@@ -172,12 +172,10 @@ bool NewTabUI::CanShowBookmarkBar() const {
void NewTabUI::RenderViewCreated(RenderViewHost* render_view_host) {
StartTimingPaint(render_view_host);
- WebUI::RenderViewCreated(render_view_host);
}
void NewTabUI::RenderViewReused(RenderViewHost* render_view_host) {
StartTimingPaint(render_view_host);
- WebUI::RenderViewReused(render_view_host);
}
void NewTabUI::Observe(int type,
diff --git a/chrome/browser/ui/webui/ntp/new_tab_ui.h b/chrome/browser/ui/webui/ntp/new_tab_ui.h
index e8c07cd..c2d1cc9 100644
--- a/chrome/browser/ui/webui/ntp/new_tab_ui.h
+++ b/chrome/browser/ui/webui/ntp/new_tab_ui.h
@@ -16,13 +16,14 @@
#include "content/browser/webui/web_ui.h"
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
+#include "content/public/browser/web_ui_controller.h"
class GURL;
class PrefService;
class Profile;
// The TabContents used for the New Tab page.
-class NewTabUI : public WebUI,
+class NewTabUI : public WebUI, public content::WebUIController,
public content::NotificationObserver {
public:
explicit NewTabUI(content::WebContents* manager);
@@ -42,8 +43,7 @@ class NewTabUI : public WebUI,
// The current preference version.
static int current_pref_version() { return current_pref_version_; }
- // Override WebUI methods so we can hook up the paint timer to the render
- // view host.
+ // WebUIController implementation:
virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE;
virtual void RenderViewReused(RenderViewHost* render_view_host) OVERRIDE;
diff --git a/chrome/browser/ui/webui/options/options_ui.cc b/chrome/browser/ui/webui/options/options_ui.cc
index e9a9dd8..e20419b 100644
--- a/chrome/browser/ui/webui/options/options_ui.cc
+++ b/chrome/browser/ui/webui/options/options_ui.cc
@@ -199,7 +199,7 @@ void OptionsPageUIHandler::RegisterTitle(DictionaryValue* localized_strings,
////////////////////////////////////////////////////////////////////////////////
OptionsUI::OptionsUI(WebContents* contents)
- : WebUI(contents),
+ : WebUI(contents, this),
initialized_handlers_(false) {
DictionaryValue* localized_strings = new DictionaryValue();
@@ -302,12 +302,10 @@ OptionsUI::~OptionsUI() {
// Override.
void OptionsUI::RenderViewCreated(RenderViewHost* render_view_host) {
SetCommandLineString(render_view_host);
- WebUI::RenderViewCreated(render_view_host);
}
void OptionsUI::RenderViewReused(RenderViewHost* render_view_host) {
SetCommandLineString(render_view_host);
- WebUI::RenderViewReused(render_view_host);
}
void OptionsUI::DidBecomeActiveForReusedRenderView() {
@@ -318,8 +316,6 @@ void OptionsUI::DidBecomeActiveForReusedRenderView() {
// happens, call reinitializeCore (which is a no-op unless the DOM was already
// initialized).
CallJavascriptFunction("OptionsPage.reinitializeCore");
-
- WebUI::DidBecomeActiveForReusedRenderView();
}
// static
diff --git a/chrome/browser/ui/webui/options/options_ui.h b/chrome/browser/ui/webui/options/options_ui.h
index 7b4f6af..fbb99f6 100644
--- a/chrome/browser/ui/webui/options/options_ui.h
+++ b/chrome/browser/ui/webui/options/options_ui.h
@@ -15,6 +15,7 @@
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/notification_types.h"
+#include "content/public/browser/web_ui_controller.h"
#include "content/public/browser/web_ui_message_handler.h"
// The base class handler of Javascript messages of options pages.
@@ -79,7 +80,7 @@ class OptionsPageUIHandlerHost {
};
// The WebUI for chrome:settings.
-class OptionsUI : public WebUI,
+class OptionsUI : public WebUI, public content::WebUIController,
public OptionsPageUIHandlerHost {
public:
explicit OptionsUI(content::WebContents* contents);
@@ -87,7 +88,7 @@ class OptionsUI : public WebUI,
static RefCountedMemory* GetFaviconResourceBytes();
- // WebUI implementation.
+ // WebUIController implementation.
virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE;
virtual void RenderViewReused(RenderViewHost* render_view_host) OVERRIDE;
virtual void DidBecomeActiveForReusedRenderView() OVERRIDE;
diff --git a/chrome/browser/ui/webui/options2/options_ui2.cc b/chrome/browser/ui/webui/options2/options_ui2.cc
index a56f512..c679d976 100644
--- a/chrome/browser/ui/webui/options2/options_ui2.cc
+++ b/chrome/browser/ui/webui/options2/options_ui2.cc
@@ -196,7 +196,7 @@ void OptionsPageUIHandler::RegisterTitle(DictionaryValue* localized_strings,
////////////////////////////////////////////////////////////////////////////////
OptionsUI::OptionsUI(WebContents* contents)
- : WebUI(contents),
+ : WebUI(contents, this),
initialized_handlers_(false) {
DictionaryValue* localized_strings = new DictionaryValue();
@@ -294,15 +294,12 @@ OptionsUI::~OptionsUI() {
}
}
-// Override.
void OptionsUI::RenderViewCreated(RenderViewHost* render_view_host) {
SetCommandLineString(render_view_host);
- WebUI::RenderViewCreated(render_view_host);
}
void OptionsUI::RenderViewReused(RenderViewHost* render_view_host) {
SetCommandLineString(render_view_host);
- WebUI::RenderViewReused(render_view_host);
}
void OptionsUI::DidBecomeActiveForReusedRenderView() {
@@ -313,8 +310,6 @@ void OptionsUI::DidBecomeActiveForReusedRenderView() {
// happens, call reinitializeCore (which is a no-op unless the DOM was already
// initialized).
CallJavascriptFunction("OptionsPage.reinitializeCore");
-
- WebUI::DidBecomeActiveForReusedRenderView();
}
// static
diff --git a/chrome/browser/ui/webui/options2/options_ui2.h b/chrome/browser/ui/webui/options2/options_ui2.h
index f443c21..8a4885a 100644
--- a/chrome/browser/ui/webui/options2/options_ui2.h
+++ b/chrome/browser/ui/webui/options2/options_ui2.h
@@ -15,6 +15,7 @@
#include "content/public/browser/notification_observer.h"
#include "content/public/browser/notification_registrar.h"
#include "content/public/browser/notification_types.h"
+#include "content/public/browser/web_ui_controller.h"
#include "content/public/browser/web_ui_message_handler.h"
namespace options2 {
@@ -81,7 +82,7 @@ class OptionsPageUIHandlerHost {
};
// The WebUI for chrome:settings-frame.
-class OptionsUI : public WebUI,
+class OptionsUI : public WebUI, public content::WebUIController,
public OptionsPageUIHandlerHost {
public:
explicit OptionsUI(content::WebContents* contents);
@@ -89,7 +90,7 @@ class OptionsUI : public WebUI,
static RefCountedMemory* GetFaviconResourceBytes();
- // WebUI implementation.
+ // WebUIController implementation.
virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE;
virtual void RenderViewReused(RenderViewHost* render_view_host) OVERRIDE;
virtual void DidBecomeActiveForReusedRenderView() OVERRIDE;
diff --git a/chrome/browser/ui/webui/plugins_ui.cc b/chrome/browser/ui/webui/plugins_ui.cc
index be3bb9d..d8db51f 100644
--- a/chrome/browser/ui/webui/plugins_ui.cc
+++ b/chrome/browser/ui/webui/plugins_ui.cc
@@ -374,7 +374,7 @@ void PluginsDOMHandler::PluginsLoaded(const std::vector<PluginGroup>& groups) {
//
///////////////////////////////////////////////////////////////////////////////
-PluginsUI::PluginsUI(WebContents* contents) : WebUI(contents) {
+PluginsUI::PluginsUI(WebContents* contents) : WebUI(contents, this) {
AddMessageHandler(new PluginsDOMHandler());
// Set up the chrome://plugins/ source.
diff --git a/chrome/browser/ui/webui/plugins_ui.h b/chrome/browser/ui/webui/plugins_ui.h
index 3c2b010..1f1ecfc46 100644
--- a/chrome/browser/ui/webui/plugins_ui.h
+++ b/chrome/browser/ui/webui/plugins_ui.h
@@ -7,11 +7,12 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
class PrefService;
class RefCountedMemory;
-class PluginsUI : public WebUI {
+class PluginsUI : public WebUI, public content::WebUIController {
public:
explicit PluginsUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/policy_ui.cc b/chrome/browser/ui/webui/policy_ui.cc
index 875823e..ea470a5 100644
--- a/chrome/browser/ui/webui/policy_ui.cc
+++ b/chrome/browser/ui/webui/policy_ui.cc
@@ -233,7 +233,7 @@ string16 PolicyUIHandler::CreateStatusMessageString(
//
////////////////////////////////////////////////////////////////////////////////
-PolicyUI::PolicyUI(WebContents* contents) : WebUI(contents) {
+PolicyUI::PolicyUI(WebContents* contents) : WebUI(contents, this) {
AddMessageHandler(new PolicyUIHandler);
// Set up the chrome://policy/ source.
diff --git a/chrome/browser/ui/webui/policy_ui.h b/chrome/browser/ui/webui/policy_ui.h
index 943be7e..e59a1a3 100644
--- a/chrome/browser/ui/webui/policy_ui.h
+++ b/chrome/browser/ui/webui/policy_ui.h
@@ -11,6 +11,7 @@
#include "chrome/browser/policy/cloud_policy_subsystem.h"
#include "chrome/browser/policy/configuration_policy_reader.h"
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
#include "content/public/browser/web_ui_message_handler.h"
namespace policy {
@@ -70,7 +71,7 @@ class PolicyUIHandler : public content::WebUIMessageHandler,
};
// The Web UI handler for about:policy.
-class PolicyUI : public WebUI {
+class PolicyUI : public WebUI, public content::WebUIController {
public:
explicit PolicyUI(content::WebContents* contents);
virtual ~PolicyUI();
diff --git a/chrome/browser/ui/webui/profiler_ui.cc b/chrome/browser/ui/webui/profiler_ui.cc
index b42980a..40ad021 100644
--- a/chrome/browser/ui/webui/profiler_ui.cc
+++ b/chrome/browser/ui/webui/profiler_ui.cc
@@ -144,7 +144,7 @@ void ProfilerMessageHandler::OnResetData(const ListValue* list) {
} // namespace
-ProfilerUI::ProfilerUI(WebContents* contents) : WebUI(contents) {
+ProfilerUI::ProfilerUI(WebContents* contents) : WebUI(contents, this) {
ui_weak_ptr_factory_.reset(new base::WeakPtrFactory<ProfilerUI>(this));
ui_weak_ptr_ = ui_weak_ptr_factory_->GetWeakPtr();
diff --git a/chrome/browser/ui/webui/profiler_ui.h b/chrome/browser/ui/webui/profiler_ui.h
index 604d47c..caa486c 100644
--- a/chrome/browser/ui/webui/profiler_ui.h
+++ b/chrome/browser/ui/webui/profiler_ui.h
@@ -10,9 +10,10 @@
#include "base/memory/weak_ptr.h"
#include "base/values.h"
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
// The C++ back-end for the chrome://profiler webui page.
-class ProfilerUI : public WebUI {
+class ProfilerUI : public WebUI, public content::WebUIController {
public:
explicit ProfilerUI(content::WebContents* contents);
virtual ~ProfilerUI();
diff --git a/chrome/browser/ui/webui/quota_internals_ui.cc b/chrome/browser/ui/webui/quota_internals_ui.cc
index 3f05655..d5ab701 100644
--- a/chrome/browser/ui/webui/quota_internals_ui.cc
+++ b/chrome/browser/ui/webui/quota_internals_ui.cc
@@ -37,7 +37,7 @@ ChromeWebUIDataSource* CreateQuotaInternalsHTMLSource() {
} // namespace
QuotaInternalsUI::QuotaInternalsUI(WebContents* contents)
- : WebUI(contents) {
+ : WebUI(contents, this) {
AddMessageHandler(new quota_internals::QuotaInternalsHandler);
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext());
profile->GetChromeURLDataManager()->AddDataSource(
diff --git a/chrome/browser/ui/webui/quota_internals_ui.h b/chrome/browser/ui/webui/quota_internals_ui.h
index dabbda3..786f009 100644
--- a/chrome/browser/ui/webui/quota_internals_ui.h
+++ b/chrome/browser/ui/webui/quota_internals_ui.h
@@ -7,8 +7,9 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
-class QuotaInternalsUI : public WebUI {
+class QuotaInternalsUI : public WebUI, public content::WebUIController {
public:
explicit QuotaInternalsUI(content::WebContents* contents);
virtual ~QuotaInternalsUI() {}
diff --git a/chrome/browser/ui/webui/sessions_ui.cc b/chrome/browser/ui/webui/sessions_ui.cc
index fd04f30..3d45a19 100644
--- a/chrome/browser/ui/webui/sessions_ui.cc
+++ b/chrome/browser/ui/webui/sessions_ui.cc
@@ -257,7 +257,7 @@ void SessionsDOMHandler::UpdateUI() {
//
///////////////////////////////////////////////////////////////////////////////
-SessionsUI::SessionsUI(WebContents* contents) : WebUI(contents) {
+SessionsUI::SessionsUI(WebContents* contents) : WebUI(contents, this) {
AddMessageHandler(new SessionsDOMHandler());
// Set up the chrome://sessions/ source.
diff --git a/chrome/browser/ui/webui/sessions_ui.h b/chrome/browser/ui/webui/sessions_ui.h
index 5a3e489..479e8bf 100644
--- a/chrome/browser/ui/webui/sessions_ui.h
+++ b/chrome/browser/ui/webui/sessions_ui.h
@@ -7,10 +7,11 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
class RefCountedMemory;
-class SessionsUI : public WebUI {
+class SessionsUI : public WebUI, public content::WebUIController {
public:
explicit SessionsUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/sync_internals_ui.cc b/chrome/browser/ui/webui/sync_internals_ui.cc
index 249fd09..a68d380 100644
--- a/chrome/browser/ui/webui/sync_internals_ui.cc
+++ b/chrome/browser/ui/webui/sync_internals_ui.cc
@@ -73,7 +73,7 @@ ProfileSyncService* GetProfileSyncService(Profile* profile) {
} // namespace
SyncInternalsUI::SyncInternalsUI(WebContents* contents)
- : WebUI(contents),
+ : WebUI(contents, this),
weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
// TODO(akalin): Fix.
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext());
@@ -94,9 +94,9 @@ SyncInternalsUI::~SyncInternalsUI() {
}
}
-void SyncInternalsUI::OnWebUISend(const GURL& source_url,
- const std::string& name,
- const ListValue& content) {
+bool SyncInternalsUI::OverrideHandleWebUIMessage(const GURL& source_url,
+ const std::string& name,
+ const ListValue& content) {
scoped_ptr<ListValue> content_copy(content.DeepCopy());
JsArgList args(content_copy.get());
VLOG(1) << "Received message: " << name << " with args "
@@ -122,6 +122,7 @@ void SyncInternalsUI::OnWebUISend(const GURL& source_url,
<< " with args " << args.ToString();
}
}
+ return true;
}
void SyncInternalsUI::HandleJsEvent(
diff --git a/chrome/browser/ui/webui/sync_internals_ui.h b/chrome/browser/ui/webui/sync_internals_ui.h
index 21a7982..bf6567d 100644
--- a/chrome/browser/ui/webui/sync_internals_ui.h
+++ b/chrome/browser/ui/webui/sync_internals_ui.h
@@ -14,20 +14,21 @@
#include "chrome/browser/sync/js/js_event_handler.h"
#include "chrome/browser/sync/js/js_reply_handler.h"
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
namespace browser_sync {
class JsController;
} // namespace browser_sync
// The implementation for the chrome://sync-internals page.
-class SyncInternalsUI : public WebUI,
+class SyncInternalsUI : public WebUI, public content::WebUIController,
public browser_sync::JsEventHandler,
public browser_sync::JsReplyHandler {
public:
explicit SyncInternalsUI(content::WebContents* contents);
virtual ~SyncInternalsUI();
- // WebUI implementation.
+ // WebUIController implementation.
//
// The following messages are processed:
//
@@ -40,9 +41,9 @@ class SyncInternalsUI : public WebUI,
//
// TODO(akalin): Add a simple isSyncEnabled() message and make
// getAboutInfo() be handled by the sync service.
- virtual void OnWebUISend(const GURL& source_url,
- const std::string& name,
- const base::ListValue& args) OVERRIDE;
+ virtual bool OverrideHandleWebUIMessage(const GURL& source_url,
+ const std::string& name,
+ const base::ListValue& args) OVERRIDE;
// browser_sync::JsEventHandler implementation.
virtual void HandleJsEvent(
diff --git a/chrome/browser/ui/webui/sync_internals_ui_unittest.cc b/chrome/browser/ui/webui/sync_internals_ui_unittest.cc
index 9e5fe31..96e41da 100644
--- a/chrome/browser/ui/webui/sync_internals_ui_unittest.cc
+++ b/chrome/browser/ui/webui/sync_internals_ui_unittest.cc
@@ -17,6 +17,7 @@
#include "chrome/test/base/chrome_render_view_host_test_harness.h"
#include "chrome/test/base/profile_mock.h"
#include "content/browser/tab_contents/test_tab_contents.h"
+#include "content/public/browser/web_ui_controller.h"
#include "content/test/test_browser_thread.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -121,7 +122,8 @@ TEST_F(SyncInternalsUITestWithService, OnWebUISendBasic) {
EXPECT_CALL(mock_js_controller_,
ProcessJsMessage(name, HasArgsAsList(args), _));
- test_sync_internals_ui_->OnWebUISend(GURL(), name, args);
+ test_sync_internals_ui_->controller()->OverrideHandleWebUIMessage(
+ GURL(), name, args);
}
// Tests with NULL ProfileSyncService.
@@ -183,7 +185,8 @@ TEST_F(SyncInternalsUITestWithoutService, OnWebUISendBasic) {
args.Append(Value::CreateIntegerValue(5));
// Should drop the message.
- test_sync_internals_ui_->OnWebUISend(GURL(), name, args);
+ test_sync_internals_ui_->controller()->OverrideHandleWebUIMessage(
+ GURL(), name, args);
}
// TODO(lipalani) - add a test case to test about:sync with a non null
@@ -195,7 +198,8 @@ TEST_F(SyncInternalsUITestWithoutService, OnWebUISendGetAboutInfo) {
ExecuteJavascript(ASCIIToUTF16(kAboutInfoCall)));
ListValue args;
- test_sync_internals_ui_->OnWebUISend(GURL(), "getAboutInfo", args);
+ test_sync_internals_ui_->controller()->OverrideHandleWebUIMessage(
+ GURL(), "getAboutInfo", args);
}
} // namespace
diff --git a/chrome/browser/ui/webui/sync_promo/sync_promo_ui.cc b/chrome/browser/ui/webui/sync_promo/sync_promo_ui.cc
index 0bf5cb4..4a88294 100644
--- a/chrome/browser/ui/webui/sync_promo/sync_promo_ui.cc
+++ b/chrome/browser/ui/webui/sync_promo/sync_promo_ui.cc
@@ -105,7 +105,7 @@ bool GetValueForKeyInQuery(const GURL& url, const std::string& search_key,
} // namespace
-SyncPromoUI::SyncPromoUI(WebContents* contents) : WebUI(contents) {
+SyncPromoUI::SyncPromoUI(WebContents* contents) : WebUI(contents, this) {
should_hide_url_ = true;
SyncPromoHandler* handler = new SyncPromoHandler(
diff --git a/chrome/browser/ui/webui/sync_promo/sync_promo_ui.h b/chrome/browser/ui/webui/sync_promo/sync_promo_ui.h
index ec43711..b4764c9 100644
--- a/chrome/browser/ui/webui/sync_promo/sync_promo_ui.h
+++ b/chrome/browser/ui/webui/sync_promo/sync_promo_ui.h
@@ -7,12 +7,13 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
class Profile;
class PrefService;
// The Web UI handler for chrome://syncpromo.
-class SyncPromoUI : public WebUI {
+class SyncPromoUI : public WebUI, public content::WebUIController {
public:
// Constructs a SyncPromoUI. |contents| is the WebContents that this WebUI is
// associated with. |contents| may not be NULL.
diff --git a/chrome/browser/ui/webui/task_manager_ui.cc b/chrome/browser/ui/webui/task_manager_ui.cc
index b569938..998c688 100644
--- a/chrome/browser/ui/webui/task_manager_ui.cc
+++ b/chrome/browser/ui/webui/task_manager_ui.cc
@@ -77,7 +77,7 @@ ChromeWebUIDataSource* CreateTaskManagerUIHTMLSource() {
//
///////////////////////////////////////////////////////////////////////////////
-TaskManagerUI::TaskManagerUI(WebContents* contents) : WebUI(contents) {
+TaskManagerUI::TaskManagerUI(WebContents* contents) : WebUI(contents, this) {
AddMessageHandler(new TaskManagerHandler(TaskManager::GetInstance()));
// Set up the chrome://taskmanager/ source.
diff --git a/chrome/browser/ui/webui/task_manager_ui.h b/chrome/browser/ui/webui/task_manager_ui.h
index 0c51718..4d3425b 100644
--- a/chrome/browser/ui/webui/task_manager_ui.h
+++ b/chrome/browser/ui/webui/task_manager_ui.h
@@ -7,8 +7,9 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
-class TaskManagerUI : public WebUI {
+class TaskManagerUI : public WebUI, public content::WebUIController {
public:
explicit TaskManagerUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/test_chrome_web_ui_factory_browsertest.cc b/chrome/browser/ui/webui/test_chrome_web_ui_factory_browsertest.cc
index ad58c4e..399bf653 100644
--- a/chrome/browser/ui/webui/test_chrome_web_ui_factory_browsertest.cc
+++ b/chrome/browser/ui/webui/test_chrome_web_ui_factory_browsertest.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/ui/webui/chrome_web_ui.h"
#include "chrome/browser/ui/webui/test_chrome_web_ui_factory.h"
+#include "content/public/browser/web_ui_controller.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/ui_test_utils.h"
#include "googleurl/src/gurl.h"
@@ -19,7 +20,8 @@ namespace {
// Returns a new WebUI object for the TabContents from |arg0|.
ACTION(ReturnNewWebUI) {
- return new WebUI(arg0);
+ static content::WebUIController temp_controller;
+ return new WebUI(arg0, &temp_controller);
}
// Mock the TestChromeWebUIFactory::WebUIProvider to prove that we are called as
diff --git a/chrome/browser/ui/webui/tracing_ui.cc b/chrome/browser/ui/webui/tracing_ui.cc
index cab2742..100d8d5 100644
--- a/chrome/browser/ui/webui/tracing_ui.cc
+++ b/chrome/browser/ui/webui/tracing_ui.cc
@@ -411,7 +411,7 @@ void TracingMessageHandler::OnTraceBufferPercentFullReply(float percent_full) {
//
////////////////////////////////////////////////////////////////////////////////
-TracingUI::TracingUI(WebContents* contents) : WebUI(contents) {
+TracingUI::TracingUI(WebContents* contents) : WebUI(contents, this) {
AddMessageHandler(new TracingMessageHandler());
// Set up the chrome://tracing/ source.
diff --git a/chrome/browser/ui/webui/tracing_ui.h b/chrome/browser/ui/webui/tracing_ui.h
index 93d7a7c..1598f70 100644
--- a/chrome/browser/ui/webui/tracing_ui.h
+++ b/chrome/browser/ui/webui/tracing_ui.h
@@ -7,9 +7,10 @@
#pragma once
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
// The C++ back-end for the chrome://tracing webui page.
-class TracingUI : public WebUI {
+class TracingUI : public WebUI, public content::WebUIController {
public:
explicit TracingUI(content::WebContents* contents);
diff --git a/chrome/browser/ui/webui/uber/uber_ui.cc b/chrome/browser/ui/webui/uber/uber_ui.cc
index e2e76b9..5920a6f 100644
--- a/chrome/browser/ui/webui/uber/uber_ui.cc
+++ b/chrome/browser/ui/webui/uber/uber_ui.cc
@@ -50,7 +50,7 @@ ChromeWebUIDataSource* CreateUberHTMLSource() {
} // namespace
-UberUI::UberUI(WebContents* contents) : WebUI(contents) {
+UberUI::UberUI(WebContents* contents) : WebUI(contents, this) {
Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext());
profile->GetChromeURLDataManager()->AddDataSource(CreateUberHTMLSource());
@@ -76,41 +76,36 @@ void UberUI::RegisterSubpage(const std::string& page_url) {
void UberUI::RenderViewCreated(RenderViewHost* render_view_host) {
for (SubpageMap::iterator iter = sub_uis_.begin(); iter != sub_uis_.end();
++iter) {
- iter->second->RenderViewCreated(render_view_host);
+ iter->second->controller()->RenderViewCreated(render_view_host);
}
-
- WebUI::RenderViewCreated(render_view_host);
}
void UberUI::RenderViewReused(RenderViewHost* render_view_host) {
for (SubpageMap::iterator iter = sub_uis_.begin(); iter != sub_uis_.end();
++iter) {
- iter->second->RenderViewReused(render_view_host);
+ iter->second->controller()->RenderViewReused(render_view_host);
}
-
- WebUI::RenderViewReused(render_view_host);
}
void UberUI::DidBecomeActiveForReusedRenderView() {
for (SubpageMap::iterator iter = sub_uis_.begin(); iter != sub_uis_.end();
++iter) {
- iter->second->DidBecomeActiveForReusedRenderView();
+ iter->second->controller()->DidBecomeActiveForReusedRenderView();
}
-
- WebUI::DidBecomeActiveForReusedRenderView();
}
-void UberUI::OnWebUISend(const GURL& source_url,
- const std::string& message,
- const ListValue& args) {
+bool UberUI::OverrideHandleWebUIMessage(const GURL& source_url,
+ const std::string& message,
+ const ListValue& args) {
// Find the appropriate subpage and forward the message.
SubpageMap::iterator subpage = sub_uis_.find(source_url.GetOrigin().spec());
if (subpage == sub_uis_.end()) {
// The message was sent from the uber page itself.
DCHECK_EQ(std::string(chrome::kChromeUIUberHost), source_url.host());
- WebUI::OnWebUISend(source_url, message, args);
- } else {
- // The message was sent from a subpage.
- subpage->second->OnWebUISend(source_url, message, args);
+ return false;
}
+
+ // The message was sent from a subpage.
+ return subpage->second->controller()->OverrideHandleWebUIMessage(
+ source_url, message, args);
}
diff --git a/chrome/browser/ui/webui/uber/uber_ui.h b/chrome/browser/ui/webui/uber/uber_ui.h
index ce077af..5a39bd2 100644
--- a/chrome/browser/ui/webui/uber/uber_ui.h
+++ b/chrome/browser/ui/webui/uber/uber_ui.h
@@ -11,19 +11,20 @@
#include "base/memory/scoped_vector.h"
#include "base/values.h"
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
// The WebUI class for the uber page (chrome://chrome). It manages the UI for
// the uber page (navigation bar and so forth) as well as WebUI objects for
// pages that appear in the uber page.
-class UberUI : public WebUI {
+class UberUI : public WebUI, public content::WebUIController {
public:
explicit UberUI(content::WebContents* contents);
virtual ~UberUI();
- // WebUI implementation.
- virtual void OnWebUISend(const GURL& source_url,
- const std::string& message,
- const ListValue& args) OVERRIDE;
+ // WebUIController implementation.
+ virtual bool OverrideHandleWebUIMessage(const GURL& source_url,
+ const std::string& message,
+ const ListValue& args) OVERRIDE;
// We forward these to |sub_uis_|.
virtual void RenderViewCreated(RenderViewHost* render_view_host) OVERRIDE;
diff --git a/chrome/browser/ui/webui/web_ui_browsertest.cc b/chrome/browser/ui/webui/web_ui_browsertest.cc
index 83939fe..37af967 100644
--- a/chrome/browser/ui/webui/web_ui_browsertest.cc
+++ b/chrome/browser/ui/webui/web_ui_browsertest.cc
@@ -27,6 +27,7 @@
#include "chrome/test/base/ui_test_utils.h"
#include "content/public/browser/navigation_controller.h"
#include "content/public/browser/web_contents.h"
+#include "content/public/browser/web_ui_controller.h"
#include "content/public/browser/web_ui_message_handler.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest-spi.h"
@@ -288,7 +289,8 @@ class MockWebUIProvider : public TestChromeWebUIFactory::WebUIProvider {
// Returns a new WebUI
WebUI* NewWebUI(WebContents* web_contents, const GURL& url) OVERRIDE {
- return new MockWebUI(web_contents);
+ static content::WebUIController temp_controller;
+ return new MockWebUI(web_contents, &temp_controller);
}
private:
diff --git a/chrome/browser/ui/webui/workers_ui.cc b/chrome/browser/ui/webui/workers_ui.cc
index 77982d6..35e4a69 100644
--- a/chrome/browser/ui/webui/workers_ui.cc
+++ b/chrome/browser/ui/webui/workers_ui.cc
@@ -253,7 +253,7 @@ class WorkersUI::WorkerCreationDestructionListener
};
WorkersUI::WorkersUI(WebContents* contents)
- : WebUI(contents),
+ : WebUI(contents, this),
observer_(new WorkerCreationDestructionListener(this)){
AddMessageHandler(new WorkersDOMHandler());
diff --git a/chrome/browser/ui/webui/workers_ui.h b/chrome/browser/ui/webui/workers_ui.h
index 94e80b0..e08686b 100644
--- a/chrome/browser/ui/webui/workers_ui.h
+++ b/chrome/browser/ui/webui/workers_ui.h
@@ -8,8 +8,9 @@
#include "base/memory/ref_counted.h"
#include "content/browser/webui/web_ui.h"
+#include "content/public/browser/web_ui_controller.h"
-class WorkersUI : public WebUI {
+class WorkersUI : public WebUI, public content::WebUIController {
public:
explicit WorkersUI(content::WebContents* contents);
virtual ~WorkersUI();
diff --git a/chrome/renderer/chrome_ppb_pdf_impl.cc b/chrome/renderer/chrome_ppb_pdf_impl.cc
index 880d8c2..ba7e127 100644
--- a/chrome/renderer/chrome_ppb_pdf_impl.cc
+++ b/chrome/renderer/chrome_ppb_pdf_impl.cc
@@ -9,6 +9,7 @@
#include "build/build_config.h"
#include "chrome/common/render_messages.h"
#include "content/public/common/child_process_sandbox_support_linux.h"
+#include "content/public/common/content_client.h"
#include "content/public/renderer/render_thread.h"
#include "content/public/renderer/render_view.h"
#include "grit/webkit_resources.h"
@@ -123,7 +124,8 @@ static const ResourceImageInfo kResourceImageMap[] = {
PP_Var GetLocalizedString(PP_Instance instance_id,
PP_ResourceString string_id) {
- PluginInstance* instance = HostGlobals::Get()->GetInstance(instance_id);
+ PluginInstance* instance =
+ content::GetHostGlobals()->GetInstance(instance_id);
if (!instance)
return PP_MakeUndefined();
@@ -159,7 +161,7 @@ PP_Resource GetResourceImage(PP_Instance instance_id,
ResourceBundle::GetSharedInstance().GetBitmapNamed(res_id);
// Validate the instance.
- if (!HostGlobals::Get()->GetInstance(instance_id))
+ if (!content::GetHostGlobals()->GetInstance(instance_id))
return 0;
scoped_refptr<webkit::ppapi::PPB_ImageData_Impl> image_data(
new webkit::ppapi::PPB_ImageData_Impl(instance_id));
@@ -187,7 +189,7 @@ PP_Resource GetFontFileWithFallback(
PP_PrivateFontCharset charset) {
#if defined(OS_LINUX) || defined(OS_OPENBSD)
// Validate the instance before using it below.
- if (!HostGlobals::Get()->GetInstance(instance_id))
+ if (!content::GetHostGlobals()->GetInstance(instance_id))
return 0;
scoped_refptr<ppapi::StringVar> face_name(ppapi::StringVar::FromPPVar(
@@ -281,21 +283,23 @@ void SearchString(PP_Instance instance,
}
void DidStartLoading(PP_Instance instance_id) {
- PluginInstance* instance = HostGlobals::Get()->GetInstance(instance_id);
+ PluginInstance* instance = content::GetHostGlobals()->GetInstance(instance_id);
if (!instance)
return;
instance->delegate()->DidStartLoading();
}
void DidStopLoading(PP_Instance instance_id) {
- PluginInstance* instance = HostGlobals::Get()->GetInstance(instance_id);
+ PluginInstance* instance =
+ content::GetHostGlobals()->GetInstance(instance_id);
if (!instance)
return;
instance->delegate()->DidStopLoading();
}
void SetContentRestriction(PP_Instance instance_id, int restrictions) {
- PluginInstance* instance = HostGlobals::Get()->GetInstance(instance_id);
+ PluginInstance* instance =
+ content::GetHostGlobals()->GetInstance(instance_id);
if (!instance)
return;
instance->delegate()->SetContentRestriction(restrictions);
@@ -313,7 +317,8 @@ void UserMetricsRecordAction(PP_Var action) {
}
void HasUnsupportedFeature(PP_Instance instance_id) {
- PluginInstance* instance = HostGlobals::Get()->GetInstance(instance_id);
+ PluginInstance* instance =
+ content::GetHostGlobals()->GetInstance(instance_id);
if (!instance)
return;
@@ -328,7 +333,8 @@ void HasUnsupportedFeature(PP_Instance instance_id) {
}
void SaveAs(PP_Instance instance_id) {
- PluginInstance* instance = HostGlobals::Get()->GetInstance(instance_id);
+ PluginInstance* instance =
+ content::GetHostGlobals()->GetInstance(instance_id);
if (!instance)
return;
instance->delegate()->SaveURLAs(instance->plugin_url());
diff --git a/content/browser/tab_contents/render_view_host_manager.cc b/content/browser/tab_contents/render_view_host_manager.cc
index 3ac77f61..63a4f6c 100644
--- a/content/browser/tab_contents/render_view_host_manager.cc
+++ b/content/browser/tab_contents/render_view_host_manager.cc
@@ -22,6 +22,7 @@
#include "content/common/view_messages.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/browser/notification_types.h"
+#include "content/public/browser/web_ui_controller.h"
#include "content/public/browser/web_ui_factory.h"
#include "content/public/common/content_switches.h"
#include "content/public/common/url_constants.h"
@@ -556,7 +557,7 @@ void RenderViewHostManager::CommitPending() {
// Next commit the Web UI, if any.
web_ui_.swap(pending_web_ui_);
if (web_ui_.get() && pending_web_ui_.get() && !pending_render_view_host_)
- web_ui_->DidBecomeActiveForReusedRenderView();
+ web_ui_->controller()->DidBecomeActiveForReusedRenderView();
pending_web_ui_.reset();
// It's possible for the pending_render_view_host_ to be NULL when we aren't
@@ -736,7 +737,7 @@ RenderViewHost* RenderViewHostManager::UpdateRendererStateForNavigate(
return pending_render_view_host_;
} else {
if (pending_web_ui_.get() && render_view_host_->IsRenderViewLive())
- pending_web_ui_->RenderViewReused(render_view_host_);
+ pending_web_ui_->controller()->RenderViewReused(render_view_host_);
// The renderer can exit view source mode when any error or cancellation
// happen. We must overwrite to recover the mode.
diff --git a/content/browser/tab_contents/render_view_host_manager_unittest.cc b/content/browser/tab_contents/render_view_host_manager_unittest.cc
index 125f2b4..a87dddf 100644
--- a/content/browser/tab_contents/render_view_host_manager_unittest.cc
+++ b/content/browser/tab_contents/render_view_host_manager_unittest.cc
@@ -17,6 +17,7 @@
#include "content/public/browser/notification_details.h"
#include "content/public/browser/notification_source.h"
#include "content/public/browser/notification_types.h"
+#include "content/public/browser/web_ui_controller.h"
#include "content/public/common/page_transition_types.h"
#include "content/public/common/url_constants.h"
#include "content/test/test_browser_context.h"
@@ -53,7 +54,8 @@ class RenderViewHostManagerTestWebUIFactory
const GURL& url) const OVERRIDE {
if (!(should_create_webui_ && HasWebUIScheme(url)))
return NULL;
- return new WebUI(source);
+ static content::WebUIController temp_controller;
+ return new WebUI(source, &temp_controller);
}
virtual bool UseWebUIForURL(content::BrowserContext* browser_context,
diff --git a/content/browser/tab_contents/tab_contents_unittest.cc b/content/browser/tab_contents/tab_contents_unittest.cc
index 848b010..b37912d 100644
--- a/content/browser/tab_contents/tab_contents_unittest.cc
+++ b/content/browser/tab_contents/tab_contents_unittest.cc
@@ -18,6 +18,7 @@
#include "content/public/browser/notification_details.h"
#include "content/public/browser/notification_source.h"
#include "content/public/browser/notification_source.h"
+#include "content/public/browser/web_ui_controller.h"
#include "content/public/common/bindings_policy.h"
#include "content/public/common/content_constants.h"
#include "content/public/common/url_constants.h"
@@ -40,7 +41,8 @@ class TabContentsTestWebUIFactory : public content::EmptyWebUIFactory {
if (!HasWebUIScheme(url))
return NULL;
- return new WebUI(source);
+ static content::WebUIController temp_controller;
+ return new WebUI(source, &temp_controller);
}
virtual bool UseWebUIForURL(content::BrowserContext* browser_context,
diff --git a/content/browser/webui/web_ui.cc b/content/browser/webui/web_ui.cc
index b249371..35b418f 100644
--- a/content/browser/webui/web_ui.cc
+++ b/content/browser/webui/web_ui.cc
@@ -16,10 +16,12 @@
#include "content/browser/tab_contents/tab_contents_view.h"
#include "content/browser/webui/generic_handler.h"
#include "content/common/view_messages.h"
+#include "content/public/browser/web_ui_controller.h"
#include "content/public/common/bindings_policy.h"
#include "content/public/common/content_switches.h"
using content::WebContents;
+using content::WebUIController;
using content::WebUIMessageHandler;
// static
@@ -39,14 +41,16 @@ string16 WebUI::GetJavascriptCall(
char16('(') + parameters + char16(')') + char16(';');
}
-WebUI::WebUI(WebContents* contents)
+WebUI::WebUI(WebContents* contents,
+ WebUIController* controller)
: hide_favicon_(false),
focus_location_bar_by_default_(false),
should_hide_url_(false),
link_transition_type_(content::PAGE_TRANSITION_LINK),
bindings_(content::BINDINGS_POLICY_WEB_UI),
register_callback_overwrites_(false),
- web_contents_(contents) {
+ web_contents_(contents),
+ controller_(controller) {
DCHECK(contents);
AddMessageHandler(new GenericHandler());
}
@@ -77,6 +81,9 @@ void WebUI::OnWebUISend(const GURL& source_url,
return;
}
+ if (controller_->OverrideHandleWebUIMessage(source_url, message,args))
+ return;
+
// Look up the callback for this message.
MessageCallbackMap::const_iterator callback =
message_callbacks_.find(message);
@@ -87,6 +94,8 @@ void WebUI::OnWebUISend(const GURL& source_url,
}
void WebUI::RenderViewCreated(RenderViewHost* render_view_host) {
+ controller_->RenderViewCreated(render_view_host);
+
// Do not attempt to set the toolkit property if WebUI is not enabled, e.g.,
// the bookmarks manager page.
if (!(bindings_ & content::BINDINGS_POLICY_WEB_UI))
diff --git a/content/browser/webui/web_ui.h b/content/browser/webui/web_ui.h
index 462c2cf..9997f41 100644
--- a/content/browser/webui/web_ui.h
+++ b/content/browser/webui/web_ui.h
@@ -27,6 +27,7 @@ class Value;
namespace content {
class WebContents;
+class WebUIController;
class WebUIMessageHandler;
}
@@ -37,35 +38,16 @@ class WebUIMessageHandler;
// ChromeWebUI.
class CONTENT_EXPORT WebUI : public IPC::Channel::Listener {
public:
- explicit WebUI(content::WebContents* contents);
+ WebUI(content::WebContents* contents, content::WebUIController* controller);
virtual ~WebUI();
- // IPC message handling.
+ // IPC::Channel::Listener implementation:
virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
- virtual void OnWebUISend(const GURL& source_url,
- const std::string& message,
- const base::ListValue& args);
-
- // Called by RenderViewHost when the RenderView is first created. This is
- // *not* called for every page load because in some cases
- // RenderViewHostManager will reuse RenderView instances. In those cases,
- // RenderViewReused will be called instead.
- virtual void RenderViewCreated(RenderViewHost* render_view_host);
-
- // Called by RenderViewHostManager when a RenderView is reused to display a
- // page.
- virtual void RenderViewReused(RenderViewHost* render_view_host) {}
-
- // Called when this becomes the active WebUI instance for a re-used
- // RenderView; this is the point at which this WebUI instance will receive
- // DOM messages instead of the previous WebUI instance.
- //
- // If a WebUI instance has code that is usually triggered from a JavaScript
- // onload handler, this should be overridden to check to see if the web page's
- // DOM is still intact (e.g., due to a back/forward navigation that remains
- // within the same page), and if so trigger that code manually since onload
- // won't be run in that case.
- virtual void DidBecomeActiveForReusedRenderView() {}
+
+ // Called by TabContents when the RenderView is first created. This is *not*
+ // called for every page load because in some cases RenderViewHostManager will
+ // reuse RenderView instances.
+ void RenderViewCreated(RenderViewHost* render_view_host);
// Used by WebUIMessageHandlers. If the given message is already registered,
// the call has no effect unless |register_callback_overwrites_| is set to
@@ -123,6 +105,8 @@ class CONTENT_EXPORT WebUI : public IPC::Channel::Listener {
frame_xpath_ = xpath;
}
+ content::WebUIController* controller() const { return controller_; }
+
// Call a Javascript function by sending its name and arguments down to
// the renderer. This is asynchronous; there's no way to get the result
// of the call, and should be thought of more like sending a message to
@@ -190,7 +174,16 @@ class CONTENT_EXPORT WebUI : public IPC::Channel::Listener {
// Non-owning pointer to the WebContents this WebUI is associated with.
content::WebContents* web_contents_;
+ // TODO(jam): once WebUI objects aren't also WebUIController, make one own the
+ // other.
+ content::WebUIController* controller_;
+
private:
+ // IPC message handling.
+ void OnWebUISend(const GURL& source_url,
+ const std::string& message,
+ const base::ListValue& args);
+
// A map of message name -> message handling callback.
typedef std::map<std::string, MessageCallback> MessageCallbackMap;
MessageCallbackMap message_callbacks_;
diff --git a/content/content_browser.gypi b/content/content_browser.gypi
index b26ad31..2d3e0979 100644
--- a/content/content_browser.gypi
+++ b/content/content_browser.gypi
@@ -87,6 +87,8 @@
'public/browser/web_contents_observer.cc',
'public/browser/web_contents_observer.h',
'public/browser/web_intents_dispatcher.h',
+ 'public/browser/web_ui_controller.cc',
+ 'public/browser/web_ui_controller.h',
'public/browser/web_ui_factory.h',
'public/browser/web_ui_message_handler.h',
'public/browser/worker_service.h',
diff --git a/content/public/browser/web_ui_controller.cc b/content/public/browser/web_ui_controller.cc
new file mode 100644
index 0000000..510833f
--- /dev/null
+++ b/content/public/browser/web_ui_controller.cc
@@ -0,0 +1,15 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "content/public/browser/web_ui_controller.h"
+
+namespace content {
+
+bool WebUIController::OverrideHandleWebUIMessage(const GURL& source_url,
+ const std::string& message,
+ const base::ListValue& args) {
+ return false;
+}
+
+} // namespace content
diff --git a/content/public/browser/web_ui_controller.h b/content/public/browser/web_ui_controller.h
new file mode 100644
index 0000000..00265a8
--- /dev/null
+++ b/content/public/browser/web_ui_controller.h
@@ -0,0 +1,56 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CONTENT_PUBLIC_BROWSER_WEB_UI_CONTROLLER_H_
+#define CONTENT_PUBLIC_BROWSER_WEB_UI_CONTROLLER_H_
+#pragma once
+
+#include "base/basictypes.h"
+#include "base/string16.h"
+#include "content/common/content_export.h"
+
+class GURL;
+class RenderViewHost;
+
+namespace base {
+class ListValue;
+}
+
+namespace content {
+
+// A WebUI page is controller by the embedder's WebUIController object. It
+// manages the data source and message handlers.
+class CONTENT_EXPORT WebUIController {
+ public:
+ virtual ~WebUIController() {}
+
+ // Allows the controller to override handling all messages from the page.
+ // Return true if the message handling was overridden.
+ virtual bool OverrideHandleWebUIMessage(const GURL& source_url,
+ const std::string& message,
+ const base::ListValue& args);
+
+ // Called when RenderView is first created. This is *not* called for every
+ // page load because in some cases a RenderView will be reused. In those
+ // cases, RenderViewReused will be called instead.
+ virtual void RenderViewCreated(RenderViewHost* render_view_host) {}
+
+ // Called when a RenderView is reused to display a page.
+ virtual void RenderViewReused(RenderViewHost* render_view_host) {}
+
+ // Called when this becomes the active WebUI instance for a re-used
+ // RenderView; this is the point at which this WebUI instance will receive
+ // DOM messages instead of the previous WebUI instance.
+ //
+ // If a WebUI instance has code that is usually triggered from a JavaScript
+ // onload handler, this should be overridden to check to see if the web page's
+ // DOM is still intact (e.g., due to a back/forward navigation that remains
+ // within the same page), and if so trigger that code manually since onload
+ // won't be run in that case.
+ virtual void DidBecomeActiveForReusedRenderView() {}
+};
+
+} // namespace content
+
+#endif // CONTENT_PUBLIC_BROWSER_WEB_UI_CONTROLLER_H_
diff --git a/content/public/browser/web_ui_message_handler.h b/content/public/browser/web_ui_message_handler.h
index 9619d37..439643ad 100644
--- a/content/public/browser/web_ui_message_handler.h
+++ b/content/public/browser/web_ui_message_handler.h
@@ -63,8 +63,6 @@ class CONTENT_EXPORT WebUIMessageHandler {
void set_web_ui(WebUI* web_ui) { web_ui_ = web_ui; }
WebUI* web_ui_;
-
- DISALLOW_COPY_AND_ASSIGN(WebUIMessageHandler);
};
} // namespace content
diff --git a/content/public/common/content_client.cc b/content/public/common/content_client.cc
index 9d4f8b6..9558e2d 100644
--- a/content/public/common/content_client.cc
+++ b/content/public/common/content_client.cc
@@ -7,6 +7,7 @@
#include "base/logging.h"
#include "base/string_piece.h"
#include "webkit/glue/webkit_glue.h"
+#include "webkit/plugins/ppapi/host_globals.h"
namespace content {
@@ -38,6 +39,10 @@ const std::string& GetUserAgent(const GURL& url) {
return webkit_glue::GetUserAgent(url);
}
+webkit::ppapi::HostGlobals* GetHostGlobals() {
+ return webkit::ppapi::HostGlobals::Get();
+}
+
ContentClient::ContentClient()
: browser_(NULL), plugin_(NULL), renderer_(NULL), utility_(NULL) {
}
diff --git a/content/public/common/content_client.h b/content/public/common/content_client.h
index b2460ba..5721265 100644
--- a/content/public/common/content_client.h
+++ b/content/public/common/content_client.h
@@ -30,6 +30,10 @@ namespace webkit {
namespace npapi {
class PluginList;
}
+
+namespace ppapi {
+class HostGlobals;
+}
}
namespace content {
@@ -57,6 +61,10 @@ CONTENT_EXPORT ContentClient* GetContentClient();
// webkit_glue.
CONTENT_EXPORT const std::string& GetUserAgent(const GURL& url);
+// Returns the PPAPI global singleton. See webkit/plugins/ppapi/host_globals.h
+// TODO(dpranke): Also needed since webkit_glue is a library.
+CONTENT_EXPORT webkit::ppapi::HostGlobals* GetHostGlobals();
+
// Interface that the embedder implements.
class CONTENT_EXPORT ContentClient {
public: