diff options
author | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-23 22:21:23 +0000 |
---|---|---|
committer | jhawkins@chromium.org <jhawkins@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-23 22:21:23 +0000 |
commit | bd2262e1ed75af9c45fabe371aa66f83ee3831e5 (patch) | |
tree | 64ae7f5cea3bb32529f3600a0a4823d247ae706e /chrome/browser/background | |
parent | 0ad9ef8e4c41b13a5f889a485677f225d7e5a934 (diff) | |
download | chromium_src-bd2262e1ed75af9c45fabe371aa66f83ee3831e5.zip chromium_src-bd2262e1ed75af9c45fabe371aa66f83ee3831e5.tar.gz chromium_src-bd2262e1ed75af9c45fabe371aa66f83ee3831e5.tar.bz2 |
base::Bind: Convert BackgroundModeManager Tasks.
BUG=none
TEST=none
R=groby@chromium.org
Review URL: http://codereview.chromium.org/8680017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@111424 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/background')
3 files changed, 36 insertions, 68 deletions
diff --git a/chrome/browser/background/background_mode_manager_gtk.cc b/chrome/browser/background/background_mode_manager_gtk.cc index e9d193e..27923fc 100644 --- a/chrome/browser/background/background_mode_manager_gtk.cc +++ b/chrome/browser/background/background_mode_manager_gtk.cc @@ -4,6 +4,7 @@ #include <unistd.h> +#include "base/bind.h" #include "base/command_line.h" #include "base/environment.h" #include "base/file_path.h" @@ -25,40 +26,8 @@ using content::BrowserThread; namespace { -class DisableLaunchOnStartupTask : public Task { - public: - virtual void Run(); -}; - -class EnableLaunchOnStartupTask : public Task { - public: - virtual void Run(); -}; - -} // namespace - -void BackgroundModeManager::EnableLaunchOnStartup(bool should_launch) { - // This functionality is only defined for default profile, currently. - if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kUserDataDir)) - return; - if (should_launch) { - BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, - new EnableLaunchOnStartupTask()); - } else { - BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, - new DisableLaunchOnStartupTask()); - } -} - -void DisableLaunchOnStartupTask::Run() { - scoped_ptr<base::Environment> environment(base::Environment::Create()); - if (!AutoStart::Remove(ShellIntegration::GetDesktopName(environment.get()))) { - NOTREACHED() << "Failed to deregister launch on login."; - } -} - // TODO(rickcam): Bug 56280: Share implementation with ShellIntegration -void EnableLaunchOnStartupTask::Run() { +void EnableLaunchOnStartupCallback() { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); scoped_ptr<base::Environment> environment(base::Environment::Create()); scoped_ptr<chrome::VersionInfo> version_info(new chrome::VersionInfo()); @@ -80,6 +49,28 @@ void EnableLaunchOnStartupTask::Run() { } } +void DisableLaunchOnStartupCallback() { + scoped_ptr<base::Environment> environment(base::Environment::Create()); + if (!AutoStart::Remove(ShellIntegration::GetDesktopName(environment.get()))) { + NOTREACHED() << "Failed to deregister launch on login."; + } +} + +} // namespace + +void BackgroundModeManager::EnableLaunchOnStartup(bool should_launch) { + // This functionality is only defined for default profile, currently. + if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kUserDataDir)) + return; + if (should_launch) { + BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, + base::Bind(EnableLaunchOnStartupCallback)); + } else { + BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, + base::Bind(DisableLaunchOnStartupCallback)); + } +} + void BackgroundModeManager::DisplayAppInstalledNotification( const Extension* extension) { // TODO(atwilson): Display a platform-appropriate notification here. diff --git a/chrome/browser/background/background_mode_manager_mac.mm b/chrome/browser/background/background_mode_manager_mac.mm index 120aa37..e0ff342 100644 --- a/chrome/browser/background/background_mode_manager_mac.mm +++ b/chrome/browser/background/background_mode_manager_mac.mm @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/bind.h" #include "base/command_line.h" #include "base/mac/mac_util.h" #include "chrome/browser/background/background_mode_manager.h" @@ -17,22 +18,7 @@ using content::BrowserThread; namespace { -class DisableLaunchOnStartupTask : public Task { - public: - virtual void Run(); -}; - -class EnableLaunchOnStartupTask : public Task { - public: - virtual void Run(); -}; - -class SetUserCreatedLoginItemPrefTask : public Task { - public: - virtual void Run(); -}; - -void DisableLaunchOnStartupTask::Run() { +void DisableLaunchOnStartupCallback() { // Check if Chrome is not a login Item, or is a Login Item but w/o 'hidden' // flag - most likely user has modified the setting, don't override it. bool is_hidden = false; @@ -42,7 +28,7 @@ void DisableLaunchOnStartupTask::Run() { base::mac::RemoveFromLoginItems(); } -void EnableLaunchOnStartupTask::Run() { +void EnableLaunchOnStartupCallback() { // Return if Chrome is already a Login Item (avoid overriding user choice). if (base::mac::CheckLoginItemStatus(NULL)) { // Call back to the UI thread to set our preference so we don't delete the @@ -51,14 +37,14 @@ void EnableLaunchOnStartupTask::Run() { // is run, but the user can manually disable "Open At Login" via the dock if // this happens. BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, - new SetUserCreatedLoginItemPrefTask()); + base::Bind(SetUserCreatedLoginItemPrefCallback)); return; } base::mac::AddToLoginItems(true); // Hide on startup. } -void SetUserCreatedLoginItemPrefTask::Run() { +void SetUserCreatedLoginItemPrefCallback() { PrefService* service = g_browser_process->local_state(); service->SetBoolean(prefs::kUserCreatedLoginItem, true); } @@ -72,7 +58,7 @@ void BackgroundModeManager::EnableLaunchOnStartup(bool should_launch) { if (should_launch) { BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, - new EnableLaunchOnStartupTask()); + base::Bind(EnableLaunchOnStartupCallback)); } else { PrefService* service = g_browser_process->local_state(); if (service->GetBoolean(prefs::kUserCreatedLoginItem)) { @@ -83,7 +69,7 @@ void BackgroundModeManager::EnableLaunchOnStartup(bool should_launch) { // Call to the File thread to remove the login item since it requires // accessing the disk. BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, - new DisableLaunchOnStartupTask()); + base::Bind(DisableLaunchOnStartupCallback)); } } diff --git a/chrome/browser/background/background_mode_manager_win.cc b/chrome/browser/background/background_mode_manager_win.cc index 1596a11..a27632a 100644 --- a/chrome/browser/background/background_mode_manager_win.cc +++ b/chrome/browser/background/background_mode_manager_win.cc @@ -3,6 +3,7 @@ // found in the LICENSE file. #include "base/base_paths.h" +#include "base/bind.h" #include "base/command_line.h" #include "base/file_path.h" #include "base/logging.h" @@ -22,22 +23,12 @@ using content::BrowserThread; namespace { -class DisableLaunchOnStartupTask : public Task { - public: - virtual void Run(); -}; - -class EnableLaunchOnStartupTask : public Task { - public: - virtual void Run(); -}; - const HKEY kBackgroundModeRegistryRootKey = HKEY_CURRENT_USER; const wchar_t* kBackgroundModeRegistrySubkey = L"Software\\Microsoft\\Windows\\CurrentVersion\\Run"; const wchar_t* kBackgroundModeRegistryKeyName = L"chromium"; -void DisableLaunchOnStartupTask::Run() { +void DisableLaunchOnStartupCallback() { const wchar_t* key_name = kBackgroundModeRegistryKeyName; base::win::RegKey read_key(kBackgroundModeRegistryRootKey, kBackgroundModeRegistrySubkey, KEY_READ); @@ -50,7 +41,7 @@ void DisableLaunchOnStartupTask::Run() { } } -void EnableLaunchOnStartupTask::Run() { +void EnableLaunchOnStartupCallback() { // TODO(rickcam): Bug 53597: Make RegKey mockable. // TODO(rickcam): Bug 53600: Use distinct registry keys per flavor+profile. const wchar_t* key_name = kBackgroundModeRegistryKeyName; @@ -83,10 +74,10 @@ void BackgroundModeManager::EnableLaunchOnStartup(bool should_launch) { return; if (should_launch) { BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, - new EnableLaunchOnStartupTask()); + base::Bind(EnableLaunchOnStartupCallback)); } else { BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, - new DisableLaunchOnStartupTask()); + base::Bind(DisableLaunchOnStartupCallback)); } } |