1// Copyright (c) 2011 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 CHROME_BROWSER_UI_WEBUI_CONSTRAINED_HTML_UI_H_ 6#define CHROME_BROWSER_UI_WEBUI_CONSTRAINED_HTML_UI_H_ 7#pragma once 8 9#include <vector> 10 11#include "content/browser/tab_contents/constrained_window.h" 12#include "content/browser/webui/web_ui.h" 13#include "content/common/property_bag.h" 14 15class HtmlDialogUIDelegate; 16class Profile; 17class RenderViewHost; 18class TabContents; 19 20class ConstrainedHtmlUIDelegate { 21 public: 22 virtual HtmlDialogUIDelegate* GetHtmlDialogUIDelegate() = 0; 23 24 // Called when the dialog should close. 25 virtual void OnDialogClose() = 0; 26}; 27 28// ConstrainedHtmlUI is a facility to show HTML WebUI content 29// in a tab-modal constrained dialog. It is implemented as an adapter 30// between an HtmlDialogUI object and a ConstrainedWindow object. 31// 32// Since ConstrainedWindow requires platform-specific delegate 33// implementations, this class is just a factory stub. 34class ConstrainedHtmlUI : public WebUI { 35 public: 36 explicit ConstrainedHtmlUI(TabContents* contents); 37 virtual ~ConstrainedHtmlUI(); 38 39 virtual void RenderViewCreated(RenderViewHost* render_view_host); 40 41 // Create a constrained HTML dialog. The actual object that gets created 42 // is a ConstrainedHtmlUIDelegate, which later triggers construction of a 43 // ConstrainedHtmlUI object. 44 static ConstrainedWindow* CreateConstrainedHtmlDialog( 45 Profile* profile, 46 HtmlDialogUIDelegate* delegate, 47 TabContents* overshadowed); 48 49 // Returns a property accessor that can be used to set the 50 // ConstrainedHtmlUIDelegate property on a TabContents. 51 static PropertyAccessor<ConstrainedHtmlUIDelegate*>& 52 GetPropertyAccessor(); 53 54 private: 55 // Returns the TabContents' PropertyBag's ConstrainedHtmlUIDelegate. 56 // Returns NULL if that property is not set. 57 ConstrainedHtmlUIDelegate* GetConstrainedDelegate(); 58 59 // JS Message Handler 60 void OnDialogClose(const ListValue* args); 61 62 DISALLOW_COPY_AND_ASSIGN(ConstrainedHtmlUI); 63}; 64 65#endif // CHROME_BROWSER_UI_WEBUI_CONSTRAINED_HTML_UI_H_ 66