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

Side by Side Diff: chrome/browser/ui/webui/uber/uber_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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/uber/uber_ui.h" 5 #include "chrome/browser/ui/webui/uber/uber_ui.h"
6 6
7 #include "base/stl_util.h" 7 #include "base/stl_util.h"
8 #include "base/utf_string_conversions.h" 8 #include "base/utf_string_conversions.h"
9 #include "chrome/browser/profiles/profile.h" 9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/ui/webui/chrome_url_data_manager.h" 10 #include "chrome/browser/ui/webui/chrome_url_data_manager.h"
11 #include "chrome/browser/ui/webui/chrome_web_ui_data_source.h" 11 #include "chrome/browser/ui/webui/chrome_web_ui_data_source.h"
12 #include "chrome/browser/ui/webui/chrome_web_ui_factory.h" 12 #include "chrome/browser/ui/webui/chrome_web_ui_factory.h"
13 #include "chrome/browser/ui/webui/extensions/extensions_ui.h" 13 #include "chrome/browser/ui/webui/extensions/extensions_ui.h"
14 #include "chrome/browser/ui/webui/options2/options_ui2.h" 14 #include "chrome/browser/ui/webui/options2/options_ui2.h"
15 #include "chrome/common/url_constants.h" 15 #include "chrome/common/url_constants.h"
16 #include "content/browser/webui/web_ui.h"
16 #include "content/public/browser/web_contents.h" 17 #include "content/public/browser/web_contents.h"
17 #include "grit/browser_resources.h" 18 #include "grit/browser_resources.h"
18 #include "grit/chromium_strings.h" 19 #include "grit/chromium_strings.h"
19 #include "grit/generated_resources.h" 20 #include "grit/generated_resources.h"
20 21
21 using content::WebContents; 22 using content::WebContents;
22 23
23 namespace { 24 namespace {
24 25
25 ChromeWebUIDataSource* CreateUberHTMLSource() { 26 ChromeWebUIDataSource* CreateUberHTMLSource() {
(...skipping 17 matching lines...) Expand all
43 #if defined(OS_CHROMEOS) 44 #if defined(OS_CHROMEOS)
44 source->AddString("aboutPageHost", 45 source->AddString("aboutPageHost",
45 ASCIIToUTF16(chrome::kAboutOptionsSubPage)); 46 ASCIIToUTF16(chrome::kAboutOptionsSubPage));
46 source->AddLocalizedString("aboutPageDisplayName", IDS_ABOUT_TAB_TITLE); 47 source->AddLocalizedString("aboutPageDisplayName", IDS_ABOUT_TAB_TITLE);
47 #endif 48 #endif
48 return source; 49 return source;
49 } 50 }
50 51
51 } // namespace 52 } // namespace
52 53
53 UberUI::UberUI(WebContents* contents) : WebUI(contents, this) { 54 UberUI::UberUI(WebUI* web_ui) : WebUIController(web_ui) {
54 Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); 55 Profile* profile = Profile::FromBrowserContext(
56 web_ui->web_contents()->GetBrowserContext());
55 profile->GetChromeURLDataManager()->AddDataSource(CreateUberHTMLSource()); 57 profile->GetChromeURLDataManager()->AddDataSource(CreateUberHTMLSource());
56 58
57 RegisterSubpage(chrome::kChromeUISettingsFrameURL); 59 RegisterSubpage(chrome::kChromeUISettingsFrameURL);
58 RegisterSubpage(chrome::kChromeUIExtensionsFrameURL); 60 RegisterSubpage(chrome::kChromeUIExtensionsFrameURL);
59 #if defined(OS_CHROMEOS) 61 #if defined(OS_CHROMEOS)
60 RegisterSubpage(chrome::kChromeUIAboutPageFrameURL); 62 RegisterSubpage(chrome::kChromeUIAboutPageFrameURL);
61 #endif 63 #endif
62 } 64 }
63 65
64 UberUI::~UberUI() { 66 UberUI::~UberUI() {
65 STLDeleteValues(&sub_uis_); 67 STLDeleteValues(&sub_uis_);
66 } 68 }
67 69
68 void UberUI::RegisterSubpage(const std::string& page_url) { 70 void UberUI::RegisterSubpage(const std::string& page_url) {
69 WebUI* web_ui = ChromeWebUIFactory::GetInstance()->CreateWebUIForURL( 71 WebUI* webui = web_ui()->web_contents()->CreateWebUI(GURL(page_url));
70 web_contents_, GURL(page_url));
71 72
72 web_ui->set_frame_xpath("//iframe[@src='" + page_url + "']"); 73 webui->SetFrameXPath("//iframe[@src='" + page_url + "']");
73 sub_uis_[page_url] = web_ui; 74 sub_uis_[page_url] = webui;
74 } 75 }
75 76
76 void UberUI::RenderViewCreated(RenderViewHost* render_view_host) { 77 void UberUI::RenderViewCreated(RenderViewHost* render_view_host) {
77 for (SubpageMap::iterator iter = sub_uis_.begin(); iter != sub_uis_.end(); 78 for (SubpageMap::iterator iter = sub_uis_.begin(); iter != sub_uis_.end();
78 ++iter) { 79 ++iter) {
79 iter->second->controller()->RenderViewCreated(render_view_host); 80 iter->second->GetController()->RenderViewCreated(render_view_host);
80 } 81 }
81 } 82 }
82 83
83 void UberUI::RenderViewReused(RenderViewHost* render_view_host) { 84 void UberUI::RenderViewReused(RenderViewHost* render_view_host) {
84 for (SubpageMap::iterator iter = sub_uis_.begin(); iter != sub_uis_.end(); 85 for (SubpageMap::iterator iter = sub_uis_.begin(); iter != sub_uis_.end();
85 ++iter) { 86 ++iter) {
86 iter->second->controller()->RenderViewReused(render_view_host); 87 iter->second->GetController()->RenderViewReused(render_view_host);
87 } 88 }
88 } 89 }
89 90
90 void UberUI::DidBecomeActiveForReusedRenderView() { 91 void UberUI::DidBecomeActiveForReusedRenderView() {
91 for (SubpageMap::iterator iter = sub_uis_.begin(); iter != sub_uis_.end(); 92 for (SubpageMap::iterator iter = sub_uis_.begin(); iter != sub_uis_.end();
92 ++iter) { 93 ++iter) {
93 iter->second->controller()->DidBecomeActiveForReusedRenderView(); 94 iter->second->GetController()->DidBecomeActiveForReusedRenderView();
94 } 95 }
95 } 96 }
96 97
97 bool UberUI::OverrideHandleWebUIMessage(const GURL& source_url, 98 bool UberUI::OverrideHandleWebUIMessage(const GURL& source_url,
98 const std::string& message, 99 const std::string& message,
99 const ListValue& args) { 100 const ListValue& args) {
100 // Find the appropriate subpage and forward the message. 101 // Find the appropriate subpage and forward the message.
101 SubpageMap::iterator subpage = sub_uis_.find(source_url.GetOrigin().spec()); 102 SubpageMap::iterator subpage = sub_uis_.find(source_url.GetOrigin().spec());
102 if (subpage == sub_uis_.end()) { 103 if (subpage == sub_uis_.end()) {
103 // The message was sent from the uber page itself. 104 // The message was sent from the uber page itself.
104 DCHECK_EQ(std::string(chrome::kChromeUIUberHost), source_url.host()); 105 DCHECK_EQ(std::string(chrome::kChromeUIUberHost), source_url.host());
105 return false; 106 return false;
106 } 107 }
107 108
108 // The message was sent from a subpage. 109 // The message was sent from a subpage.
109 // TODO(jam) fix this to use interface 110 // TODO(jam) fix this to use interface
110 //return subpage->second->controller()->OverrideHandleWebUIMessage( 111 //return subpage->second->GetController()->OverrideHandleWebUIMessage(
111 // source_url, message, args); 112 // source_url, message, args);
112 subpage->second->OnWebUISend(source_url, message, args); 113 subpage->second->OnWebUISend(source_url, message, args);
113 return true; 114 return true;
114 } 115 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698