| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/browser_about_handler.h" | 5 #include "chrome/browser/browser_about_handler.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 #if defined(USE_TCMALLOC) | 81 #if defined(USE_TCMALLOC) |
| 82 #include "third_party/tcmalloc/chromium/src/google/malloc_extension.h" | 82 #include "third_party/tcmalloc/chromium/src/google/malloc_extension.h" |
| 83 #endif | 83 #endif |
| 84 | 84 |
| 85 using sync_api::SyncManager; | 85 using sync_api::SyncManager; |
| 86 | 86 |
| 87 using base::Time; | 87 using base::Time; |
| 88 using base::TimeDelta; | 88 using base::TimeDelta; |
| 89 | 89 |
| 90 #if defined(USE_TCMALLOC) | 90 #if defined(USE_TCMALLOC) |
| 91 // static |
| 92 AboutTcmallocOutputs* AboutTcmallocOutputs::GetInstance() { |
| 93 return Singleton<AboutTcmallocOutputs>::get(); |
| 94 } |
| 95 |
| 91 // Glue between the callback task and the method in the singleton. | 96 // Glue between the callback task and the method in the singleton. |
| 92 void AboutTcmallocRendererCallback(base::ProcessId pid, std::string output) { | 97 void AboutTcmallocRendererCallback(base::ProcessId pid, std::string output) { |
| 93 Singleton<AboutTcmallocOutputs>::get()->RendererCallback(pid, output); | 98 AboutTcmallocOutputs::GetInstance()->RendererCallback(pid, output); |
| 94 } | 99 } |
| 95 #endif | 100 #endif |
| 96 | 101 |
| 97 namespace { | 102 namespace { |
| 98 | 103 |
| 99 // The (alphabetized) paths used for the about pages. | 104 // The (alphabetized) paths used for the about pages. |
| 100 // Note: Keep these in sync with url_constants.h | 105 // Note: Keep these in sync with url_constants.h |
| 101 const char kAppCacheInternalsPath[] = "appcache-internals"; | 106 const char kAppCacheInternalsPath[] = "appcache-internals"; |
| 102 const char kBlobInternalsPath[] = "blob-internals"; | 107 const char kBlobInternalsPath[] = "blob-internals"; |
| 103 const char kCreditsPath[] = "credits"; | 108 const char kCreditsPath[] = "credits"; |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 357 // ID identifying the request. | 362 // ID identifying the request. |
| 358 int request_id_; | 363 int request_id_; |
| 359 | 364 |
| 360 DISALLOW_COPY_AND_ASSIGN(AboutDnsHandler); | 365 DISALLOW_COPY_AND_ASSIGN(AboutDnsHandler); |
| 361 }; | 366 }; |
| 362 | 367 |
| 363 #if defined(USE_TCMALLOC) | 368 #if defined(USE_TCMALLOC) |
| 364 std::string AboutTcmalloc(const std::string& query) { | 369 std::string AboutTcmalloc(const std::string& query) { |
| 365 std::string data; | 370 std::string data; |
| 366 AboutTcmallocOutputsType* outputs = | 371 AboutTcmallocOutputsType* outputs = |
| 367 Singleton<AboutTcmallocOutputs>::get()->outputs(); | 372 AboutTcmallocOutputs::GetInstance()->outputs(); |
| 368 | 373 |
| 369 // Display any stats for which we sent off requests the last time. | 374 // Display any stats for which we sent off requests the last time. |
| 370 data.append("<html><head><title>About tcmalloc</title></head><body>\n"); | 375 data.append("<html><head><title>About tcmalloc</title></head><body>\n"); |
| 371 data.append("<p>Stats as of last page load;"); | 376 data.append("<p>Stats as of last page load;"); |
| 372 data.append("reload to get stats as of this page load.</p>\n"); | 377 data.append("reload to get stats as of this page load.</p>\n"); |
| 373 data.append("<table width=\"100%\">\n"); | 378 data.append("<table width=\"100%\">\n"); |
| 374 for (AboutTcmallocOutputsType::const_iterator oit = outputs->begin(); | 379 for (AboutTcmallocOutputsType::const_iterator oit = outputs->begin(); |
| 375 oit != outputs->end(); | 380 oit != outputs->end(); |
| 376 oit++) { | 381 oit++) { |
| 377 data.append("<tr><td bgcolor=\"yellow\">"); | 382 data.append("<tr><td bgcolor=\"yellow\">"); |
| 378 data.append(oit->first); | 383 data.append(oit->first); |
| 379 data.append("</td></tr>\n"); | 384 data.append("</td></tr>\n"); |
| 380 data.append("<tr><td><pre>\n"); | 385 data.append("<tr><td><pre>\n"); |
| 381 data.append(oit->second); | 386 data.append(oit->second); |
| 382 data.append("</pre></td></tr>\n"); | 387 data.append("</pre></td></tr>\n"); |
| 383 } | 388 } |
| 384 data.append("</table>\n"); | 389 data.append("</table>\n"); |
| 385 data.append("</body></html>\n"); | 390 data.append("</body></html>\n"); |
| 386 | 391 |
| 387 // Reset our collector singleton. | 392 // Reset our collector singleton. |
| 388 outputs->clear(); | 393 outputs->clear(); |
| 389 | 394 |
| 390 // Populate the collector with stats from the local browser process | 395 // Populate the collector with stats from the local browser process |
| 391 // and send off requests to all the renderer processes. | 396 // and send off requests to all the renderer processes. |
| 392 char buffer[1024 * 32]; | 397 char buffer[1024 * 32]; |
| 393 MallocExtension::instance()->GetStats(buffer, sizeof(buffer)); | 398 MallocExtension::instance()->GetStats(buffer, sizeof(buffer)); |
| 394 std::string browser("Browser"); | 399 std::string browser("Browser"); |
| 395 Singleton<AboutTcmallocOutputs>::get()->SetOutput(browser, buffer); | 400 AboutTcmallocOutputs::GetInstance()->SetOutput(browser, buffer); |
| 396 RenderProcessHost::iterator it(RenderProcessHost::AllHostsIterator()); | 401 RenderProcessHost::iterator it(RenderProcessHost::AllHostsIterator()); |
| 397 while (!it.IsAtEnd()) { | 402 while (!it.IsAtEnd()) { |
| 398 it.GetCurrentValue()->Send(new ViewMsg_GetRendererTcmalloc); | 403 it.GetCurrentValue()->Send(new ViewMsg_GetRendererTcmalloc); |
| 399 it.Advance(); | 404 it.Advance(); |
| 400 } | 405 } |
| 401 | 406 |
| 402 return data; | 407 return data; |
| 403 } | 408 } |
| 404 #endif | 409 #endif |
| 405 | 410 |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 583 std::string data; | 588 std::string data; |
| 584 data.append("<!DOCTYPE HTML>\n"); | 589 data.append("<!DOCTYPE HTML>\n"); |
| 585 data.append("<html><head><meta charset=\"utf-8\"><title>"); | 590 data.append("<html><head><meta charset=\"utf-8\"><title>"); |
| 586 data.append(l10n_util::GetStringUTF8(IDS_ABOUT_SANDBOX_TITLE)); | 591 data.append(l10n_util::GetStringUTF8(IDS_ABOUT_SANDBOX_TITLE)); |
| 587 data.append("</title>"); | 592 data.append("</title>"); |
| 588 data.append("</head><body>\n"); | 593 data.append("</head><body>\n"); |
| 589 data.append("<h1>"); | 594 data.append("<h1>"); |
| 590 data.append(l10n_util::GetStringUTF8(IDS_ABOUT_SANDBOX_TITLE)); | 595 data.append(l10n_util::GetStringUTF8(IDS_ABOUT_SANDBOX_TITLE)); |
| 591 data.append("</h1>"); | 596 data.append("</h1>"); |
| 592 | 597 |
| 593 const int status = Singleton<ZygoteHost>()->sandbox_status(); | 598 const int status = ZygoteHost::GetInstance()->sandbox_status(); |
| 594 | 599 |
| 595 data.append("<table>"); | 600 data.append("<table>"); |
| 596 | 601 |
| 597 AboutSandboxRow(&data, "", IDS_ABOUT_SANDBOX_SUID_SANDBOX, | 602 AboutSandboxRow(&data, "", IDS_ABOUT_SANDBOX_SUID_SANDBOX, |
| 598 status & ZygoteHost::kSandboxSUID); | 603 status & ZygoteHost::kSandboxSUID); |
| 599 if (status & ZygoteHost::kSandboxPIDNS) { | 604 if (status & ZygoteHost::kSandboxPIDNS) { |
| 600 AboutSandboxRow(&data, " ", IDS_ABOUT_SANDBOX_PID_NAMESPACES, | 605 AboutSandboxRow(&data, " ", IDS_ABOUT_SANDBOX_PID_NAMESPACES, |
| 601 status & ZygoteHost::kSandboxPIDNS); | 606 status & ZygoteHost::kSandboxPIDNS); |
| 602 AboutSandboxRow(&data, " ", IDS_ABOUT_SANDBOX_NET_NAMESPACES, | 607 AboutSandboxRow(&data, " ", IDS_ABOUT_SANDBOX_NET_NAMESPACES, |
| 603 status & ZygoteHost::kSandboxNetNS); | 608 status & ZygoteHost::kSandboxNetNS); |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 824 AboutSource::AboutSource() | 829 AboutSource::AboutSource() |
| 825 : DataSource(chrome::kAboutScheme, MessageLoop::current()) { | 830 : DataSource(chrome::kAboutScheme, MessageLoop::current()) { |
| 826 // This should be a singleton. | 831 // This should be a singleton. |
| 827 DCHECK(!about_source); | 832 DCHECK(!about_source); |
| 828 about_source = this; | 833 about_source = this; |
| 829 | 834 |
| 830 // Add us to the global URL handler on the IO thread. | 835 // Add us to the global URL handler on the IO thread. |
| 831 BrowserThread::PostTask( | 836 BrowserThread::PostTask( |
| 832 BrowserThread::IO, FROM_HERE, | 837 BrowserThread::IO, FROM_HERE, |
| 833 NewRunnableMethod( | 838 NewRunnableMethod( |
| 834 Singleton<ChromeURLDataManager>::get(), | 839 ChromeURLDataManager::GetInstance(), |
| 835 &ChromeURLDataManager::AddDataSource, | 840 &ChromeURLDataManager::AddDataSource, |
| 836 make_scoped_refptr(this))); | 841 make_scoped_refptr(this))); |
| 837 } | 842 } |
| 838 | 843 |
| 839 AboutSource::~AboutSource() { | 844 AboutSource::~AboutSource() { |
| 840 about_source = NULL; | 845 about_source = NULL; |
| 841 } | 846 } |
| 842 | 847 |
| 843 void AboutSource::StartDataRequest(const std::string& path_raw, | 848 void AboutSource::StartDataRequest(const std::string& path_raw, |
| 844 bool is_off_the_record, int request_id) { | 849 bool is_off_the_record, int request_id) { |
| (...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1209 // Run the dialog. This will re-use the existing one if it's already up. | 1214 // Run the dialog. This will re-use the existing one if it's already up. |
| 1210 AboutIPCDialog::RunDialog(); | 1215 AboutIPCDialog::RunDialog(); |
| 1211 return true; | 1216 return true; |
| 1212 } | 1217 } |
| 1213 #endif | 1218 #endif |
| 1214 | 1219 |
| 1215 #endif // OFFICIAL_BUILD | 1220 #endif // OFFICIAL_BUILD |
| 1216 | 1221 |
| 1217 return false; | 1222 return false; |
| 1218 } | 1223 } |
| OLD | NEW |