Add a new GetInstance() method for singleton classes used in chrome/browser files.

This CL includes half of the files under chrome/browser using Singleton<T>.
The rest of the files will be sent in a second CL.

In one case I used a LazyInstance<T> instead of Singleton<T> as that was simpler and necessary since T was a typedef and can't add member functions to it.

BUG=65298
TEST=all existing tests should continue to pass.

Review URL: http://codereview.chromium.org/5519016

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@68723 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/automation/testing_automation_provider.cc b/chrome/browser/automation/testing_automation_provider.cc
index 5aee9ee..96c52ec 100644
--- a/chrome/browser/automation/testing_automation_provider.cc
+++ b/chrome/browser/automation/testing_automation_provider.cc
@@ -1829,7 +1829,7 @@
 void TestingAutomationProvider::GetShowingAppModalDialog(bool* showing_dialog,
                                                          int* dialog_button) {
   AppModalDialog* active_dialog =
-      Singleton<AppModalDialogQueue>()->active_dialog();
+      AppModalDialogQueue::GetInstance()->active_dialog();
   if (!active_dialog) {
     *showing_dialog = false;
     *dialog_button = MessageBoxFlags::DIALOGBUTTON_NONE;
@@ -1848,7 +1848,7 @@
   *success = false;
 
   NativeAppModalDialog* native_dialog =
-      Singleton<AppModalDialogQueue>()->active_dialog()->native_dialog();
+      AppModalDialogQueue::GetInstance()->active_dialog()->native_dialog();
   if (native_dialog &&
       (native_dialog->GetAppModalDialogButtons() & button) == button) {
     if ((button & MessageBoxFlags::DIALOGBUTTON_OK) ==
@@ -1880,7 +1880,7 @@
 
 void TestingAutomationProvider::WaitForAppModalDialogToBeShown(
     IPC::Message* reply_message) {
-  if (Singleton<AppModalDialogQueue>()->HasActiveDialog()) {
+  if (AppModalDialogQueue::GetInstance()->HasActiveDialog()) {
     AutomationMsg_WaitForAppModalDialogToBeShown::WriteReplyParams(
         reply_message, true);
     Send(reply_message);
diff --git a/chrome/browser/browser_about_handler.cc b/chrome/browser/browser_about_handler.cc
index de02f04..d37a100 100644
--- a/chrome/browser/browser_about_handler.cc
+++ b/chrome/browser/browser_about_handler.cc
@@ -17,6 +17,7 @@
 #include "base/metrics/stats_table.h"
 #include "base/path_service.h"
 #include "base/platform_thread.h"
+#include "base/singleton.h"
 #include "base/stringprintf.h"
 #include "base/string_number_conversions.h"
 #include "base/string_piece.h"
@@ -88,9 +89,14 @@
 using base::TimeDelta;
 
 #if defined(USE_TCMALLOC)
+// static
+AboutTcmallocOutputs* AboutTcmallocOutputs::GetInstance() {
+  return Singleton<AboutTcmallocOutputs>::get();
+}
+
 // Glue between the callback task and the method in the singleton.
 void AboutTcmallocRendererCallback(base::ProcessId pid, std::string output) {
-  Singleton<AboutTcmallocOutputs>::get()->RendererCallback(pid, output);
+  AboutTcmallocOutputs::GetInstance()->RendererCallback(pid, output);
 }
 #endif
 
@@ -364,7 +370,7 @@
 std::string AboutTcmalloc(const std::string& query) {
   std::string data;
   AboutTcmallocOutputsType* outputs =
-      Singleton<AboutTcmallocOutputs>::get()->outputs();
+      AboutTcmallocOutputs::GetInstance()->outputs();
 
   // Display any stats for which we sent off requests the last time.
   data.append("<html><head><title>About tcmalloc</title></head><body>\n");
@@ -392,7 +398,7 @@
   char buffer[1024 * 32];
   MallocExtension::instance()->GetStats(buffer, sizeof(buffer));
   std::string browser("Browser");
-  Singleton<AboutTcmallocOutputs>::get()->SetOutput(browser, buffer);
+  AboutTcmallocOutputs::GetInstance()->SetOutput(browser, buffer);
   RenderProcessHost::iterator it(RenderProcessHost::AllHostsIterator());
   while (!it.IsAtEnd()) {
     it.GetCurrentValue()->Send(new ViewMsg_GetRendererTcmalloc);
@@ -590,7 +596,7 @@
   data.append(l10n_util::GetStringUTF8(IDS_ABOUT_SANDBOX_TITLE));
   data.append("</h1>");
 
-  const int status = Singleton<ZygoteHost>()->sandbox_status();
+  const int status = ZygoteHost::GetInstance()->sandbox_status();
 
   data.append("<table>");
 
@@ -831,7 +837,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(this)));
 }
diff --git a/chrome/browser/browser_about_handler.h b/chrome/browser/browser_about_handler.h
index de8f1bf..e0a0dbf 100644
--- a/chrome/browser/browser_about_handler.h
+++ b/chrome/browser/browser_about_handler.h
@@ -12,9 +12,9 @@
 #include <string>
 
 #include "base/process.h"
-#include "base/singleton.h"
 #include "base/string_util.h"
 
+template <typename T> struct DefaultSingletonTraits;
 class GURL;
 class Profile;
 
@@ -38,7 +38,8 @@
 
 class AboutTcmallocOutputs {
  public:
-  AboutTcmallocOutputs() {}
+  // Returns the singleton instance.
+  static AboutTcmallocOutputs* GetInstance();
 
   AboutTcmallocOutputsType* outputs() { return &outputs_; }
 
@@ -55,6 +56,8 @@
   }
 
  private:
+  AboutTcmallocOutputs() {}
+
   AboutTcmallocOutputsType outputs_;
 
   friend struct DefaultSingletonTraits<AboutTcmallocOutputs>;
diff --git a/chrome/browser/browser_child_process_host.cc b/chrome/browser/browser_child_process_host.cc
index 5cfd536..6ad0c44 100644
--- a/chrome/browser/browser_child_process_host.cc
+++ b/chrome/browser/browser_child_process_host.cc
@@ -6,11 +6,11 @@
 
 #include "base/command_line.h"
 #include "base/file_path.h"
+#include "base/lazy_instance.h"
 #include "base/logging.h"
 #include "base/metrics/histogram.h"
 #include "base/path_service.h"
 #include "base/process_util.h"
-#include "base/singleton.h"
 #include "base/stl_util-inl.h"
 #include "base/string_util.h"
 #include "chrome/app/breakpad_mac.h"
@@ -34,6 +34,8 @@
 namespace {
 
 typedef std::list<BrowserChildProcessHost*> ChildProcessList;
+static base::LazyInstance<ChildProcessList> g_child_process_list(
+    base::LINKER_INITIALIZED);
 
 // The NotificationTask is used to notify about plugin process connection/
 // disconnection. It is needed because the notifications in the
@@ -63,12 +65,12 @@
     : Receiver(type, -1),
       ALLOW_THIS_IN_INITIALIZER_LIST(client_(this)),
       resource_dispatcher_host_(resource_dispatcher_host) {
-  Singleton<ChildProcessList>::get()->push_back(this);
+  g_child_process_list.Get().push_back(this);
 }
 
 
 BrowserChildProcessHost::~BrowserChildProcessHost() {
-  Singleton<ChildProcessList>::get()->remove(this);
+  g_child_process_list.Get().remove(this);
 
   if (resource_dispatcher_host_)
     resource_dispatcher_host_->CancelRequestsForProcess(id());
@@ -93,7 +95,7 @@
 // static
 void BrowserChildProcessHost::TerminateAll() {
   // Make a copy since the ChildProcessHost dtor mutates the original list.
-  ChildProcessList copy = *(Singleton<ChildProcessList>::get());
+  ChildProcessList copy = g_child_process_list.Get();
   STLDeleteElements(&copy);
 }
 
@@ -130,7 +132,7 @@
 }
 
 void BrowserChildProcessHost::ForceShutdown() {
-  Singleton<ChildProcessList>::get()->remove(this);
+  g_child_process_list.Get().remove(this);
   ChildProcessHost::ForceShutdown();
 }
 
@@ -169,7 +171,7 @@
   if (!handled && (msg.type() == PluginProcessHostMsg_ShutdownRequest::ID)) {
     // Must remove the process from the list now, in case it gets used for a
     // new instance before our watcher tells us that the process terminated.
-    Singleton<ChildProcessList>::get()->remove(this);
+    g_child_process_list.Get().remove(this);
   }
   if (!msg_is_ok)
     base::KillProcess(handle(), ResultCodes::KILLED_BAD_MESSAGE, false);
@@ -193,14 +195,14 @@
     : all_(true), type_(UNKNOWN_PROCESS) {
   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)) <<
           "ChildProcessInfo::Iterator must be used on the IO thread.";
-  iterator_ = Singleton<ChildProcessList>::get()->begin();
+  iterator_ = g_child_process_list.Get().begin();
 }
 
 BrowserChildProcessHost::Iterator::Iterator(ProcessType type)
     : all_(false), type_(type) {
   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)) <<
           "ChildProcessInfo::Iterator must be used on the IO thread.";
-  iterator_ = Singleton<ChildProcessList>::get()->begin();
+  iterator_ = g_child_process_list.Get().begin();
   if (!Done() && (*iterator_)->type() != type_)
     ++(*this);
 }
@@ -221,5 +223,5 @@
 }
 
 bool BrowserChildProcessHost::Iterator::Done() {
-  return iterator_ == Singleton<ChildProcessList>::get()->end();
+  return iterator_ == g_child_process_list.Get().end();
 }
diff --git a/chrome/browser/browser_main.cc b/chrome/browser/browser_main.cc
index 78173b4..a0bec57 100644
--- a/chrome/browser/browser_main.cc
+++ b/chrome/browser/browser_main.cc
@@ -1390,7 +1390,7 @@
     return ResultCodes::MACHINE_LEVEL_INSTALL_EXISTS;
 
   // Create the TranslateManager singleton.
-  Singleton<TranslateManager>::get();
+  TranslateManager::GetInstance();
 
 #if defined(OS_MACOSX)
   if (!parsed_command_line.HasSwitch(switches::kNoFirstRun)) {
diff --git a/chrome/browser/browser_main_gtk.cc b/chrome/browser/browser_main_gtk.cc
index 924bffd..ec73aaf 100644
--- a/chrome/browser/browser_main_gtk.cc
+++ b/chrome/browser/browser_main_gtk.cc
@@ -86,9 +86,9 @@
     sandbox_cmd = sandbox_binary;
 
   // Tickle the sandbox host and zygote host so they fork now.
-  RenderSandboxHostLinux* shost = Singleton<RenderSandboxHostLinux>::get();
+  RenderSandboxHostLinux* shost = RenderSandboxHostLinux::GetInstance();
   shost->Init(sandbox_cmd);
-  ZygoteHost* zhost = Singleton<ZygoteHost>::get();
+  ZygoteHost* zhost = ZygoteHost::GetInstance();
   zhost->Init(sandbox_cmd);
 }
 
diff --git a/chrome/browser/browser_signin.cc b/chrome/browser/browser_signin.cc
index e842efff4..535dcd5 100644
--- a/chrome/browser/browser_signin.cc
+++ b/chrome/browser/browser_signin.cc
@@ -218,7 +218,7 @@
   BrowserSigninResourcesSource* source = new BrowserSigninResourcesSource();
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      NewRunnableMethod(Singleton<ChromeURLDataManager>::get(),
+      NewRunnableMethod(ChromeURLDataManager::GetInstance(),
                         &ChromeURLDataManager::AddDataSource,
                         make_scoped_refptr(source)));
 }
diff --git a/chrome/browser/child_process_launcher.cc b/chrome/browser/child_process_launcher.cc
index f215084..2586826 100644
--- a/chrome/browser/child_process_launcher.cc
+++ b/chrome/browser/child_process_launcher.cc
@@ -115,12 +115,13 @@
       base::GlobalDescriptors::Mapping mapping;
       mapping.push_back(std::pair<uint32_t, int>(kPrimaryIPCChannel, ipcfd));
       const int crash_signal_fd =
-          Singleton<RendererCrashHandlerHostLinux>()->GetDeathSignalSocket();
+          RendererCrashHandlerHostLinux::GetInstance()->GetDeathSignalSocket();
       if (crash_signal_fd >= 0) {
         mapping.push_back(std::pair<uint32_t, int>(kCrashDumpSignal,
                                                    crash_signal_fd));
       }
-      handle = Singleton<ZygoteHost>()->ForkRenderer(cmd_line->argv(), mapping);
+      handle = ZygoteHost::GetInstance()->ForkRenderer(cmd_line->argv(),
+                                                       mapping);
     } else
     // Fall through to the normal posix case below when we're not zygoting.
 #endif
@@ -143,10 +144,10 @@
       if (is_renderer || is_plugin) {
         int crash_signal_fd;
         if (is_renderer) {
-          crash_signal_fd = Singleton<RendererCrashHandlerHostLinux>()->
+          crash_signal_fd = RendererCrashHandlerHostLinux::GetInstance()->
               GetDeathSignalSocket();
         } else {
-          crash_signal_fd = Singleton<PluginCrashHandlerHostLinux>()->
+          crash_signal_fd = PluginCrashHandlerHostLinux::GetInstance()->
               GetDeathSignalSocket();
         }
         if (crash_signal_fd >= 0) {
@@ -157,7 +158,7 @@
       }
       if (is_renderer) {
         const int sandbox_fd =
-            Singleton<RenderSandboxHostLinux>()->GetRendererSocket();
+            RenderSandboxHostLinux::GetInstance()->GetRendererSocket();
         fds_to_map.push_back(std::make_pair(
             sandbox_fd,
             kSandboxIPCChannel + base::GlobalDescriptors::kBaseDescriptor));
@@ -253,7 +254,7 @@
     if (zygote) {
       // If the renderer was created via a zygote, we have to proxy the reaping
       // through the zygote process.
-      Singleton<ZygoteHost>()->EnsureProcessTerminated(handle);
+      ZygoteHost::GetInstance()->EnsureProcessTerminated(handle);
     } else
 #endif  // OS_LINUX
     {
@@ -315,7 +316,8 @@
   base::ProcessHandle handle = context_->process_.handle();
 #if defined(OS_LINUX)
   if (context_->zygote_) {
-    did_crash = Singleton<ZygoteHost>()->DidProcessCrash(handle, &child_exited);
+    did_crash = ZygoteHost::GetInstance()->DidProcessCrash(handle,
+                                                           &child_exited);
   } else
 #endif
   {
diff --git a/chrome/browser/chromeos/dom_ui/imageburner_ui.cc b/chrome/browser/chromeos/dom_ui/imageburner_ui.cc
index 2dbb11e..c285163 100644
--- a/chrome/browser/chromeos/dom_ui/imageburner_ui.cc
+++ b/chrome/browser/chromeos/dom_ui/imageburner_ui.cc
@@ -610,7 +610,7 @@
   BrowserThread::PostTask(
        BrowserThread::IO, FROM_HERE,
        NewRunnableMethod(
-           Singleton<ChromeURLDataManager>::get(),
+           ChromeURLDataManager::GetInstance(),
            &ChromeURLDataManager::AddDataSource,
            make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/chromeos/dom_ui/keyboard_overlay_ui.cc b/chrome/browser/chromeos/dom_ui/keyboard_overlay_ui.cc
index e2477aa9..6944195 100644
--- a/chrome/browser/chromeos/dom_ui/keyboard_overlay_ui.cc
+++ b/chrome/browser/chromeos/dom_ui/keyboard_overlay_ui.cc
@@ -295,7 +295,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/chromeos/dom_ui/login/login_ui.cc b/chrome/browser/chromeos/dom_ui/login/login_ui.cc
index 50f81b4e..f648edcd 100644
--- a/chrome/browser/chromeos/dom_ui/login/login_ui.cc
+++ b/chrome/browser/chromeos/dom_ui/login/login_ui.cc
@@ -139,7 +139,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/chromeos/dom_ui/menu_ui.cc b/chrome/browser/chromeos/dom_ui/menu_ui.cc
index f4f5036..298a8ed 100644
--- a/chrome/browser/chromeos/dom_ui/menu_ui.cc
+++ b/chrome/browser/chromeos/dom_ui/menu_ui.cc
@@ -535,7 +535,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(CreateDataSource())));
 }
@@ -548,7 +548,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(source)));
 }
diff --git a/chrome/browser/chromeos/dom_ui/mobile_setup_ui.cc b/chrome/browser/chromeos/dom_ui/mobile_setup_ui.cc
index bea45b10..f1e980d 100644
--- a/chrome/browser/chromeos/dom_ui/mobile_setup_ui.cc
+++ b/chrome/browser/chromeos/dom_ui/mobile_setup_ui.cc
@@ -1035,7 +1035,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/chromeos/dom_ui/network_menu_ui.cc b/chrome/browser/chromeos/dom_ui/network_menu_ui.cc
index a9aa9c4b..2973432 100644
--- a/chrome/browser/chromeos/dom_ui/network_menu_ui.cc
+++ b/chrome/browser/chromeos/dom_ui/network_menu_ui.cc
@@ -121,7 +121,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(theme)));
 }
diff --git a/chrome/browser/chromeos/dom_ui/register_page_ui.cc b/chrome/browser/chromeos/dom_ui/register_page_ui.cc
index 8357fbc..1778490 100644
--- a/chrome/browser/chromeos/dom_ui/register_page_ui.cc
+++ b/chrome/browser/chromeos/dom_ui/register_page_ui.cc
@@ -326,7 +326,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/chromeos/dom_ui/system_info_ui.cc b/chrome/browser/chromeos/dom_ui/system_info_ui.cc
index d9a70da..857c560 100644
--- a/chrome/browser/chromeos/dom_ui/system_info_ui.cc
+++ b/chrome/browser/chromeos/dom_ui/system_info_ui.cc
@@ -182,7 +182,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/crash_handler_host_linux.cc b/chrome/browser/crash_handler_host_linux.cc
index 5474a47..196352a 100644
--- a/chrome/browser/crash_handler_host_linux.cc
+++ b/chrome/browser/crash_handler_host_linux.cc
@@ -19,6 +19,7 @@
 #include "base/message_loop.h"
 #include "base/path_service.h"
 #include "base/rand_util.h"
+#include "base/singleton.h"
 #include "base/string_util.h"
 #include "base/task.h"
 #include "base/thread.h"
@@ -364,6 +365,11 @@
   process_type_ = "plugin";
 }
 
+// static
+PluginCrashHandlerHostLinux* PluginCrashHandlerHostLinux::GetInstance() {
+  return Singleton<PluginCrashHandlerHostLinux>::get();
+}
+
 RendererCrashHandlerHostLinux::RendererCrashHandlerHostLinux() {
   InitCrashUploaderThread();
 }
@@ -374,3 +380,8 @@
 void RendererCrashHandlerHostLinux::SetProcessType() {
   process_type_ = "renderer";
 }
+
+// static
+RendererCrashHandlerHostLinux* RendererCrashHandlerHostLinux::GetInstance() {
+  return Singleton<RendererCrashHandlerHostLinux>::get();
+}
diff --git a/chrome/browser/crash_handler_host_linux.h b/chrome/browser/crash_handler_host_linux.h
index bc2214bf..9ff5333a 100644
--- a/chrome/browser/crash_handler_host_linux.h
+++ b/chrome/browser/crash_handler_host_linux.h
@@ -10,7 +10,8 @@
 
 #include "base/message_loop.h"
 #include "base/scoped_ptr.h"
-#include "base/singleton.h"
+
+template <typename T> struct DefaultSingletonTraits;
 
 namespace base {
 class Thread;
@@ -79,6 +80,10 @@
 };
 
 class PluginCrashHandlerHostLinux : public CrashHandlerHostLinux {
+ public:
+  // Returns the singleton instance.
+  static PluginCrashHandlerHostLinux* GetInstance();
+
  private:
   friend struct DefaultSingletonTraits<PluginCrashHandlerHostLinux>;
   PluginCrashHandlerHostLinux();
@@ -92,6 +97,10 @@
 };
 
 class RendererCrashHandlerHostLinux : public CrashHandlerHostLinux {
+ public:
+  // Returns the singleton instance.
+  static RendererCrashHandlerHostLinux* GetInstance();
+
  private:
   friend struct DefaultSingletonTraits<RendererCrashHandlerHostLinux>;
   RendererCrashHandlerHostLinux();
diff --git a/chrome/browser/crash_handler_host_linux_stub.cc b/chrome/browser/crash_handler_host_linux_stub.cc
index 6835bc2..157d7725 100644
--- a/chrome/browser/crash_handler_host_linux_stub.cc
+++ b/chrome/browser/crash_handler_host_linux_stub.cc
@@ -7,6 +7,8 @@
 
 #include "chrome/browser/crash_handler_host_linux.h"
 
+#include "base/singleton.h"
+
 CrashHandlerHostLinux::CrashHandlerHostLinux()
     : process_socket_(-1),
       browser_socket_(-1) {
@@ -30,8 +32,18 @@
 PluginCrashHandlerHostLinux::~PluginCrashHandlerHostLinux() {
 }
 
+// static
+PluginCrashHandlerHostLinux* PluginCrashHandlerHostLinux::GetInstance() {
+  return Singleton<PluginCrashHandlerHostLinux>::get();
+}
+
 RendererCrashHandlerHostLinux::RendererCrashHandlerHostLinux() {
 }
 
 RendererCrashHandlerHostLinux::~RendererCrashHandlerHostLinux() {
 }
+
+// static
+RendererCrashHandlerHostLinux* RendererCrashHandlerHostLinux::GetInstance() {
+  return Singleton<RendererCrashHandlerHostLinux>::get();
+}
diff --git a/chrome/browser/cross_site_request_manager.cc b/chrome/browser/cross_site_request_manager.cc
index 4104398f..d12e9a41 100644
--- a/chrome/browser/cross_site_request_manager.cc
+++ b/chrome/browser/cross_site_request_manager.cc
@@ -4,6 +4,8 @@
 
 #include "chrome/browser/cross_site_request_manager.h"
 
+#include "base/singleton.h"
+
 bool CrossSiteRequestManager::HasPendingCrossSiteRequest(int renderer_id,
                                                          int render_view_id) {
   AutoLock lock(lock_);
@@ -29,3 +31,8 @@
 CrossSiteRequestManager::CrossSiteRequestManager() {}
 
 CrossSiteRequestManager::~CrossSiteRequestManager() {}
+
+// static
+CrossSiteRequestManager* CrossSiteRequestManager::GetInstance() {
+  return Singleton<CrossSiteRequestManager>::get();
+}
diff --git a/chrome/browser/cross_site_request_manager.h b/chrome/browser/cross_site_request_manager.h
index 84d07e9..6c90b24c 100644
--- a/chrome/browser/cross_site_request_manager.h
+++ b/chrome/browser/cross_site_request_manager.h
@@ -11,7 +11,8 @@
 
 #include "base/basictypes.h"
 #include "base/lock.h"
-#include "base/singleton.h"
+
+template <typename T> struct DefaultSingletonTraits;
 
 // CrossSiteRequestManager is used to handle bookkeeping for cross-site
 // requests and responses between the UI and IO threads.  Such requests involve
@@ -22,6 +23,9 @@
 //
 class CrossSiteRequestManager {
  public:
+  // Returns the singleton instance.
+  static CrossSiteRequestManager* GetInstance();
+
   // Returns whether the RenderViewHost specified by the given IDs currently
   // has a pending cross-site request.  If so, we will have to delay the
   // response until the previous RenderViewHost runs its onunload handler.
@@ -38,8 +42,6 @@
   friend struct DefaultSingletonTraits<CrossSiteRequestManager>;
   typedef std::set<std::pair<int, int> > RenderViewSet;
 
-  // Obtain an instance of CrossSiteRequestManager via
-  // Singleton<CrossSiteRequestManager>().
   CrossSiteRequestManager();
   ~CrossSiteRequestManager();
 
diff --git a/chrome/browser/dom_ui/bookmarks_ui.cc b/chrome/browser/dom_ui/bookmarks_ui.cc
index c824f67..1875d459 100644
--- a/chrome/browser/dom_ui/bookmarks_ui.cc
+++ b/chrome/browser/dom_ui/bookmarks_ui.cc
@@ -51,7 +51,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/dom_ui/bug_report_ui.cc b/chrome/browser/dom_ui/bug_report_ui.cc
index 74ac629..4d8bc83 100644
--- a/chrome/browser/dom_ui/bug_report_ui.cc
+++ b/chrome/browser/dom_ui/bug_report_ui.cc
@@ -511,7 +511,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(new DOMUIScreenshotSource(NULL))));
 
@@ -530,7 +530,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(screenshot_source_)));
 }
@@ -803,7 +803,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/dom_ui/chrome_url_data_manager.cc b/chrome/browser/dom_ui/chrome_url_data_manager.cc
index 2e6cec9..6153458 100644
--- a/chrome/browser/dom_ui/chrome_url_data_manager.cc
+++ b/chrome/browser/dom_ui/chrome_url_data_manager.cc
@@ -96,7 +96,7 @@
 void RegisterURLRequestChromeJob() {
   FilePath inspector_dir;
   if (PathService::Get(chrome::DIR_INSPECTOR, &inspector_dir)) {
-    Singleton<ChromeURLDataManager>()->AddFileSource(
+    ChromeURLDataManager::GetInstance()->AddFileSource(
         chrome::kChromeUIDevToolsHost, inspector_dir);
   }
 
@@ -110,7 +110,7 @@
 void UnregisterURLRequestChromeJob() {
   FilePath inspector_dir;
   if (PathService::Get(chrome::DIR_INSPECTOR, &inspector_dir)) {
-    Singleton<ChromeURLDataManager>()->RemoveFileSource(
+    ChromeURLDataManager::GetInstance()->RemoveFileSource(
         chrome::kChromeUIDevToolsHost);
   }
 }
@@ -158,8 +158,8 @@
   URLToRequest(stripped_url, &source_name, &relative_path);
 
   FileSourceMap::const_iterator i(
-      Singleton<ChromeURLDataManager>()->file_sources_.find(source_name));
-  if (i == Singleton<ChromeURLDataManager>()->file_sources_.end())
+      ChromeURLDataManager::GetInstance()->file_sources_.find(source_name));
+  if (i == ChromeURLDataManager::GetInstance()->file_sources_.end())
     return false;
 
   // Check that |relative_path| is not an absolute path (otherwise AppendASCII()
@@ -178,6 +178,11 @@
 
 ChromeURLDataManager::~ChromeURLDataManager() { }
 
+// static
+ChromeURLDataManager* ChromeURLDataManager::GetInstance() {
+  return Singleton<ChromeURLDataManager>::get();
+}
+
 void ChromeURLDataManager::AddDataSource(scoped_refptr<DataSource> source) {
   // TODO(jackson): A new data source with same name should not clobber the
   // existing one.
@@ -287,7 +292,7 @@
     RefCountedMemory* bytes) {
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      NewRunnableMethod(Singleton<ChromeURLDataManager>::get(),
+      NewRunnableMethod(ChromeURLDataManager::GetInstance(),
                         &ChromeURLDataManager::DataAvailable,
                         request_id, scoped_refptr<RefCountedMemory>(bytes)));
 }
@@ -347,7 +352,7 @@
 }
 
 URLRequestChromeJob::~URLRequestChromeJob() {
-  CHECK(!Singleton<ChromeURLDataManager>()->HasPendingJob(this));
+  CHECK(!ChromeURLDataManager::GetInstance()->HasPendingJob(this));
 }
 
 void URLRequestChromeJob::Start() {
@@ -358,7 +363,7 @@
 }
 
 void URLRequestChromeJob::Kill() {
-  Singleton<ChromeURLDataManager>()->RemoveRequest(this);
+  ChromeURLDataManager::GetInstance()->RemoveRequest(this);
 }
 
 bool URLRequestChromeJob::GetMimeType(std::string* mime_type) const {
@@ -418,7 +423,8 @@
   if (!request_)
     return;
 
-  if (Singleton<ChromeURLDataManager>()->StartRequest(request_->url(), this)) {
+  if (ChromeURLDataManager::GetInstance()->StartRequest(request_->url(),
+                                                        this)) {
     NotifyHeadersComplete();
   } else {
     NotifyStartError(URLRequestStatus(URLRequestStatus::FAILED,
diff --git a/chrome/browser/dom_ui/chrome_url_data_manager.h b/chrome/browser/dom_ui/chrome_url_data_manager.h
index c6b6e76f..709cdcb 100644
--- a/chrome/browser/dom_ui/chrome_url_data_manager.h
+++ b/chrome/browser/dom_ui/chrome_url_data_manager.h
@@ -9,6 +9,7 @@
 #include <map>
 #include <string>
 
+#include "base/singleton.h"
 #include "base/task.h"
 #include "base/ref_counted.h"
 
@@ -32,8 +33,8 @@
 // it from the UI thread needs to go through an InvokeLater.
 class ChromeURLDataManager {
  public:
-  ChromeURLDataManager();
-  ~ChromeURLDataManager();
+  // Returns the singleton instance.
+  static ChromeURLDataManager* GetInstance();
 
   typedef int RequestID;
 
@@ -122,6 +123,10 @@
 
  private:
   friend class URLRequestChromeJob;
+  friend struct DefaultSingletonTraits<ChromeURLDataManager>;
+
+  ChromeURLDataManager();
+  ~ChromeURLDataManager();
 
   // Parse a URL into the components used to resolve its request.
   static void URLToRequest(const GURL& url,
diff --git a/chrome/browser/dom_ui/conflicts_ui.cc b/chrome/browser/dom_ui/conflicts_ui.cc
index f1e62617..8e2bcae 100644
--- a/chrome/browser/dom_ui/conflicts_ui.cc
+++ b/chrome/browser/dom_ui/conflicts_ui.cc
@@ -204,9 +204,9 @@
   // Set up the about:conflicts source.
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      NewRunnableMethod(Singleton<ChromeURLDataManager>::get(),
-          &ChromeURLDataManager::AddDataSource,
-          make_scoped_refptr(html_source)));
+      NewRunnableMethod(ChromeURLDataManager::GetInstance(),
+                        &ChromeURLDataManager::AddDataSource,
+                        make_scoped_refptr(html_source)));
 }
 
 // static
diff --git a/chrome/browser/dom_ui/downloads_dom_handler.cc b/chrome/browser/dom_ui/downloads_dom_handler.cc
index 919497b..a825c39 100644
--- a/chrome/browser/dom_ui/downloads_dom_handler.cc
+++ b/chrome/browser/dom_ui/downloads_dom_handler.cc
@@ -52,7 +52,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(new FileIconSource())));
 }
diff --git a/chrome/browser/dom_ui/downloads_ui.cc b/chrome/browser/dom_ui/downloads_ui.cc
index 3ce665a..9c033ea 100644
--- a/chrome/browser/dom_ui/downloads_ui.cc
+++ b/chrome/browser/dom_ui/downloads_ui.cc
@@ -136,9 +136,9 @@
   // Set up the chrome://downloads/ source.
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      NewRunnableMethod(Singleton<ChromeURLDataManager>::get(),
-          &ChromeURLDataManager::AddDataSource,
-          make_scoped_refptr(html_source)));
+      NewRunnableMethod(ChromeURLDataManager::GetInstance(),
+                        &ChromeURLDataManager::AddDataSource,
+                        make_scoped_refptr(html_source)));
 }
 
 // static
diff --git a/chrome/browser/dom_ui/filebrowse_ui.cc b/chrome/browser/dom_ui/filebrowse_ui.cc
index 6b7401b..764b310 100644
--- a/chrome/browser/dom_ui/filebrowse_ui.cc
+++ b/chrome/browser/dom_ui/filebrowse_ui.cc
@@ -422,7 +422,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(new DOMUIFavIconSource(dom_ui->GetProfile()))));
   profile_ = dom_ui->GetProfile();
@@ -1129,7 +1129,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/dom_ui/flags_ui.cc b/chrome/browser/dom_ui/flags_ui.cc
index 8198bbb..76d4bdd 100644
--- a/chrome/browser/dom_ui/flags_ui.cc
+++ b/chrome/browser/dom_ui/flags_ui.cc
@@ -183,9 +183,9 @@
   // Set up the about:flags source.
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      NewRunnableMethod(Singleton<ChromeURLDataManager>::get(),
-          &ChromeURLDataManager::AddDataSource,
-          make_scoped_refptr(html_source)));
+      NewRunnableMethod(ChromeURLDataManager::GetInstance(),
+                        &ChromeURLDataManager::AddDataSource,
+                        make_scoped_refptr(html_source)));
 }
 
 // static
diff --git a/chrome/browser/dom_ui/history2_ui.cc b/chrome/browser/dom_ui/history2_ui.cc
index 4f6867b..3e9f67e 100644
--- a/chrome/browser/dom_ui/history2_ui.cc
+++ b/chrome/browser/dom_ui/history2_ui.cc
@@ -126,7 +126,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(new DOMUIFavIconSource(dom_ui->GetProfile()))));
 
@@ -398,7 +398,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/dom_ui/history_ui.cc b/chrome/browser/dom_ui/history_ui.cc
index e01accfb..a90fcfc 100644
--- a/chrome/browser/dom_ui/history_ui.cc
+++ b/chrome/browser/dom_ui/history_ui.cc
@@ -126,7 +126,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(new DOMUIFavIconSource(dom_ui->GetProfile()))));
 
@@ -386,7 +386,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/dom_ui/keyboard_ui.cc b/chrome/browser/dom_ui/keyboard_ui.cc
index a935c84..3fba150 100644
--- a/chrome/browser/dom_ui/keyboard_ui.cc
+++ b/chrome/browser/dom_ui/keyboard_ui.cc
@@ -23,7 +23,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/dom_ui/mediaplayer_ui.cc b/chrome/browser/dom_ui/mediaplayer_ui.cc
index 7a26000..2fb141c 100644
--- a/chrome/browser/dom_ui/mediaplayer_ui.cc
+++ b/chrome/browser/dom_ui/mediaplayer_ui.cc
@@ -212,7 +212,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(new DOMUIFavIconSource(dom_ui->GetProfile()))));
 
@@ -610,7 +610,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/dom_ui/most_visited_handler.cc b/chrome/browser/dom_ui/most_visited_handler.cc
index fd279026..798a600b 100644
--- a/chrome/browser/dom_ui/most_visited_handler.cc
+++ b/chrome/browser/dom_ui/most_visited_handler.cc
@@ -75,7 +75,7 @@
       new DOMUIThumbnailSource(dom_ui->GetProfile());
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      NewRunnableMethod(Singleton<ChromeURLDataManager>::get(),
+      NewRunnableMethod(ChromeURLDataManager::GetInstance(),
                         &ChromeURLDataManager::AddDataSource,
                         make_scoped_refptr(thumbnail_src)));
 
@@ -83,7 +83,7 @@
       new DOMUIFavIconSource(dom_ui->GetProfile());
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      NewRunnableMethod(Singleton<ChromeURLDataManager>::get(),
+      NewRunnableMethod(ChromeURLDataManager::GetInstance(),
                         &ChromeURLDataManager::AddDataSource,
                         make_scoped_refptr(favicon_src)));
 
diff --git a/chrome/browser/dom_ui/net_internals_ui.cc b/chrome/browser/dom_ui/net_internals_ui.cc
index 35d1a44d..8fa9e9b8 100644
--- a/chrome/browser/dom_ui/net_internals_ui.cc
+++ b/chrome/browser/dom_ui/net_internals_ui.cc
@@ -1027,7 +1027,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/dom_ui/new_tab_ui.cc b/chrome/browser/dom_ui/new_tab_ui.cc
index f2f0196..3ac44e4 100644
--- a/chrome/browser/dom_ui/new_tab_ui.cc
+++ b/chrome/browser/dom_ui/new_tab_ui.cc
@@ -395,7 +395,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 
@@ -442,7 +442,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(theme)));
 }
diff --git a/chrome/browser/dom_ui/options/browser_options_handler.cc b/chrome/browser/dom_ui/options/browser_options_handler.cc
index c8e7b18a..483e640 100644
--- a/chrome/browser/dom_ui/options/browser_options_handler.cc
+++ b/chrome/browser/dom_ui/options/browser_options_handler.cc
@@ -115,7 +115,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(new DOMUIFavIconSource(dom_ui_->GetProfile()))));
 
diff --git a/chrome/browser/dom_ui/options/options_ui.cc b/chrome/browser/dom_ui/options/options_ui.cc
index 82e9cb1..5a38d84 100644
--- a/chrome/browser/dom_ui/options/options_ui.cc
+++ b/chrome/browser/dom_ui/options/options_ui.cc
@@ -192,7 +192,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 
@@ -201,7 +201,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(theme)));
 }
diff --git a/chrome/browser/dom_ui/plugins_ui.cc b/chrome/browser/dom_ui/plugins_ui.cc
index 8c376021..94e12b1 100644
--- a/chrome/browser/dom_ui/plugins_ui.cc
+++ b/chrome/browser/dom_ui/plugins_ui.cc
@@ -316,9 +316,9 @@
   // Set up the chrome://plugins/ source.
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      NewRunnableMethod(Singleton<ChromeURLDataManager>::get(),
-          &ChromeURLDataManager::AddDataSource,
-          make_scoped_refptr(html_source)));
+      NewRunnableMethod(ChromeURLDataManager::GetInstance(),
+                        &ChromeURLDataManager::AddDataSource,
+                        make_scoped_refptr(html_source)));
 }
 
 
diff --git a/chrome/browser/dom_ui/print_preview_ui.cc b/chrome/browser/dom_ui/print_preview_ui.cc
index 91032a7..f0f7656 100644
--- a/chrome/browser/dom_ui/print_preview_ui.cc
+++ b/chrome/browser/dom_ui/print_preview_ui.cc
@@ -140,7 +140,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(new PrintPreviewUIHTMLSource())));
 }
diff --git a/chrome/browser/dom_ui/remoting_ui.cc b/chrome/browser/dom_ui/remoting_ui.cc
index 90ceb52..0bdb717 100644
--- a/chrome/browser/dom_ui/remoting_ui.cc
+++ b/chrome/browser/dom_ui/remoting_ui.cc
@@ -66,9 +66,9 @@
   // Set up the chrome://remoting source.
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      NewRunnableMethod(Singleton<ChromeURLDataManager>::get(),
-          &ChromeURLDataManager::AddDataSource,
-          make_scoped_refptr(html_source)));
+      NewRunnableMethod(ChromeURLDataManager::GetInstance(),
+                        &ChromeURLDataManager::AddDataSource,
+                        make_scoped_refptr(html_source)));
 }
 
 
diff --git a/chrome/browser/dom_ui/shared_resources_data_source.cc b/chrome/browser/dom_ui/shared_resources_data_source.cc
index 25a45cb..6ff8343 100644
--- a/chrome/browser/dom_ui/shared_resources_data_source.cc
+++ b/chrome/browser/dom_ui/shared_resources_data_source.cc
@@ -57,7 +57,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(source)));
 }
diff --git a/chrome/browser/dom_ui/slideshow_ui.cc b/chrome/browser/dom_ui/slideshow_ui.cc
index 5c66e0eab..da8a807 100644
--- a/chrome/browser/dom_ui/slideshow_ui.cc
+++ b/chrome/browser/dom_ui/slideshow_ui.cc
@@ -153,7 +153,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(new DOMUIFavIconSource(dom_ui->GetProfile()))));
   profile_ = dom_ui->GetProfile();
@@ -288,7 +288,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/dom_ui/textfields_ui.cc b/chrome/browser/dom_ui/textfields_ui.cc
index db4fb0c..a74f10d 100644
--- a/chrome/browser/dom_ui/textfields_ui.cc
+++ b/chrome/browser/dom_ui/textfields_ui.cc
@@ -70,7 +70,7 @@
   // Set up the chrome://textfields/ source.
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      NewRunnableMethod(Singleton<ChromeURLDataManager>::get(),
-          &ChromeURLDataManager::AddDataSource,
-          make_scoped_refptr(html_source)));
+      NewRunnableMethod(ChromeURLDataManager::GetInstance(),
+                        &ChromeURLDataManager::AddDataSource,
+                        make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/extensions/extension_function_dispatcher.cc b/chrome/browser/extensions/extension_function_dispatcher.cc
index 1021c748..ec4b9d5 100644
--- a/chrome/browser/extensions/extension_function_dispatcher.cc
+++ b/chrome/browser/extensions/extension_function_dispatcher.cc
@@ -387,7 +387,7 @@
     DOMUIFavIconSource* favicon_source = new DOMUIFavIconSource(profile_);
     BrowserThread::PostTask(
         BrowserThread::IO, FROM_HERE,
-        NewRunnableMethod(Singleton<ChromeURLDataManager>::get(),
+        NewRunnableMethod(ChromeURLDataManager::GetInstance(),
                           &ChromeURLDataManager::AddDataSource,
                           make_scoped_refptr(favicon_source)));
   }
diff --git a/chrome/browser/extensions/extensions_ui.cc b/chrome/browser/extensions/extensions_ui.cc
index 06f6c6c..990e093 100644
--- a/chrome/browser/extensions/extensions_ui.cc
+++ b/chrome/browser/extensions/extensions_ui.cc
@@ -943,7 +943,7 @@
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
       NewRunnableMethod(
-          Singleton<ChromeURLDataManager>::get(),
+          ChromeURLDataManager::GetInstance(),
           &ChromeURLDataManager::AddDataSource,
           make_scoped_refptr(html_source)));
 }
diff --git a/chrome/browser/gpu_process_host.cc b/chrome/browser/gpu_process_host.cc
index dd40b005..4f3958bb 100644
--- a/chrome/browser/gpu_process_host.cc
+++ b/chrome/browser/gpu_process_host.cc
@@ -237,7 +237,7 @@
 }
 
 void ReleaseXIDDispatcher(unsigned long xid) {
-  GtkNativeViewManager* manager = Singleton<GtkNativeViewManager>::get();
+  GtkNativeViewManager* manager = GtkNativeViewManager::GetInstance();
   manager->ReleasePermanentXID(xid);
 }
 
diff --git a/chrome/browser/gtk/browser_window_gtk.cc b/chrome/browser/gtk/browser_window_gtk.cc
index 4f26fbdd..f0462e5 100644
--- a/chrome/browser/gtk/browser_window_gtk.cc
+++ b/chrome/browser/gtk/browser_window_gtk.cc
@@ -1204,8 +1204,8 @@
   if (is_active && changed) {
     // If there's an app modal dialog (e.g., JS alert), try to redirect
     // the user's attention to the window owning the dialog.
-    if (Singleton<AppModalDialogQueue>()->HasActiveDialog()) {
-      Singleton<AppModalDialogQueue>()->ActivateModalDialog();
+    if (AppModalDialogQueue::GetInstance()->HasActiveDialog()) {
+      AppModalDialogQueue::GetInstance()->ActivateModalDialog();
       return;
     }
   }
diff --git a/chrome/browser/memory_details.cc b/chrome/browser/memory_details.cc
index b728543..cd72b25 100644
--- a/chrome/browser/memory_details.cc
+++ b/chrome/browser/memory_details.cc
@@ -102,8 +102,8 @@
   DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
 
 #if defined(OS_LINUX)
-  const pid_t zygote_pid = Singleton<ZygoteHost>()->pid();
-  const pid_t sandbox_helper_pid = Singleton<RenderSandboxHostLinux>()->pid();
+  const pid_t zygote_pid = ZygoteHost::GetInstance()->pid();
+  const pid_t sandbox_helper_pid = RenderSandboxHostLinux::GetInstance()->pid();
 #endif
 
   ProcessData* const chrome_browser = ChromeBrowser();
diff --git a/chrome/browser/memory_details_linux.cc b/chrome/browser/memory_details_linux.cc
index 92b80cb..776459a 100644
--- a/chrome/browser/memory_details_linux.cc
+++ b/chrome/browser/memory_details_linux.cc
@@ -234,7 +234,7 @@
   }
 
   std::vector<pid_t> current_browser_processes;
-  const pid_t zygote = Singleton<ZygoteHost>()->pid();
+  const pid_t zygote = ZygoteHost::GetInstance()->pid();
   GetAllChildren(processes, getpid(), zygote, &current_browser_processes);
   ProcessData current_browser;
   GetProcessDataMemoryInformation(current_browser_processes, &current_browser);
diff --git a/chrome/browser/oom_priority_manager.cc b/chrome/browser/oom_priority_manager.cc
index 160f511..bb8ba7e 100644
--- a/chrome/browser/oom_priority_manager.cc
+++ b/chrome/browser/oom_priority_manager.cc
@@ -166,7 +166,7 @@
        iterator != renderer_stats.end(); ++iterator) {
     if (already_seen.find(iterator->renderer_handle) == already_seen.end()) {
       already_seen.insert(iterator->renderer_handle);
-      Singleton<ZygoteHost>::get()->AdjustRendererOOMScore(
+      ZygoteHost::GetInstance()->AdjustRendererOOMScore(
           iterator->renderer_handle,
           static_cast<int>(priority + 0.5f));
       priority += priority_increment;
diff --git a/chrome/browser/printing/cloud_print/cloud_print_setup_flow.cc b/chrome/browser/printing/cloud_print/cloud_print_setup_flow.cc
index 2889c20..fbd0dc6 100644
--- a/chrome/browser/printing/cloud_print/cloud_print_setup_flow.cc
+++ b/chrome/browser/printing/cloud_print/cloud_print_setup_flow.cc
@@ -102,7 +102,7 @@
   profile_ = profile;
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      NewRunnableMethod(Singleton<ChromeURLDataManager>::get(),
+      NewRunnableMethod(ChromeURLDataManager::GetInstance(),
                         &ChromeURLDataManager::AddDataSource,
                         make_scoped_refptr(new CloudPrintSetupSource())));
 }
diff --git a/chrome/browser/remoting/remoting_setup_flow.cc b/chrome/browser/remoting/remoting_setup_flow.cc
index 72cf1c4..a517be31 100644
--- a/chrome/browser/remoting/remoting_setup_flow.cc
+++ b/chrome/browser/remoting/remoting_setup_flow.cc
@@ -102,7 +102,7 @@
   // TODO(hclam): The data source should be added once.
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      NewRunnableMethod(Singleton<ChromeURLDataManager>::get(),
+      NewRunnableMethod(ChromeURLDataManager::GetInstance(),
                         &ChromeURLDataManager::AddDataSource,
                         make_scoped_refptr(new RemotingResourcesSource())));
 }
diff --git a/chrome/browser/renderer_host/render_sandbox_host_linux.cc b/chrome/browser/renderer_host/render_sandbox_host_linux.cc
index 92105b4..51fa55b 100644
--- a/chrome/browser/renderer_host/render_sandbox_host_linux.cc
+++ b/chrome/browser/renderer_host/render_sandbox_host_linux.cc
@@ -23,6 +23,7 @@
 #include "base/process_util.h"
 #include "base/scoped_ptr.h"
 #include "base/shared_memory.h"
+#include "base/singleton.h"
 #include "base/string_number_conversions.h"
 #include "base/string_util.h"
 #include "base/unix_domain_socket_posix.h"
@@ -643,6 +644,11 @@
       pid_(0) {
 }
 
+// static
+RenderSandboxHostLinux* RenderSandboxHostLinux::GetInstance() {
+  return Singleton<RenderSandboxHostLinux>::get();
+}
+
 void RenderSandboxHostLinux::Init(const std::string& sandbox_path) {
   DCHECK(!initialized_);
   initialized_ = true;
diff --git a/chrome/browser/renderer_host/render_sandbox_host_linux.h b/chrome/browser/renderer_host/render_sandbox_host_linux.h
index b0122e89..2cb0604 100644
--- a/chrome/browser/renderer_host/render_sandbox_host_linux.h
+++ b/chrome/browser/renderer_host/render_sandbox_host_linux.h
@@ -11,12 +11,16 @@
 #include <string>
 
 #include "base/logging.h"
-#include "base/singleton.h"
+
+template <typename T> struct DefaultSingletonTraits;
 
 // This is a singleton object which handles sandbox requests from the
 // renderers.
 class RenderSandboxHostLinux {
  public:
+  // Returns the singleton instance.
+  static RenderSandboxHostLinux* GetInstance();
+
   // Get the file descriptor which renderers should be given in order to signal
   // crashes to the browser.
   int GetRendererSocket() const {
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index c9ae516..e319e364 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -153,7 +153,7 @@
   delegate()->RenderViewDeleted(this);
 
   // Be sure to clean up any leftover state from cross-site requests.
-  Singleton<CrossSiteRequestManager>()->SetHasPendingCrossSiteRequest(
+  CrossSiteRequestManager::GetInstance()->SetHasPendingCrossSiteRequest(
       process()->id(), routing_id(), false);
 }
 
@@ -368,7 +368,7 @@
 
 void RenderViewHost::SetHasPendingCrossSiteRequest(bool has_pending_request,
                                                    int request_id) {
-  Singleton<CrossSiteRequestManager>()->SetHasPendingCrossSiteRequest(
+  CrossSiteRequestManager::GetInstance()->SetHasPendingCrossSiteRequest(
       process()->id(), routing_id(), has_pending_request);
   pending_request_id_ = request_id;
 }
diff --git a/chrome/browser/renderer_host/resource_dispatcher_host.cc b/chrome/browser/renderer_host/resource_dispatcher_host.cc
index 9555ebc..4e6ecab 100644
--- a/chrome/browser/renderer_host/resource_dispatcher_host.cc
+++ b/chrome/browser/renderer_host/resource_dispatcher_host.cc
@@ -478,7 +478,7 @@
   // not count as cross-site, otherwise it gets blocked indefinitely.
   if (request_data.resource_type == ResourceType::MAIN_FRAME &&
       process_type == ChildProcessInfo::RENDER_PROCESS &&
-      Singleton<CrossSiteRequestManager>::get()->
+      CrossSiteRequestManager::GetInstance()->
           HasPendingCrossSiteRequest(child_id, route_id)) {
     // Wrap the event handler to be sure the current page's onunload handler
     // has a chance to run before we render the new page.
diff --git a/chrome/browser/sync/sync_setup_wizard.cc b/chrome/browser/sync/sync_setup_wizard.cc
index fc6f504..e80afe079 100644
--- a/chrome/browser/sync/sync_setup_wizard.cc
+++ b/chrome/browser/sync/sync_setup_wizard.cc
@@ -215,7 +215,7 @@
   SyncResourcesSource* sync_source = new SyncResourcesSource();
   BrowserThread::PostTask(
       BrowserThread::IO, FROM_HERE,
-      NewRunnableMethod(Singleton<ChromeURLDataManager>::get(),
+      NewRunnableMethod(ChromeURLDataManager::GetInstance(),
                         &ChromeURLDataManager::AddDataSource,
                         make_scoped_refptr(sync_source)));
 }
diff --git a/chrome/browser/tab_contents/render_view_context_menu.cc b/chrome/browser/tab_contents/render_view_context_menu.cc
index 79325e8..261a762 100644
--- a/chrome/browser/tab_contents/render_view_context_menu.cc
+++ b/chrome/browser/tab_contents/render_view_context_menu.cc
@@ -1246,7 +1246,7 @@
       TranslatePrefs prefs(profile_->GetPrefs());
       prefs.RemoveLanguageFromBlacklist(original_lang);
       prefs.RemoveSiteFromBlacklist(params_.page_url.HostNoBrackets());
-      Singleton<TranslateManager>::get()->TranslatePage(
+      TranslateManager::GetInstance()->TranslatePage(
           source_tab_contents_, original_lang, target_lang);
       break;
     }
diff --git a/chrome/browser/translate/translate_infobar_delegate.cc b/chrome/browser/translate/translate_infobar_delegate.cc
index 7cb4d66e..356975d 100644
--- a/chrome/browser/translate/translate_infobar_delegate.cc
+++ b/chrome/browser/translate/translate_infobar_delegate.cc
@@ -157,19 +157,19 @@
     prefs_.IncrementTranslationAcceptedCount(original_language_code);
   }
 
-  Singleton<TranslateManager>::get()->TranslatePage(
+  TranslateManager::GetInstance()->TranslatePage(
       tab_contents_,
       GetLanguageCodeAt(original_language_index()),
       GetLanguageCodeAt(target_language_index()));
 }
 
 void TranslateInfoBarDelegate::RevertTranslation() {
-  Singleton<TranslateManager>::get()->RevertTranslation(tab_contents_);
+  TranslateManager::GetInstance()->RevertTranslation(tab_contents_);
   tab_contents_->RemoveInfoBar(this);
 }
 
 void TranslateInfoBarDelegate::ReportLanguageDetectionError() {
-  Singleton<TranslateManager>::get()->
+  TranslateManager::GetInstance()->
       ReportLanguageDetectionError(tab_contents_);
 }
 
@@ -339,7 +339,7 @@
     return;
   }
   // This is the "Try again..." case.
-  Singleton<TranslateManager>::get()->TranslatePage(
+  TranslateManager::GetInstance()->TranslatePage(
       tab_contents_, GetOriginalLanguageCode(), GetTargetLanguageCode());
 }
 
diff --git a/chrome/browser/translate/translate_manager.cc b/chrome/browser/translate/translate_manager.cc
index a4157494..cf560c04 100644
--- a/chrome/browser/translate/translate_manager.cc
+++ b/chrome/browser/translate/translate_manager.cc
@@ -8,6 +8,7 @@
 #include "base/command_line.h"
 #include "base/compiler_specific.h"
 #include "base/metrics/histogram.h"
+#include "base/singleton.h"
 #include "base/string_split.h"
 #include "base/string_util.h"
 #include "chrome/browser/browser_list.h"
@@ -145,6 +146,11 @@
 }
 
 // static
+TranslateManager* TranslateManager::GetInstance() {
+  return Singleton<TranslateManager>::get();
+}
+
+// static
 bool TranslateManager::IsTranslatableURL(const GURL& url) {
   return !url.SchemeIs("chrome") && !url.SchemeIs("ftp");
 }
diff --git a/chrome/browser/translate/translate_manager.h b/chrome/browser/translate/translate_manager.h
index 7050484..f0db3c44 100644
--- a/chrome/browser/translate/translate_manager.h
+++ b/chrome/browser/translate/translate_manager.h
@@ -12,7 +12,6 @@
 #include <vector>
 
 #include "base/lazy_instance.h"
-#include "base/singleton.h"
 #include "base/task.h"
 #include "chrome/browser/prefs/pref_change_registrar.h"
 #include "chrome/common/net/url_fetcher.h"
@@ -20,6 +19,7 @@
 #include "chrome/common/notification_registrar.h"
 #include "chrome/common/translate_errors.h"
 
+template <typename T> struct DefaultSingletonTraits;
 class GURL;
 struct PageTranslatedDetails;
 class PrefService;
@@ -34,6 +34,9 @@
 class TranslateManager : public NotificationObserver,
                          public URLFetcher::Delegate {
  public:
+  // Returns the singleton instance.
+  static TranslateManager* GetInstance();
+
   virtual ~TranslateManager();
 
   // Translates the page contents from |source_lang| to |target_lang|.
diff --git a/chrome/browser/translate/translate_manager_unittest.cc b/chrome/browser/translate/translate_manager_unittest.cc
index 3055ed6..080c7c1 100644
--- a/chrome/browser/translate/translate_manager_unittest.cc
+++ b/chrome/browser/translate/translate_manager_unittest.cc
@@ -121,8 +121,7 @@
   }
 
   void ExpireTranslateScriptImmediately() {
-    Singleton<TranslateManager>::get()->
-        set_translate_script_expiration_delay(0);
+    TranslateManager::GetInstance()->set_translate_script_expiration_delay(0);
   }
 
   // If there is 1 infobar and it is a translate infobar, deny translation and
@@ -155,8 +154,8 @@
     // Also clears the translate script so it is fetched everytime and sets the
     // expiration delay to a large value by default (in case it was zeroed in
     // a previous test).
-    Singleton<TranslateManager>::get()->ClearTranslateScript();
-    Singleton<TranslateManager>::get()->
+    TranslateManager::GetInstance()->ClearTranslateScript();
+    TranslateManager::GetInstance()->
         set_translate_script_expiration_delay(60 * 60 * 1000);
 
     RenderViewHostTestHarness::SetUp();
diff --git a/chrome/browser/ui/app_modal_dialogs/app_modal_dialog.cc b/chrome/browser/ui/app_modal_dialogs/app_modal_dialog.cc
index 1a35cd8..746140c 100644
--- a/chrome/browser/ui/app_modal_dialogs/app_modal_dialog.cc
+++ b/chrome/browser/ui/app_modal_dialogs/app_modal_dialog.cc
@@ -49,5 +49,5 @@
 }
 
 void AppModalDialog::CompleteDialog() {
-  Singleton<AppModalDialogQueue>()->ShowNextDialog();
+  AppModalDialogQueue::GetInstance()->ShowNextDialog();
 }
diff --git a/chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.cc b/chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.cc
index c29abe06..e70285c6 100644
--- a/chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.cc
+++ b/chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.cc
@@ -4,6 +4,8 @@
 
 #include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h"
 
+#include "base/singleton.h"
+
 void AppModalDialogQueue::AddDialog(AppModalDialog* dialog) {
   if (!active_dialog_) {
     ShowModalDialog(dialog);
@@ -38,6 +40,11 @@
 
 AppModalDialogQueue::~AppModalDialogQueue() {}
 
+// static
+AppModalDialogQueue* AppModalDialogQueue::GetInstance() {
+  return Singleton<AppModalDialogQueue>::get();
+}
+
 void AppModalDialogQueue::ShowModalDialog(AppModalDialog* dialog) {
   // Be sure and set the active_dialog_ field first, otherwise if
   // ShowModalDialog triggers a call back to the queue they'll get the old
diff --git a/chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h b/chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h
index b1b221bb..be24a74 100644
--- a/chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h
+++ b/chrome/browser/ui/app_modal_dialogs/app_modal_dialog_queue.h
@@ -8,14 +8,18 @@
 
 #include <queue>
 
-#include "base/singleton.h"
 #include "chrome/browser/ui/app_modal_dialogs/app_modal_dialog.h"
 
+template <typename T> struct DefaultSingletonTraits;
+
 // Keeps a queue of AppModalDialogs, making sure only one app modal
 // dialog is shown at a time.
 // This class is a singleton.
 class AppModalDialogQueue {
  public:
+  // Returns the singleton instance.
+  static AppModalDialogQueue* GetInstance();
+
   // Adds a modal dialog to the queue, if there are no other dialogs in the
   // queue, the dialog will be shown immediately. Once it is shown, the
   // most recently active browser window (or whichever is currently active)
diff --git a/chrome/browser/ui/app_modal_dialogs/message_box_handler.cc b/chrome/browser/ui/app_modal_dialogs/message_box_handler.cc
index 490117c..0aba84b 100644
--- a/chrome/browser/ui/app_modal_dialogs/message_box_handler.cc
+++ b/chrome/browser/ui/app_modal_dialogs/message_box_handler.cc
@@ -70,7 +70,7 @@
                              IPC::Message* reply_msg) {
   bool is_alert = dialog_flags == MessageBoxFlags::kIsJavascriptAlert;
   std::wstring title = GetTitle(profile, is_alert, frame_url);
-  Singleton<AppModalDialogQueue>()->AddDialog(new JavaScriptAppModalDialog(
+  AppModalDialogQueue::GetInstance()->AddDialog(new JavaScriptAppModalDialog(
       delegate, title, dialog_flags, message_text, default_prompt_text,
       display_suppress_checkbox, false, reply_msg));
 }
@@ -81,7 +81,7 @@
   std::wstring full_message =
       message_text + L"\n\n" +
       l10n_util::GetString(IDS_BEFOREUNLOAD_MESSAGEBOX_FOOTER);
-  Singleton<AppModalDialogQueue>()->AddDialog(new JavaScriptAppModalDialog(
+  AppModalDialogQueue::GetInstance()->AddDialog(new JavaScriptAppModalDialog(
       tab_contents, l10n_util::GetString(IDS_BEFOREUNLOAD_MESSAGEBOX_TITLE),
       MessageBoxFlags::kIsJavascriptConfirm, message_text, std::wstring(),
       false, true, reply_msg));
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc
index 26a7a7b6..4cbd7e2 100644
--- a/chrome/browser/ui/views/frame/browser_view.cc
+++ b/chrome/browser/ui/views/frame/browser_view.cc
@@ -644,13 +644,13 @@
 
 bool BrowserView::ActivateAppModalDialog() const {
   // If another browser is app modal, flash and activate the modal browser.
-  if (Singleton<AppModalDialogQueue>()->HasActiveDialog()) {
+  if (AppModalDialogQueue::GetInstance()->HasActiveDialog()) {
     Browser* active_browser = BrowserList::GetLastActive();
     if (active_browser && (browser_ != active_browser)) {
       active_browser->window()->FlashFrame();
       active_browser->window()->Activate();
     }
-    Singleton<AppModalDialogQueue>()->ActivateModalDialog();
+    AppModalDialogQueue::GetInstance()->ActivateModalDialog();
     return true;
   }
   return false;
diff --git a/chrome/browser/zygote_host_linux.cc b/chrome/browser/zygote_host_linux.cc
index b6115f1..74b685297 100644
--- a/chrome/browser/zygote_host_linux.cc
+++ b/chrome/browser/zygote_host_linux.cc
@@ -66,6 +66,11 @@
     close(control_fd_);
 }
 
+// static
+ZygoteHost* ZygoteHost::GetInstance() {
+  return Singleton<ZygoteHost>::get();
+}
+
 void ZygoteHost::Init(const std::string& sandbox_cmd) {
   DCHECK(!init_);
   init_ = true;
@@ -129,7 +134,7 @@
 
   // Start up the sandbox host process and get the file descriptor for the
   // renderers to talk to it.
-  const int sfd = Singleton<RenderSandboxHostLinux>()->GetRendererSocket();
+  const int sfd = RenderSandboxHostLinux::GetInstance()->GetRendererSocket();
   fds_to_map.push_back(std::make_pair(sfd, 5));
 
   int dummy_fd = -1;
diff --git a/chrome/browser/zygote_host_linux.h b/chrome/browser/zygote_host_linux.h
index ffb7964..01a64435 100644
--- a/chrome/browser/zygote_host_linux.h
+++ b/chrome/browser/zygote_host_linux.h
@@ -26,6 +26,9 @@
 // process.
 class ZygoteHost {
  public:
+  // Returns the singleton instance.
+  static ZygoteHost* GetInstance();
+
   void Init(const std::string& sandbox_cmd);
 
   // Tries to start a renderer process.  Returns its pid on success, otherwise