1b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn// Use of this source code is governed by a BSD-style license that can be 3b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn// found in the LICENSE file. 4b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn 5b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn#ifndef CONTENT_PUBLIC_BROWSER_WEB_UI_CONTROLLER_H_ 6b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn#define CONTENT_PUBLIC_BROWSER_WEB_UI_CONTROLLER_H_ 7b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn 8b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn#include "base/basictypes.h" 9b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn#include "base/strings/string16.h" 10b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn#include "content/common/content_export.h" 11b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn 12b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackbornclass GURL; 13b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn 14b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackbornnamespace base { 15b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackbornclass ListValue; 16b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn} 17b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn 18b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackbornnamespace content { 19b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn 20b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackbornclass RenderViewHost; 21b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackbornclass WebUI; 22b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn 23b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn// A WebUI page is controller by the embedder's WebUIController object. It 24b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn// manages the data source and message handlers. 25b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackbornclass CONTENT_EXPORT WebUIController { 26b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn public: 27b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn explicit WebUIController(WebUI* web_ui) : web_ui_(web_ui) {} 28b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn virtual ~WebUIController() {} 29b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn 30b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn // Allows the controller to override handling all messages from the page. 31b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn // Return true if the message handling was overridden. 32b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn virtual bool OverrideHandleWebUIMessage(const GURL& source_url, 33b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn const std::string& message, 34b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn const base::ListValue& args); 35b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn 36b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn // Called when RenderView is first created. This is *not* called for every 37b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn // page load because in some cases a RenderView will be reused. In those 38b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn // cases, RenderViewReused will be called instead. 39b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn virtual void RenderViewCreated(RenderViewHost* render_view_host) {} 40b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn 41b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn // Called when a RenderView is reused to display a page. 42b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn virtual void RenderViewReused(RenderViewHost* render_view_host) {} 43b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn 44b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn WebUI* web_ui() const { return web_ui_; } 45b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn 46b7f0367cec1c744aa66ef397b0244e25d507491cDan Egnor private: 4760d8762413e8daba5f73559786312a9ec5e3b827Dan Egnor WebUI* web_ui_; 48b7f0367cec1c744aa66ef397b0244e25d507491cDan Egnor}; 49b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn 50b06ea706530e6d19eb2a1a9a7ae6c5dd77d80af0Dianne Hackborn} // namespace content 51287952c35e148811c106bc0f5036eabf20f71562Dianne Hackborn 52287952c35e148811c106bc0f5036eabf20f71562Dianne Hackborn#endif // CONTENT_PUBLIC_BROWSER_WEB_UI_CONTROLLER_H_ 53287952c35e148811c106bc0f5036eabf20f71562Dianne Hackborn