diff options
author | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-18 22:39:27 +0000 |
---|---|---|
committer | scherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-18 22:39:27 +0000 |
commit | 2bb5130ad15a91a9e05641ca62c2a49e5c692445 (patch) | |
tree | 92ec055e791ea39d889b8aa26f386a41839ba155 /chrome/browser/dom_ui/constrained_html_ui.cc | |
parent | d8e107a5007a03a8ed5e39de98d3fe1eef2d27d9 (diff) | |
download | chromium_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.cc | 67 |
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(); +} |