summaryrefslogtreecommitdiffstats
path: root/chrome/browser/views/html_dialog_view.cc
diff options
context:
space:
mode:
authorakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-03 23:54:45 +0000
committerakalin@chromium.org <akalin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-12-03 23:54:45 +0000
commitfeacf6810018543467b9befdfdc0d52dc9ae7d92 (patch)
tree3c79970c0e7226d482ac8132aade6022c1cfbc0b /chrome/browser/views/html_dialog_view.cc
parent2ba5cda1fd02703c0066d297bcfb5848d6d926b9 (diff)
downloadchromium_src-feacf6810018543467b9befdfdc0d52dc9ae7d92.zip
chromium_src-feacf6810018543467b9befdfdc0d52dc9ae7d92.tar.gz
chromium_src-feacf6810018543467b9befdfdc0d52dc9ae7d92.tar.bz2
Created HtmlDialogTabContentsDelegate, which encapsulates the TabContentsDelegate behavior for HTML dialogs. Made all three implementations (gtk, win32, and cocoa) use it.
This also makes HTML dialogs not tied to a Browser instance. Also, unlike the current behavior, any links followed from an HTML dialog box will be opened in a non-incognito browser, even if the HTML dialog was launched from an incognito browser. According to beng, this is okay. BUG=28609 TEST=unittests, manual testing on linux/windows/os x with sync setup wizard Review URL: http://codereview.chromium.org/441011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33752 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/views/html_dialog_view.cc')
-rw-r--r--chrome/browser/views/html_dialog_view.cc72
1 files changed, 6 insertions, 66 deletions
diff --git a/chrome/browser/views/html_dialog_view.cc b/chrome/browser/views/html_dialog_view.cc
index cda5340..e20e401 100644
--- a/chrome/browser/views/html_dialog_view.cc
+++ b/chrome/browser/views/html_dialog_view.cc
@@ -16,7 +16,8 @@ namespace browser {
// Declared in browser_dialogs.h so that others don't need to depend on our .h.
void ShowHtmlDialogView(gfx::NativeWindow parent, Browser* browser,
HtmlDialogUIDelegate* delegate) {
- HtmlDialogView* html_view = new HtmlDialogView(browser, delegate);
+ HtmlDialogView* html_view =
+ new HtmlDialogView(browser->profile(), delegate);
views::Window::CreateChromeWindow(parent, gfx::Rect(), html_view);
html_view->InitDialog();
html_view->window()->Show();
@@ -27,13 +28,11 @@ void ShowHtmlDialogView(gfx::NativeWindow parent, Browser* browser,
////////////////////////////////////////////////////////////////////////////////
// HtmlDialogView, public:
-HtmlDialogView::HtmlDialogView(Browser* parent_browser,
+HtmlDialogView::HtmlDialogView(Profile* profile,
HtmlDialogUIDelegate* delegate)
: DOMView(),
- parent_browser_(parent_browser),
- profile_(parent_browser->profile()),
+ HtmlDialogTabContentsDelegate(profile),
delegate_(delegate) {
- DCHECK(profile_);
}
HtmlDialogView::~HtmlDialogView() {
@@ -132,6 +131,7 @@ std::string HtmlDialogView::GetDialogArgs() const {
void HtmlDialogView::OnDialogClosed(const std::string& json_retval) {
HtmlDialogUIDelegate* dialog_delegate = delegate_;
delegate_ = NULL; // We will not communicate further with the delegate.
+ HtmlDialogTabContentsDelegate::Detach();
dialog_delegate->OnDialogClosed(json_retval);
window()->Close();
}
@@ -139,83 +139,23 @@ void HtmlDialogView::OnDialogClosed(const std::string& json_retval) {
////////////////////////////////////////////////////////////////////////////////
// TabContentsDelegate implementation:
-void HtmlDialogView::OpenURLFromTab(TabContents* source,
- const GURL& url,
- const GURL& referrer,
- WindowOpenDisposition disposition,
- PageTransition::Type transition) {
- // Force all links to open in a new window, ignoring the incoming
- // disposition. This is a tabless, modal dialog so we can't just
- // open it in the current frame.
- static_cast<TabContentsDelegate*>(parent_browser_)->OpenURLFromTab(
- source, url, referrer, NEW_WINDOW, transition);
-}
-
-void HtmlDialogView::NavigationStateChanged(const TabContents* source,
- unsigned changed_flags) {
- // We shouldn't receive any NavigationStateChanged except the first
- // one, which we ignore because we're a dialog box.
-}
-
-void HtmlDialogView::ReplaceContents(TabContents* source,
- TabContents* new_contents) {
-}
-
-void HtmlDialogView::AddNewContents(TabContents* source,
- TabContents* new_contents,
- WindowOpenDisposition disposition,
- const gfx::Rect& initial_pos,
- bool user_gesture) {
- static_cast<TabContentsDelegate*>(parent_browser_)->AddNewContents(
- source, new_contents, NEW_WINDOW, initial_pos, user_gesture);
-}
-
-void HtmlDialogView::ActivateContents(TabContents* contents) {
- // We don't do anything here because there's only one TabContents in
- // this frame and we don't have a TabStripModel.
-}
-
-void HtmlDialogView::LoadingStateChanged(TabContents* source) {
- // We don't care about this notification.
-}
-
-void HtmlDialogView::CloseContents(TabContents* source) {
- // We receive this message but don't handle it because we really do the
- // cleanup in OnDialogClosed().
-}
-
void HtmlDialogView::MoveContents(TabContents* source, const gfx::Rect& pos) {
// The contained web page wishes to resize itself. We let it do this because
// if it's a dialog we know about, we trust it not to be mean to the user.
GetWidget()->SetBounds(pos);
}
-bool HtmlDialogView::IsPopup(TabContents* source) {
- // This needs to return true so that we are allowed to be resized by our
- // contents.
- return true;
-}
-
void HtmlDialogView::ToolbarSizeChanged(TabContents* source,
bool is_animating) {
Layout();
}
-void HtmlDialogView::URLStarredChanged(TabContents* source, bool starred) {
- // We don't have a visible star to click in the window.
- NOTREACHED();
-}
-
-void HtmlDialogView::UpdateTargetURL(TabContents* source, const GURL& url) {
- // Ignored.
-}
-
////////////////////////////////////////////////////////////////////////////////
// HtmlDialogView:
void HtmlDialogView::InitDialog() {
// Now Init the DOMView. This view runs in its own process to render the html.
- DOMView::Init(profile_, NULL);
+ DOMView::Init(profile(), NULL);
tab_contents_->set_delegate(this);