| Index: chrome/browser/background_mode_manager.cc
|
| diff --git a/chrome/browser/background_mode_manager.cc b/chrome/browser/background_mode_manager.cc
|
| index 8a5678235f7ba085284273c4865f93758f857a4b..0a3d669e46a8875253c379ab73bf6d3811237ead 100644
|
| --- a/chrome/browser/background_mode_manager.cc
|
| +++ b/chrome/browser/background_mode_manager.cc
|
| @@ -6,9 +6,7 @@
|
| #include "app/resource_bundle.h"
|
| #include "base/base_paths.h"
|
| #include "base/command_line.h"
|
| -#include "base/file_path.h"
|
| #include "base/logging.h"
|
| -#include "base/path_service.h"
|
| #include "base/utf_string_conversions.h"
|
| #include "chrome/app/chrome_command_ids.h"
|
| #include "chrome/browser/background_application_list_model.h"
|
| @@ -18,7 +16,6 @@
|
| #include "chrome/browser/metrics/user_metrics.h"
|
| #include "chrome/browser/prefs/pref_service.h"
|
| #include "chrome/browser/profile.h"
|
| -#include "chrome/browser/shell_integration.h"
|
| #include "chrome/browser/status_icons/status_icon.h"
|
| #include "chrome/browser/status_icons/status_tray.h"
|
| #include "chrome/common/chrome_switches.h"
|
| @@ -26,147 +23,10 @@
|
| #include "chrome/common/notification_service.h"
|
| #include "chrome/common/notification_type.h"
|
| #include "chrome/common/pref_names.h"
|
| -#include "grit/browser_resources.h"
|
| #include "grit/chromium_strings.h"
|
| #include "grit/generated_resources.h"
|
| #include "grit/theme_resources.h"
|
|
|
| -#if defined(OS_LINUX)
|
| -#include <unistd.h>
|
| -#include "base/environment.h"
|
| -#include "base/file_util.h"
|
| -#include "base/nix/xdg_util.h"
|
| -#include "base/task.h"
|
| -#include "base/utf_string_conversions.h"
|
| -#include "chrome/common/chrome_version_info.h"
|
| -#endif
|
| -
|
| -#if defined(OS_MACOSX)
|
| -#include "base/mac_util.h"
|
| -#endif
|
| -
|
| -#if defined(TOOLKIT_GTK)
|
| -#include "chrome/browser/gtk/gtk_util.h"
|
| -#endif
|
| -
|
| -#if defined(OS_LINUX)
|
| -static const FilePath::CharType kAutostart[] = "autostart";
|
| -static const FilePath::CharType kConfig[] = ".config";
|
| -static const char kXdgConfigHome[] = "XDG_CONFIG_HOME";
|
| -#endif
|
| -
|
| -#if defined(OS_WIN)
|
| -#include "base/win/registry.h"
|
| -const HKEY kBackgroundModeRegistryRootKey = HKEY_CURRENT_USER;
|
| -const wchar_t* kBackgroundModeRegistrySubkey =
|
| - L"Software\\Microsoft\\Windows\\CurrentVersion\\Run";
|
| -const wchar_t* kBackgroundModeRegistryKeyName = L"chromium";
|
| -#endif
|
| -
|
| -#if defined(OS_LINUX)
|
| -namespace {
|
| -
|
| -FilePath GetAutostartDirectory(base::Environment* environment) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
|
| - FilePath result =
|
| - base::nix::GetXDGDirectory(environment, kXdgConfigHome, kConfig);
|
| - result = result.Append(kAutostart);
|
| - return result;
|
| -}
|
| -
|
| -FilePath GetAutostartFilename(base::Environment* environment) {
|
| - FilePath directory = GetAutostartDirectory(environment);
|
| - return directory.Append(ShellIntegration::GetDesktopName(environment));
|
| -}
|
| -
|
| -} // namespace
|
| -#endif // defined(OS_LINUX)
|
| -
|
| -#if defined(OS_WIN) || defined(OS_LINUX)
|
| -class DisableLaunchOnStartupTask : public Task {
|
| - public:
|
| - virtual void Run() {
|
| -#if defined(OS_LINUX)
|
| - scoped_ptr<base::Environment> environment(base::Environment::Create());
|
| - if (!file_util::Delete(GetAutostartFilename(environment.get()), false)) {
|
| - LOG(WARNING) << "Failed to deregister launch on login.";
|
| - }
|
| -#elif defined(OS_WIN)
|
| - const wchar_t* key_name = kBackgroundModeRegistryKeyName;
|
| - base::win::RegKey read_key(kBackgroundModeRegistryRootKey,
|
| - kBackgroundModeRegistrySubkey, KEY_READ);
|
| - base::win::RegKey write_key(kBackgroundModeRegistryRootKey,
|
| - kBackgroundModeRegistrySubkey, KEY_WRITE);
|
| - if (read_key.ValueExists(key_name) && !write_key.DeleteValue(key_name))
|
| - LOG(WARNING) << "Failed to deregister launch on login.";
|
| -#endif
|
| - }
|
| -};
|
| -#endif // defined(OS_WIN) || defined(OS_LINUX)
|
| -
|
| -// TODO(rickcam): Bug 56280: Share implementation with ShellIntegration
|
| -#if defined(OS_WIN) || defined(OS_LINUX)
|
| -class EnableLaunchOnStartupTask : public Task {
|
| - public:
|
| - virtual void Run() {
|
| -#if defined(OS_LINUX)
|
| - scoped_ptr<base::Environment> environment(base::Environment::Create());
|
| - scoped_ptr<chrome::VersionInfo> version_info(new chrome::VersionInfo());
|
| - FilePath autostart_directory = GetAutostartDirectory(environment.get());
|
| - FilePath autostart_file = GetAutostartFilename(environment.get());
|
| - if (!file_util::DirectoryExists(autostart_directory) &&
|
| - !file_util::CreateDirectory(autostart_directory)) {
|
| - LOG(WARNING)
|
| - << "Failed to register launch on login. No autostart directory.";
|
| - return;
|
| - }
|
| - std::string wrapper_script;
|
| - if (!environment->GetVar("CHROME_WRAPPER", &wrapper_script)) {
|
| - LOG(WARNING)
|
| - << "Failed to register launch on login. CHROME_WRAPPER not set.";
|
| - return;
|
| - }
|
| - std::string autostart_file_contents =
|
| - "[Desktop Entry]\n"
|
| - "Type=Application\n"
|
| - "Terminal=false\n"
|
| - "Exec=" + wrapper_script +
|
| - " --enable-background-mode --no-startup-window\n"
|
| - "Name=" + version_info->Name() + "\n";
|
| - std::string::size_type content_length = autostart_file_contents.length();
|
| - if (file_util::WriteFile(autostart_file, autostart_file_contents.c_str(),
|
| - content_length) !=
|
| - static_cast<int>(content_length)) {
|
| - LOG(WARNING) << "Failed to register launch on login. Failed to write "
|
| - << autostart_file.value();
|
| - file_util::Delete(GetAutostartFilename(environment.get()), false);
|
| - }
|
| -#elif defined(OS_WIN)
|
| - // TODO(rickcam): Bug 53597: Make RegKey mockable.
|
| - // TODO(rickcam): Bug 53600: Use distinct registry keys per flavor+profile.
|
| - const wchar_t* key_name = kBackgroundModeRegistryKeyName;
|
| - base::win::RegKey read_key(kBackgroundModeRegistryRootKey,
|
| - kBackgroundModeRegistrySubkey, KEY_READ);
|
| - base::win::RegKey write_key(kBackgroundModeRegistryRootKey,
|
| - kBackgroundModeRegistrySubkey, KEY_WRITE);
|
| - FilePath executable;
|
| - if (!PathService::Get(base::FILE_EXE, &executable))
|
| - return;
|
| - std::wstring new_value = executable.value() + L" --no-startup-window";
|
| - if (read_key.ValueExists(key_name)) {
|
| - std::wstring current_value;
|
| - if (read_key.ReadValue(key_name, ¤t_value) &&
|
| - (current_value == new_value)) {
|
| - return;
|
| - }
|
| - }
|
| - if (!write_key.WriteValue(key_name, new_value.c_str()))
|
| - LOG(WARNING) << "Failed to register launch on login.";
|
| -#endif
|
| - }
|
| -};
|
| -#endif // defined(OS_WIN) || defined(OS_LINUX)
|
| -
|
| void BackgroundModeManager::OnApplicationDataChanged(
|
| const Extension* extension) {
|
| UpdateContextMenuEntryIcon(extension);
|
| @@ -245,15 +105,6 @@ BackgroundModeManager::~BackgroundModeManager() {
|
| EndBackgroundMode();
|
| }
|
|
|
| -bool BackgroundModeManager::IsLaunchOnStartupResetAllowed() {
|
| - return profile_->GetPrefs()->GetBoolean(prefs::kLaunchOnStartupResetAllowed);
|
| -}
|
| -
|
| -void BackgroundModeManager::SetLaunchOnStartupResetAllowed(bool allowed) {
|
| - profile_->GetPrefs()->SetBoolean(prefs::kLaunchOnStartupResetAllowed,
|
| - allowed);
|
| -}
|
| -
|
| void BackgroundModeManager::Observe(NotificationType type,
|
| const NotificationSource& source,
|
| const NotificationDetails& details) {
|
| @@ -380,45 +231,6 @@ void BackgroundModeManager::OnBackgroundAppUninstalled() {
|
| EnableLaunchOnStartup(false);
|
| }
|
|
|
| -void BackgroundModeManager::EnableLaunchOnStartup(bool should_launch) {
|
| - // This functionality is only defined for default profile, currently.
|
| - if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kUserDataDir))
|
| - return;
|
| -#if defined(OS_WIN) || defined(OS_LINUX)
|
| - if (should_launch) {
|
| - BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
|
| - new EnableLaunchOnStartupTask());
|
| - } else {
|
| - BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
|
| - new DisableLaunchOnStartupTask());
|
| - }
|
| -#elif defined(OS_MACOSX)
|
| - if (should_launch) {
|
| - // Return if Chrome is already a Login Item (avoid overriding user choice).
|
| - if (mac_util::CheckLoginItemStatus(NULL))
|
| - return;
|
| -
|
| - mac_util::AddToLoginItems(true); // Hide on startup.
|
| -
|
| - // Remember we set Login Item, not the user - so we can reset it later.
|
| - SetLaunchOnStartupResetAllowed(true);
|
| - } else {
|
| - // If we didn't set Login Item, don't mess with it.
|
| - if (!IsLaunchOnStartupResetAllowed())
|
| - return;
|
| - SetLaunchOnStartupResetAllowed(false);
|
| -
|
| - // 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;
|
| - if (!mac_util::CheckLoginItemStatus(&is_hidden) || !is_hidden)
|
| - return;
|
| -
|
| - mac_util::RemoveFromLoginItems();
|
| - }
|
| -#endif
|
| -}
|
| -
|
| void BackgroundModeManager::CreateStatusTrayIcon() {
|
| // Only need status icons on windows/linux. ChromeOS doesn't allow exiting
|
| // Chrome and Mac can use the dock icon instead.
|
| @@ -462,19 +274,7 @@ void BackgroundModeManager::UpdateStatusTrayIconContextMenu() {
|
| // Add About item
|
| menu->AddItem(IDC_ABOUT, l10n_util::GetStringFUTF16(IDS_ABOUT,
|
| l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)));
|
| -
|
| - // Add Preferences item
|
| -#if defined(OS_CHROMEOS)
|
| - menu->AddItemWithStringId(IDC_OPTIONS, IDS_SETTINGS);
|
| -#elif defined(TOOLKIT_GTK)
|
| - string16 preferences = gtk_util::GetStockPreferencesMenuLabel();
|
| - if (!preferences.empty())
|
| - menu->AddItem(IDC_OPTIONS, preferences);
|
| - else
|
| - menu->AddItemWithStringId(IDC_OPTIONS, IDS_PREFERENCES);
|
| -#else
|
| - menu->AddItemWithStringId(IDC_OPTIONS, IDS_OPTIONS);
|
| -#endif
|
| + menu->AddItem(IDC_OPTIONS, GetPreferencesMenuLabel());
|
| menu->AddItemWithStringId(IDC_TASK_MANAGER, IDS_TASK_MANAGER);
|
| menu->AddSeparator();
|
| int application_position = 0;
|
| @@ -560,11 +360,6 @@ Browser* BackgroundModeManager::GetBrowserWindow() {
|
| }
|
|
|
| // static
|
| -void BackgroundModeManager::RegisterUserPrefs(PrefService* prefs) {
|
| - prefs->RegisterBooleanPref(prefs::kLaunchOnStartupResetAllowed, false);
|
| -}
|
| -
|
| -// static
|
| bool BackgroundModeManager::IsBackgroundModeEnabled(
|
| const CommandLine* command_line) {
|
|
|
|
|