Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Side by Side Diff: chrome/browser/ui/views/constrained_html_delegate_views.cc

Issue 8220026: Add new methods to create constrained windows for print preview and release the internal TabConte... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: rename Created 9 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/webui/constrained_html_ui.h" 5 #include "chrome/browser/ui/webui/constrained_html_ui.h"
6 6
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/profiles/profile.h" 8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" 9 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h"
10 #include "chrome/browser/ui/views/constrained_window_views.h" 10 #include "chrome/browser/ui/views/constrained_window_views.h"
(...skipping 10 matching lines...) Expand all
21 public views::WidgetDelegate, 21 public views::WidgetDelegate,
22 public HtmlDialogTabContentsDelegate { 22 public HtmlDialogTabContentsDelegate {
23 public: 23 public:
24 ConstrainedHtmlDelegateViews(Profile* profile, 24 ConstrainedHtmlDelegateViews(Profile* profile,
25 HtmlDialogUIDelegate* delegate); 25 HtmlDialogUIDelegate* delegate);
26 ~ConstrainedHtmlDelegateViews(); 26 ~ConstrainedHtmlDelegateViews();
27 27
28 // ConstrainedHtmlUIDelegate interface. 28 // ConstrainedHtmlUIDelegate interface.
29 virtual HtmlDialogUIDelegate* GetHtmlDialogUIDelegate() OVERRIDE; 29 virtual HtmlDialogUIDelegate* GetHtmlDialogUIDelegate() OVERRIDE;
30 virtual void OnDialogCloseFromWebUI() OVERRIDE; 30 virtual void OnDialogCloseFromWebUI() OVERRIDE;
31 virtual void ReleaseTabContentsOnDialogClose() OVERRIDE;
32 virtual ConstrainedWindow* window() OVERRIDE { return window_; }
33 virtual TabContentsWrapper* tab() OVERRIDE {
34 return html_tab_contents_.get();
35 }
31 36
32 // views::WidgetDelegate interface. 37 // views::WidgetDelegate interface.
33 virtual bool CanResize() const OVERRIDE { return true; } 38 virtual bool CanResize() const OVERRIDE { return true; }
34 virtual views::View* GetContentsView() OVERRIDE { 39 virtual views::View* GetContentsView() OVERRIDE {
35 return this; 40 return this;
36 } 41 }
37 virtual void WindowClosing() OVERRIDE { 42 virtual void WindowClosing() OVERRIDE {
38 if (!closed_via_webui_) 43 if (!closed_via_webui_)
39 html_delegate_->OnDialogClosed(""); 44 html_delegate_->OnDialogClosed("");
40 } 45 }
(...skipping 16 matching lines...) Expand all
57 gfx::Size size; 62 gfx::Size size;
58 html_delegate_->GetDialogSize(&size); 63 html_delegate_->GetDialogSize(&size);
59 return size; 64 return size;
60 } 65 }
61 66
62 virtual void ViewHierarchyChanged(bool is_add, 67 virtual void ViewHierarchyChanged(bool is_add,
63 views::View* parent, 68 views::View* parent,
64 views::View* child) OVERRIDE { 69 views::View* child) OVERRIDE {
65 TabContentsContainer::ViewHierarchyChanged(is_add, parent, child); 70 TabContentsContainer::ViewHierarchyChanged(is_add, parent, child);
66 if (is_add && child == this) { 71 if (is_add && child == this) {
67 ChangeTabContents(&html_tab_contents_); 72 ChangeTabContents(html_tab_contents_->tab_contents());
68 } 73 }
69 } 74 }
70 75
71 void set_window(ConstrainedWindow* window) { 76 void set_window(ConstrainedWindow* window) {
72 window_ = window; 77 window_ = window;
73 } 78 }
74 79
75 private: 80 private:
76 TabContents html_tab_contents_; 81 scoped_ptr<TabContentsWrapper> html_tab_contents_;
77 82
78 HtmlDialogUIDelegate* html_delegate_; 83 HtmlDialogUIDelegate* html_delegate_;
79 84
80 // The constrained window that owns |this|. Saved so we can close it later. 85 // The constrained window that owns |this|. Saved so we can close it later.
81 ConstrainedWindow* window_; 86 ConstrainedWindow* window_;
82 87
83 // Was the dialog closed from WebUI (in which case |html_delegate_|'s 88 // Was the dialog closed from WebUI (in which case |html_delegate_|'s
84 // OnDialogClosed() method has already been called)? 89 // OnDialogClosed() method has already been called)?
85 bool closed_via_webui_; 90 bool closed_via_webui_;
91
92 // If true, release |tab_| on close instead of destroying it.
93 bool release_tab_on_close_;
86 }; 94 };
87 95
88 ConstrainedHtmlDelegateViews::ConstrainedHtmlDelegateViews( 96 ConstrainedHtmlDelegateViews::ConstrainedHtmlDelegateViews(
89 Profile* profile, 97 Profile* profile,
90 HtmlDialogUIDelegate* delegate) 98 HtmlDialogUIDelegate* delegate)
91 : HtmlDialogTabContentsDelegate(profile), 99 : HtmlDialogTabContentsDelegate(profile),
92 html_tab_contents_(profile, NULL, MSG_ROUTING_NONE, NULL, NULL),
93 html_delegate_(delegate), 100 html_delegate_(delegate),
94 window_(NULL), 101 window_(NULL),
95 closed_via_webui_(false) { 102 closed_via_webui_(false),
103 release_tab_on_close_(false) {
96 CHECK(delegate); 104 CHECK(delegate);
97 html_tab_contents_.set_delegate(this); 105 TabContents* tab_contents =
106 new TabContents(profile, NULL, MSG_ROUTING_NONE, NULL, NULL);
107 html_tab_contents_.reset(new TabContentsWrapper(tab_contents));
108 tab_contents->set_delegate(this);
98 109
99 // Set |this| as a property so the ConstrainedHtmlUI can retrieve it. 110 // Set |this| as a property so the ConstrainedHtmlUI can retrieve it.
100 ConstrainedHtmlUI::GetPropertyAccessor().SetProperty( 111 ConstrainedHtmlUI::GetPropertyAccessor().SetProperty(
101 html_tab_contents_.property_bag(), this); 112 html_tab_contents_->tab_contents()->property_bag(), this);
102 html_tab_contents_.controller().LoadURL( 113 tab_contents->controller().LoadURL(delegate->GetDialogContentURL(),
103 delegate->GetDialogContentURL(), 114 GURL(),
104 GURL(), 115 content::PAGE_TRANSITION_START_PAGE,
105 content::PAGE_TRANSITION_START_PAGE, 116 std::string());
106 std::string());
107 } 117 }
108 118
109 ConstrainedHtmlDelegateViews::~ConstrainedHtmlDelegateViews() { 119 ConstrainedHtmlDelegateViews::~ConstrainedHtmlDelegateViews() {
120 if (release_tab_on_close_)
121 ignore_result(html_tab_contents_.release());
110 } 122 }
111 123
112 HtmlDialogUIDelegate* ConstrainedHtmlDelegateViews::GetHtmlDialogUIDelegate() { 124 HtmlDialogUIDelegate* ConstrainedHtmlDelegateViews::GetHtmlDialogUIDelegate() {
113 return html_delegate_; 125 return html_delegate_;
114 } 126 }
115 127
116 void ConstrainedHtmlDelegateViews::OnDialogCloseFromWebUI() { 128 void ConstrainedHtmlDelegateViews::OnDialogCloseFromWebUI() {
117 closed_via_webui_ = true; 129 closed_via_webui_ = true;
118 window_->CloseConstrainedWindow(); 130 window_->CloseConstrainedWindow();
119 } 131 }
120 132
133 void ConstrainedHtmlDelegateViews::ReleaseTabContentsOnDialogClose() {
134 release_tab_on_close_ = true;
135 }
136
121 // static 137 // static
122 ConstrainedWindow* ConstrainedHtmlUI::CreateConstrainedHtmlDialog( 138 ConstrainedHtmlUIDelegate* ConstrainedHtmlUI::CreateConstrainedHtmlDialog(
123 Profile* profile, 139 Profile* profile,
124 HtmlDialogUIDelegate* delegate, 140 HtmlDialogUIDelegate* delegate,
125 TabContentsWrapper* container) { 141 TabContentsWrapper* container) {
126 ConstrainedHtmlDelegateViews* constrained_delegate = 142 ConstrainedHtmlDelegateViews* constrained_delegate =
127 new ConstrainedHtmlDelegateViews(profile, delegate); 143 new ConstrainedHtmlDelegateViews(profile, delegate);
128 ConstrainedWindow* constrained_window = 144 ConstrainedWindow* constrained_window =
129 new ConstrainedWindowViews(container, constrained_delegate); 145 new ConstrainedWindowViews(container, constrained_delegate);
130 constrained_delegate->set_window(constrained_window); 146 constrained_delegate->set_window(constrained_window);
131 return constrained_window; 147 return constrained_delegate;
132 } 148 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/constrained_html_delegate_gtk.cc ('k') | chrome/browser/ui/webui/constrained_html_ui.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698