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

Unified Diff: content/browser/webui/web_ui.cc

Issue 9224002: Make WebUI objects not derive from WebUI. WebUI objects own the controller. This is the ownership... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: sync to head to clear linux_chromeos browsertest failures Created 8 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/webui/web_ui.cc
===================================================================
--- content/browser/webui/web_ui.cc (revision 117871)
+++ content/browser/webui/web_ui.cc (working copy)
@@ -41,21 +41,21 @@
char16('(') + parameters + char16(')') + char16(';');
}
-WebUI::WebUI(WebContents* contents,
- WebUIController* controller)
- : hide_favicon_(false),
- focus_location_bar_by_default_(false),
+WebUI::WebUI(WebContents* contents)
+ : focus_location_bar_by_default_(false),
should_hide_url_(false),
link_transition_type_(content::PAGE_TRANSITION_LINK),
bindings_(content::BINDINGS_POLICY_WEB_UI),
register_callback_overwrites_(false),
- web_contents_(contents),
- controller_(controller) {
+ web_contents_(contents) {
DCHECK(contents);
AddMessageHandler(new GenericHandler());
}
WebUI::~WebUI() {
+ // Delete the controller first, since it may also be keeping a pointer to some
+ // of the handlers and can call them at destruction.
+ controller_.reset();
STLDeleteContainerPointers(handlers_.begin(), handlers_.end());
}
@@ -115,6 +115,70 @@
render_view_host->SetWebUIProperty("touchOptimized", "true");
}
+WebContents* WebUI::GetWebContents() const {
+ return web_contents_;
+}
+
+bool WebUI::ShouldHideFavicon() const {
+ return hide_favicon_;
+}
+
+void WebUI::HideFavicon() {
+ hide_favicon_ = true;
+}
+
+bool WebUI::ShouldFocusLocationBarByDefault() const {
+ return focus_location_bar_by_default_;
+}
+
+void WebUI::FocusLocationBarByDefault() {
+ focus_location_bar_by_default_ = true;
+}
+
+bool WebUI::ShouldHideURL() const {
+ return should_hide_url_;
+}
+
+void WebUI::HideURL() {
+ should_hide_url_ = true;
+}
+
+const string16& WebUI::GetOverriddenTitle() const {
+ return overridden_title_;
+}
+
+void WebUI::OverrideTitle(const string16& title) {
+ overridden_title_ = title;
+}
+
+content::PageTransition WebUI::GetLinkTransitionType() const {
+ return link_transition_type_;
+}
+
+void WebUI::SetLinkTransitionType(content::PageTransition type) {
+ link_transition_type_ = type;
+}
+
+int WebUI::GetBindings() const {
+ return bindings_;
+}
+
+void WebUI::SetBindings(int bindings) {
+ bindings_ = bindings;
+}
+
+void WebUI::SetFrameXPath(const std::string& xpath) {
+ frame_xpath_ = xpath;
+}
+
+WebUIController* WebUI::GetController() const {
+ return controller_.get();
+}
+
+void WebUI::SetController(WebUIController* controller) {
+ controller_.reset(controller);
Jói 2012/01/17 17:34:05 There might be a bug here w.r.t. the ownership mod
jam 2012/01/17 17:38:35 scoped_ptr::reset() does that :)
+}
+
void WebUI::CallJavascriptFunction(const std::string& function_name) {
DCHECK(IsStringASCII(function_name));
string16 javascript = ASCIIToUTF16(function_name + "();");

Powered by Google App Engine
This is Rietveld 408576698