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