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

Side by Side Diff: chrome/browser/ui/webui/about_ui.cc

Issue 11881055: Simplify WebUI data sources. Currently WebUI data sources implement a URLDataSourceDelegate interfa… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix clang Created 7 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/about_ui.h" 5 #include "chrome/browser/ui/webui/about_ui.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 19 matching lines...) Expand all
30 #include "chrome/browser/about_flags.h" 30 #include "chrome/browser/about_flags.h"
31 #include "chrome/browser/browser_about_handler.h" 31 #include "chrome/browser/browser_about_handler.h"
32 #include "chrome/browser/browser_process.h" 32 #include "chrome/browser/browser_process.h"
33 #include "chrome/browser/defaults.h" 33 #include "chrome/browser/defaults.h"
34 #include "chrome/browser/memory_details.h" 34 #include "chrome/browser/memory_details.h"
35 #include "chrome/browser/net/predictor.h" 35 #include "chrome/browser/net/predictor.h"
36 #include "chrome/browser/net/url_fixer_upper.h" 36 #include "chrome/browser/net/url_fixer_upper.h"
37 #include "chrome/browser/profiles/profile.h" 37 #include "chrome/browser/profiles/profile.h"
38 #include "chrome/browser/profiles/profile_manager.h" 38 #include "chrome/browser/profiles/profile_manager.h"
39 #include "chrome/browser/ui/browser_dialogs.h" 39 #include "chrome/browser/ui/browser_dialogs.h"
40 #include "chrome/browser/ui/webui/chrome_url_data_manager.h" 40 #include "chrome/browser/ui/webui/web_ui_util.h"
41 #include "chrome/common/chrome_paths.h" 41 #include "chrome/common/chrome_paths.h"
42 #include "chrome/common/jstemplate_builder.h" 42 #include "chrome/common/jstemplate_builder.h"
43 #include "chrome/common/render_messages.h" 43 #include "chrome/common/render_messages.h"
44 #include "chrome/common/url_constants.h" 44 #include "chrome/common/url_constants.h"
45 #include "content/public/browser/browser_thread.h" 45 #include "content/public/browser/browser_thread.h"
46 #include "content/public/browser/render_process_host.h" 46 #include "content/public/browser/render_process_host.h"
47 #include "content/public/browser/render_view_host.h" 47 #include "content/public/browser/render_view_host.h"
48 #include "content/public/browser/web_contents.h" 48 #include "content/public/browser/web_contents.h"
49 #include "content/public/common/content_client.h" 49 #include "content/public/common/content_client.h"
50 #include "content/public/common/process_type.h" 50 #include "content/public/common/process_type.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
109 return StringPrintf("<meta http-equiv=\"refresh\" content=\"0;%s\">", 109 return StringPrintf("<meta http-equiv=\"refresh\" content=\"0;%s\">",
110 chrome::kChromeUIMemoryRedirectURL); 110 chrome::kChromeUIMemoryRedirectURL);
111 } 111 }
112 112
113 // Handling about:memory is complicated enough to encapsulate its related 113 // Handling about:memory is complicated enough to encapsulate its related
114 // methods into a single class. The user should create it (on the heap) and call 114 // methods into a single class. The user should create it (on the heap) and call
115 // its |StartFetch()| method. 115 // its |StartFetch()| method.
116 class AboutMemoryHandler : public MemoryDetails { 116 class AboutMemoryHandler : public MemoryDetails {
117 public: 117 public:
118 AboutMemoryHandler(const base::WeakPtr<AboutUIHTMLSource>& source, 118 AboutMemoryHandler(const base::WeakPtr<AboutUIHTMLSource>& source,
119 int request_id) 119 const content::URLDataSource::GotDataCallback& callback)
120 : source_(source), 120 : source_(source),
121 request_id_(request_id) { 121 callback_(callback) {
122 } 122 }
123 123
124 virtual void OnDetailsAvailable() OVERRIDE; 124 virtual void OnDetailsAvailable() OVERRIDE;
125 125
126 private: 126 private:
127 ~AboutMemoryHandler() {} 127 ~AboutMemoryHandler() {}
128 128
129 void BindProcessMetrics(DictionaryValue* data, 129 void BindProcessMetrics(DictionaryValue* data,
130 ProcessMemoryInformation* info); 130 ProcessMemoryInformation* info);
131 void AppendProcess(ListValue* child_data, ProcessMemoryInformation* info); 131 void AppendProcess(ListValue* child_data, ProcessMemoryInformation* info);
132 132
133 base::WeakPtr<AboutUIHTMLSource> source_; 133 base::WeakPtr<AboutUIHTMLSource> source_;
134 int request_id_; 134 const content::URLDataSource::GotDataCallback& callback_;
135 135
136 DISALLOW_COPY_AND_ASSIGN(AboutMemoryHandler); 136 DISALLOW_COPY_AND_ASSIGN(AboutMemoryHandler);
137 }; 137 };
138 138
139 #if defined(OS_CHROMEOS) 139 #if defined(OS_CHROMEOS)
140 class ChromeOSTermsHandler 140 class ChromeOSTermsHandler
141 : public base::RefCountedThreadSafe<ChromeOSTermsHandler> { 141 : public base::RefCountedThreadSafe<ChromeOSTermsHandler> {
142 public: 142 public:
143 static void Start(const base::WeakPtr<AboutUIHTMLSource>& source, 143 static void Start(const base::WeakPtr<AboutUIHTMLSource>& source,
144 const std::string& path, 144 const std::string& path,
145 int request_id) { 145 const content::URLDataSource::GotDataCallback& callback) {
146 scoped_refptr<ChromeOSTermsHandler> handler( 146 scoped_refptr<ChromeOSTermsHandler> handler(
147 new ChromeOSTermsHandler(source, path, request_id)); 147 new ChromeOSTermsHandler(source, path, callback));
148 handler->StartOnUIThread(); 148 handler->StartOnUIThread();
149 } 149 }
150 150
151 private: 151 private:
152 friend class base::RefCountedThreadSafe<ChromeOSTermsHandler>; 152 friend class base::RefCountedThreadSafe<ChromeOSTermsHandler>;
153 153
154 ChromeOSTermsHandler(const base::WeakPtr<AboutUIHTMLSource>& source, 154 ChromeOSTermsHandler(const base::WeakPtr<AboutUIHTMLSource>& source,
155 const std::string& path, 155 const std::string& path,
156 int request_id) 156 const content::URLDataSource::GotDataCallback& callback)
157 : source_(source), 157 : source_(source),
158 path_(path), 158 path_(path),
159 request_id_(request_id), 159 callback_(callback),
160 // Previously we were using "initial locale" http://crbug.com/145142 160 // Previously we were using "initial locale" http://crbug.com/145142
161 locale_(g_browser_process->GetApplicationLocale()) { 161 locale_(g_browser_process->GetApplicationLocale()) {
162 } 162 }
163 163
164 ~ChromeOSTermsHandler() {} 164 ~ChromeOSTermsHandler() {}
165 165
166 void StartOnUIThread() { 166 void StartOnUIThread() {
167 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 167 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
168 BrowserThread::PostTask( 168 BrowserThread::PostTask(
169 BrowserThread::FILE, FROM_HERE, 169 BrowserThread::FILE, FROM_HERE,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 204
205 void ResponseOnUIThread() { 205 void ResponseOnUIThread() {
206 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 206 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
207 if (!source_) 207 if (!source_)
208 return; 208 return;
209 209
210 // If we fail to load Chrome OS EULA from disk, load it from resources. 210 // If we fail to load Chrome OS EULA from disk, load it from resources.
211 // Do nothing if OEM EULA load failed. 211 // Do nothing if OEM EULA load failed.
212 if (contents_.empty() && path_ != chrome::kOemEulaURLPath) 212 if (contents_.empty() && path_ != chrome::kOemEulaURLPath)
213 contents_ = l10n_util::GetStringUTF8(IDS_TERMS_HTML); 213 contents_ = l10n_util::GetStringUTF8(IDS_TERMS_HTML);
214 source_->FinishDataRequest(contents_, request_id_); 214 source_->FinishDataRequest(contents_, callback_);
215 } 215 }
216 216
217 // Where the results are fed to. 217 // Where the results are fed to.
218 base::WeakPtr<AboutUIHTMLSource> source_; 218 base::WeakPtr<AboutUIHTMLSource> source_;
219 219
220 // Path in the URL. 220 // Path in the URL.
221 std::string path_; 221 std::string path_;
222 222
223 // ID identifying the request. 223 // Callback to run with the response.
224 int request_id_; 224 const content::URLDataSource::GotDataCallback& callback_;
225 225
226 // Locale of the EULA. 226 // Locale of the EULA.
227 std::string locale_; 227 std::string locale_;
228 228
229 // EULA contents that was loaded from file. 229 // EULA contents that was loaded from file.
230 std::string contents_; 230 std::string contents_;
231 231
232 DISALLOW_COPY_AND_ASSIGN(ChromeOSTermsHandler); 232 DISALLOW_COPY_AND_ASSIGN(ChromeOSTermsHandler);
233 }; 233 };
234 234
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 return output; 497 return output;
498 } 498 }
499 499
500 #endif // USE_ASH 500 #endif // USE_ASH
501 501
502 // AboutDnsHandler bounces the request back to the IO thread to collect 502 // AboutDnsHandler bounces the request back to the IO thread to collect
503 // the DNS information. 503 // the DNS information.
504 class AboutDnsHandler : public base::RefCountedThreadSafe<AboutDnsHandler> { 504 class AboutDnsHandler : public base::RefCountedThreadSafe<AboutDnsHandler> {
505 public: 505 public:
506 static void Start(const base::WeakPtr<AboutUIHTMLSource>& source, 506 static void Start(const base::WeakPtr<AboutUIHTMLSource>& source,
507 int request_id) { 507 const content::URLDataSource::GotDataCallback& callback) {
508 scoped_refptr<AboutDnsHandler> handler( 508 scoped_refptr<AboutDnsHandler> handler(
509 new AboutDnsHandler(source, request_id)); 509 new AboutDnsHandler(source, callback));
510 handler->StartOnUIThread(); 510 handler->StartOnUIThread();
511 } 511 }
512 512
513 private: 513 private:
514 friend class base::RefCountedThreadSafe<AboutDnsHandler>; 514 friend class base::RefCountedThreadSafe<AboutDnsHandler>;
515 515
516 AboutDnsHandler(const base::WeakPtr<AboutUIHTMLSource>& source, 516 AboutDnsHandler(const base::WeakPtr<AboutUIHTMLSource>& source,
517 int request_id) 517 const content::URLDataSource::GotDataCallback& callback)
518 : source_(source), 518 : source_(source),
519 request_id_(request_id) { 519 callback_(callback) {
520 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 520 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
521 } 521 }
522 522
523 virtual ~AboutDnsHandler() {} 523 virtual ~AboutDnsHandler() {}
524 524
525 // Calls FinishOnUIThread() on completion. 525 // Calls FinishOnUIThread() on completion.
526 void StartOnUIThread() { 526 void StartOnUIThread() {
527 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 527 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
528 chrome_browser_net::Predictor* predictor = 528 chrome_browser_net::Predictor* predictor =
529 source_->profile()->GetNetworkPredictor(); 529 source_->profile()->GetNetworkPredictor();
(...skipping 12 matching lines...) Expand all
542 AppendFooter(&data); 542 AppendFooter(&data);
543 543
544 BrowserThread::PostTask( 544 BrowserThread::PostTask(
545 BrowserThread::UI, FROM_HERE, 545 BrowserThread::UI, FROM_HERE,
546 base::Bind(&AboutDnsHandler::FinishOnUIThread, this, data)); 546 base::Bind(&AboutDnsHandler::FinishOnUIThread, this, data));
547 } 547 }
548 548
549 void FinishOnUIThread(const std::string& data) { 549 void FinishOnUIThread(const std::string& data) {
550 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 550 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
551 if (source_) 551 if (source_)
552 source_->FinishDataRequest(data, request_id_); 552 source_->FinishDataRequest(data, callback_);
553 } 553 }
554 554
555 // Where the results are fed to. 555 // Where the results are fed to.
556 base::WeakPtr<AboutUIHTMLSource> source_; 556 base::WeakPtr<AboutUIHTMLSource> source_;
557 557
558 // ID identifying the request. 558 // Callback to run with the response.
559 int request_id_; 559 const content::URLDataSource::GotDataCallback& callback_;
560 560
561 DISALLOW_COPY_AND_ASSIGN(AboutDnsHandler); 561 DISALLOW_COPY_AND_ASSIGN(AboutDnsHandler);
562 }; 562 };
563 563
564 void FinishMemoryDataRequest(const std::string& path, 564 void FinishMemoryDataRequest(
565 AboutUIHTMLSource* source, 565 const std::string& path,
566 int request_id) { 566 AboutUIHTMLSource* source,
567 const content::URLDataSource::GotDataCallback& callback) {
567 if (path == kStringsJsPath) { 568 if (path == kStringsJsPath) {
568 // The AboutMemoryHandler cleans itself up, but |StartFetch()| will want 569 // The AboutMemoryHandler cleans itself up, but |StartFetch()| will want
569 // the refcount to be greater than 0. 570 // the refcount to be greater than 0.
570 scoped_refptr<AboutMemoryHandler> 571 scoped_refptr<AboutMemoryHandler>
571 handler(new AboutMemoryHandler(source->AsWeakPtr(), request_id)); 572 handler(new AboutMemoryHandler(source->AsWeakPtr(), callback));
572 // TODO(jamescook): Maybe this shouldn't update UMA? 573 // TODO(jamescook): Maybe this shouldn't update UMA?
573 handler->StartFetch(MemoryDetails::UPDATE_USER_METRICS); 574 handler->StartFetch(MemoryDetails::UPDATE_USER_METRICS);
574 } else { 575 } else {
575 source->FinishDataRequest( 576 source->FinishDataRequest(
576 ResourceBundle::GetSharedInstance().GetRawDataResource( 577 ResourceBundle::GetSharedInstance().GetRawDataResource(
577 path == kMemoryJsPath ? IDR_ABOUT_MEMORY_JS : 578 path == kMemoryJsPath ? IDR_ABOUT_MEMORY_JS :
578 IDR_ABOUT_MEMORY_HTML).as_string(), request_id); 579 IDR_ABOUT_MEMORY_HTML).as_string(), callback);
579 } 580 }
580 } 581 }
581 582
582 // Handler for filling in the "about:stats" page, as called by the browser's 583 // Handler for filling in the "about:stats" page, as called by the browser's
583 // About handler processing. 584 // About handler processing.
584 // |query| is roughly the query string of the about:stats URL. 585 // |query| is roughly the query string of the about:stats URL.
585 // Returns a string containing the HTML to render for the about:stats page. 586 // Returns a string containing the HTML to render for the about:stats page.
586 // Conditional Output: 587 // Conditional Output:
587 // if |query| is "json", returns a JSON format of all counters. 588 // if |query| is "json", returns a JSON format of all counters.
588 // if |query| is "raw", returns plain text of counter deltas. 589 // if |query| is "raw", returns plain text of counter deltas.
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
940 AppendProcess(child_data, &process.processes[index]); 941 AppendProcess(child_data, &process.processes[index]);
941 } 942 }
942 943
943 root->SetBoolean("show_other_browsers", 944 root->SetBoolean("show_other_browsers",
944 browser_defaults::kShowOtherBrowsersInAboutMemory); 945 browser_defaults::kShowOtherBrowsersInAboutMemory);
945 946
946 DictionaryValue load_time_data; 947 DictionaryValue load_time_data;
947 load_time_data.SetString( 948 load_time_data.SetString(
948 "summary_desc", 949 "summary_desc",
949 l10n_util::GetStringUTF16(IDS_MEMORY_USAGE_SUMMARY_DESC)); 950 l10n_util::GetStringUTF16(IDS_MEMORY_USAGE_SUMMARY_DESC));
950 URLDataSource::SetFontAndTextDirection(&load_time_data); 951 web_ui_util::SetFontAndTextDirection(&load_time_data);
951 load_time_data.Set("jstemplateData", root.release()); 952 load_time_data.Set("jstemplateData", root.release());
952 953
953 jstemplate_builder::UseVersion2 version2; 954 jstemplate_builder::UseVersion2 version2;
954 std::string data; 955 std::string data;
955 jstemplate_builder::AppendJsonJS(&load_time_data, &data); 956 jstemplate_builder::AppendJsonJS(&load_time_data, &data);
956 source_->FinishDataRequest(data, request_id_); 957 source_->FinishDataRequest(data, callback_);
957 } 958 }
958 959
959 } // namespace 960 } // namespace
960 961
961 // AboutUIHTMLSource ---------------------------------------------------------- 962 // AboutUIHTMLSource ----------------------------------------------------------
962 963
963 AboutUIHTMLSource::AboutUIHTMLSource(const std::string& source_name, 964 AboutUIHTMLSource::AboutUIHTMLSource(const std::string& source_name,
964 Profile* profile) 965 Profile* profile)
965 : source_name_(source_name), 966 : source_name_(source_name),
966 profile_(profile) {} 967 profile_(profile) {}
967 968
968 AboutUIHTMLSource::~AboutUIHTMLSource() {} 969 AboutUIHTMLSource::~AboutUIHTMLSource() {}
969 970
970 std::string AboutUIHTMLSource::GetSource() { 971 std::string AboutUIHTMLSource::GetSource() {
971 return source_name_; 972 return source_name_;
972 } 973 }
973 974
974 void AboutUIHTMLSource::StartDataRequest(const std::string& path, 975 void AboutUIHTMLSource::StartDataRequest(
975 bool is_incognito, 976 const std::string& path,
976 int request_id) { 977 bool is_incognito,
978 const content::URLDataSource::GotDataCallback& callback) {
977 std::string response; 979 std::string response;
978 // Add your data source here, in alphabetical order. 980 // Add your data source here, in alphabetical order.
979 if (source_name_ == chrome::kChromeUIChromeURLsHost) { 981 if (source_name_ == chrome::kChromeUIChromeURLsHost) {
980 response = ChromeURLs(); 982 response = ChromeURLs();
981 } else if (source_name_ == chrome::kChromeUICreditsHost) { 983 } else if (source_name_ == chrome::kChromeUICreditsHost) {
982 int idr = (path == kCreditsJsPath) ? IDR_CREDITS_JS : IDR_CREDITS_HTML; 984 int idr = (path == kCreditsJsPath) ? IDR_CREDITS_JS : IDR_CREDITS_HTML;
983 response = ResourceBundle::GetSharedInstance().GetRawDataResource( 985 response = ResourceBundle::GetSharedInstance().GetRawDataResource(
984 idr).as_string(); 986 idr).as_string();
985 #if defined(OS_CHROMEOS) 987 #if defined(OS_CHROMEOS)
986 } else if (source_name_ == chrome::kChromeUIDiscardsHost) { 988 } else if (source_name_ == chrome::kChromeUIDiscardsHost) {
987 response = AboutDiscards(path); 989 response = AboutDiscards(path);
988 #endif 990 #endif
989 #if defined(USE_ASH) 991 #if defined(USE_ASH)
990 } else if (source_name_ == chrome::kChromeUITransparencyHost) { 992 } else if (source_name_ == chrome::kChromeUITransparencyHost) {
991 response = AboutTransparency(path); 993 response = AboutTransparency(path);
992 #endif 994 #endif
993 } else if (source_name_ == chrome::kChromeUIDNSHost) { 995 } else if (source_name_ == chrome::kChromeUIDNSHost) {
994 AboutDnsHandler::Start(AsWeakPtr(), request_id); 996 AboutDnsHandler::Start(AsWeakPtr(), callback);
995 return; 997 return;
996 #if defined(OS_LINUX) || defined(OS_OPENBSD) 998 #if defined(OS_LINUX) || defined(OS_OPENBSD)
997 } else if (source_name_ == chrome::kChromeUILinuxProxyConfigHost) { 999 } else if (source_name_ == chrome::kChromeUILinuxProxyConfigHost) {
998 response = AboutLinuxProxyConfig(); 1000 response = AboutLinuxProxyConfig();
999 #endif 1001 #endif
1000 } else if (source_name_ == chrome::kChromeUIMemoryHost) { 1002 } else if (source_name_ == chrome::kChromeUIMemoryHost) {
1001 response = GetAboutMemoryRedirectResponse(profile()); 1003 response = GetAboutMemoryRedirectResponse(profile());
1002 } else if (source_name_ == chrome::kChromeUIMemoryRedirectHost) { 1004 } else if (source_name_ == chrome::kChromeUIMemoryRedirectHost) {
1003 FinishMemoryDataRequest(path, this, request_id); 1005 FinishMemoryDataRequest(path, this, callback);
1004 return; 1006 return;
1005 #if defined(OS_CHROMEOS) 1007 #if defined(OS_CHROMEOS)
1006 } else if (source_name_ == chrome::kChromeUINetworkHost) { 1008 } else if (source_name_ == chrome::kChromeUINetworkHost) {
1007 response = chromeos::about_ui::AboutNetwork(path); 1009 response = chromeos::about_ui::AboutNetwork(path);
1008 } else if (source_name_ == chrome::kChromeUIOSCreditsHost) { 1010 } else if (source_name_ == chrome::kChromeUIOSCreditsHost) {
1009 response = ResourceBundle::GetSharedInstance().GetRawDataResource( 1011 response = ResourceBundle::GetSharedInstance().GetRawDataResource(
1010 IDR_OS_CREDITS_HTML).as_string(); 1012 IDR_OS_CREDITS_HTML).as_string();
1011 #endif 1013 #endif
1012 #if defined(OS_LINUX) || defined(OS_OPENBSD) 1014 #if defined(OS_LINUX) || defined(OS_OPENBSD)
1013 } else if (source_name_ == chrome::kChromeUISandboxHost) { 1015 } else if (source_name_ == chrome::kChromeUISandboxHost) {
1014 response = AboutSandbox(); 1016 response = AboutSandbox();
1015 #endif 1017 #endif
1016 } else if (source_name_ == chrome::kChromeUIStatsHost) { 1018 } else if (source_name_ == chrome::kChromeUIStatsHost) {
1017 response = AboutStats(path); 1019 response = AboutStats(path);
1018 } else if (source_name_ == chrome::kChromeUITermsHost) { 1020 } else if (source_name_ == chrome::kChromeUITermsHost) {
1019 #if defined(OS_CHROMEOS) 1021 #if defined(OS_CHROMEOS)
1020 ChromeOSTermsHandler::Start(AsWeakPtr(), path, request_id); 1022 ChromeOSTermsHandler::Start(AsWeakPtr(), path, callback);
1021 return; 1023 return;
1022 #else 1024 #else
1023 response = l10n_util::GetStringUTF8(IDS_TERMS_HTML); 1025 response = l10n_util::GetStringUTF8(IDS_TERMS_HTML);
1024 #endif 1026 #endif
1025 } 1027 }
1026 1028
1027 FinishDataRequest(response, request_id); 1029 FinishDataRequest(response, callback);
1028 } 1030 }
1029 1031
1030 void AboutUIHTMLSource::FinishDataRequest(const std::string& html, 1032 void AboutUIHTMLSource::FinishDataRequest(
1031 int request_id) { 1033 const std::string& html,
1034 const content::URLDataSource::GotDataCallback& callback) {
1032 std::string html_copy(html); 1035 std::string html_copy(html);
1033 url_data_source()->SendResponse( 1036 callback.Run(base::RefCountedString::TakeString(&html_copy));
1034 request_id, base::RefCountedString::TakeString(&html_copy));
1035 } 1037 }
1036 1038
1037 std::string AboutUIHTMLSource::GetMimeType(const std::string& path) const { 1039 std::string AboutUIHTMLSource::GetMimeType(const std::string& path) const {
1038 if (path == kCreditsJsPath || 1040 if (path == kCreditsJsPath ||
1039 path == kStatsJsPath || 1041 path == kStatsJsPath ||
1040 path == kStringsJsPath || 1042 path == kStringsJsPath ||
1041 path == kMemoryJsPath) { 1043 path == kMemoryJsPath) {
1042 return "application/javascript"; 1044 return "application/javascript";
1043 } 1045 }
1044 return "text/html"; 1046 return "text/html";
1045 } 1047 }
1046 1048
1047 AboutUI::AboutUI(content::WebUI* web_ui, const std::string& name) 1049 AboutUI::AboutUI(content::WebUI* web_ui, const std::string& name)
1048 : WebUIController(web_ui) { 1050 : WebUIController(web_ui) {
1049 Profile* profile = Profile::FromWebUI(web_ui); 1051 Profile* profile = Profile::FromWebUI(web_ui);
1050 1052
1051 #if defined(ENABLE_THEMES) 1053 #if defined(ENABLE_THEMES)
1052 // Set up the chrome://theme/ source. 1054 // Set up the chrome://theme/ source.
1053 ThemeSource* theme = new ThemeSource(profile); 1055 ThemeSource* theme = new ThemeSource(profile);
1054 ChromeURLDataManager::AddDataSource(profile, theme); 1056 ChromeURLDataManager::AddDataSource(profile, theme);
1055 #endif 1057 #endif
1056 1058
1057 content::URLDataSourceDelegate* source = new AboutUIHTMLSource(name, profile); 1059 AboutUIHTMLSource* source = new AboutUIHTMLSource(name, profile);
1058 ChromeURLDataManager::AddDataSource(profile, source); 1060 ChromeURLDataManager::AddDataSource(profile, source);
Evan Stade 2013/01/15 20:49:34 combine these lines?
jam 2013/01/15 21:09:08 (just tried it) that would take two lines
Evan Stade 2013/01/15 21:33:43 yea, but I still think it's better. For one thing,
jam 2013/01/15 21:39:47 Done. btw this is my style preference as well; but
1059 } 1061 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698