summaryrefslogtreecommitdiffstats
path: root/chrome/browser/dom_ui/constrained_html_ui.cc
diff options
context:
space:
mode:
authorscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-18 22:39:27 +0000
committerscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-02-18 22:39:27 +0000
commit2bb5130ad15a91a9e05641ca62c2a49e5c692445 (patch)
tree92ec055e791ea39d889b8aa26f386a41839ba155 /chrome/browser/dom_ui/constrained_html_ui.cc
parentd8e107a5007a03a8ed5e39de98d3fe1eef2d27d9 (diff)
downloadchromium_src-2bb5130ad15a91a9e05641ca62c2a49e5c692445.zip
chromium_src-2bb5130ad15a91a9e05641ca62c2a49e5c692445.tar.gz
chromium_src-2bb5130ad15a91a9e05641ca62c2a49e5c692445.tar.bz2
Revert 75453 - WebUI: Move more files from chrome/browser/dom_ui to chrome/browser/webui. Part 5.
BUG=59945, 59946 TEST=trybots Review URL: http://codereview.chromium.org/6538053 TBR=tfarina@chromium.org git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75456 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/dom_ui/constrained_html_ui.cc')
-rw-r--r--chrome/browser/dom_ui/constrained_html_ui.cc67
1 files changed, 67 insertions, 0 deletions
diff --git a/chrome/browser/dom_ui/constrained_html_ui.cc b/chrome/browser/dom_ui/constrained_html_ui.cc
new file mode 100644
index 0000000..494199f
--- /dev/null
+++ b/chrome/browser/dom_ui/constrained_html_ui.cc
@@ -0,0 +1,67 @@
+// Copyright (c) 2011 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 "chrome/browser/dom_ui/constrained_html_ui.h"
+
+#include "base/lazy_instance.h"
+#include "chrome/browser/dom_ui/html_dialog_ui.h"
+#include "chrome/browser/renderer_host/render_view_host.h"
+#include "chrome/browser/tab_contents/tab_contents.h"
+#include "chrome/browser/webui/web_ui_util.h"
+#include "chrome/common/bindings_policy.h"
+
+static base::LazyInstance<PropertyAccessor<ConstrainedHtmlUIDelegate*> >
+ g_constrained_html_ui_property_accessor(base::LINKER_INITIALIZED);
+
+ConstrainedHtmlUI::ConstrainedHtmlUI(TabContents* contents)
+ : WebUI(contents) {
+}
+
+ConstrainedHtmlUI::~ConstrainedHtmlUI() {
+}
+
+void ConstrainedHtmlUI::RenderViewCreated(
+ RenderViewHost* render_view_host) {
+ ConstrainedHtmlUIDelegate* delegate = GetConstrainedDelegate();
+ if (!delegate)
+ return;
+
+ HtmlDialogUIDelegate* dialog_delegate = delegate->GetHtmlDialogUIDelegate();
+ std::vector<WebUIMessageHandler*> handlers;
+ dialog_delegate->GetWebUIMessageHandlers(&handlers);
+ render_view_host->SetWebUIProperty("dialogArguments",
+ dialog_delegate->GetDialogArgs());
+ for (std::vector<WebUIMessageHandler*>::iterator it = handlers.begin();
+ it != handlers.end(); ++it) {
+ (*it)->Attach(this);
+ AddMessageHandler(*it);
+ }
+
+ // Add a "DialogClose" callback which matches HTMLDialogUI behavior.
+ RegisterMessageCallback("DialogClose",
+ NewCallback(this, &ConstrainedHtmlUI::OnDialogClose));
+}
+
+void ConstrainedHtmlUI::OnDialogClose(const ListValue* args) {
+ ConstrainedHtmlUIDelegate* delegate = GetConstrainedDelegate();
+ if (!delegate)
+ return;
+
+ delegate->GetHtmlDialogUIDelegate()->OnDialogClosed(
+ web_ui_util::GetJsonResponseFromFirstArgumentInList(args));
+ delegate->OnDialogClose();
+}
+
+ConstrainedHtmlUIDelegate*
+ ConstrainedHtmlUI::GetConstrainedDelegate() {
+ ConstrainedHtmlUIDelegate** property =
+ GetPropertyAccessor().GetProperty(tab_contents()->property_bag());
+ return property ? *property : NULL;
+}
+
+// static
+PropertyAccessor<ConstrainedHtmlUIDelegate*>&
+ ConstrainedHtmlUI::GetPropertyAccessor() {
+ return g_constrained_html_ui_property_accessor.Get();
+}