diff options
Diffstat (limited to 'chrome')
| -rw-r--r-- | chrome/browser/prefs/browser_prefs.cc | 2 | ||||
| -rw-r--r-- | chrome/browser/ui/startup/obsolete_os_prompt.h | 9 | ||||
| -rw-r--r-- | chrome/browser/ui/startup/obsolete_os_prompt_mac.cc | 31 | ||||
| -rw-r--r-- | chrome/common/pref_names.cc | 7 | ||||
| -rw-r--r-- | chrome/common/pref_names.h | 4 |
5 files changed, 53 insertions, 0 deletions
diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc index 17c93f9..be9fcdb 100644 --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc @@ -76,6 +76,7 @@ #if defined(OS_MACOSX) #include "chrome/browser/ui/cocoa/confirm_quit.h" #include "chrome/browser/ui/cocoa/presentation_mode_prefs.h" +#include "chrome/browser/ui/startup/obsolete_os_prompt.h" #endif #if defined(TOOLKIT_VIEWS) @@ -173,6 +174,7 @@ void RegisterLocalState(PrefService* local_state) { #endif #if defined(OS_MACOSX) + browser::RegisterObsoleteOSInfobarPrefs(local_state); confirm_quit::RegisterLocalState(local_state); #endif } diff --git a/chrome/browser/ui/startup/obsolete_os_prompt.h b/chrome/browser/ui/startup/obsolete_os_prompt.h index fd5e7cf..ce62a20 100644 --- a/chrome/browser/ui/startup/obsolete_os_prompt.h +++ b/chrome/browser/ui/startup/obsolete_os_prompt.h @@ -6,10 +6,19 @@ #define CHROME_BROWSER_UI_STARTUP_OBSOLETE_OS_PROMPT_H_ #pragma once +#include "build/build_config.h" + class Browser; +class PrefService; namespace browser { +#if defined(OS_MACOSX) +// Registers the Mac-specific preference about when to show obsolete OS +// prompts. +void RegisterObsoleteOSInfobarPrefs(PrefService* local_state); +#endif + // Shows a warning notification in |browser| that the app is being run on an // unsupported operating system. void ShowObsoleteOSPrompt(Browser* browser); diff --git a/chrome/browser/ui/startup/obsolete_os_prompt_mac.cc b/chrome/browser/ui/startup/obsolete_os_prompt_mac.cc index dc813b1..d0c185c 100644 --- a/chrome/browser/ui/startup/obsolete_os_prompt_mac.cc +++ b/chrome/browser/ui/startup/obsolete_os_prompt_mac.cc @@ -5,10 +5,14 @@ #include "chrome/browser/ui/startup/obsolete_os_prompt.h" #include "base/mac/mac_util.h" +#include "base/time.h" +#include "chrome/browser/browser_process.h" #include "chrome/browser/infobars/infobar_tab_helper.h" +#include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/startup/obsolete_os_info_bar.h" #include "chrome/browser/ui/tab_contents/tab_contents.h" +#include "chrome/common/pref_names.h" #include "grit/chromium_strings.h" #include "grit/generated_resources.h" #include "ui/base/l10n/l10n_util.h" @@ -23,10 +27,34 @@ const char kMacLeopardDeprecationUrl[] = namespace browser { +void RegisterObsoleteOSInfobarPrefs(PrefService* local_state) { + local_state->RegisterDoublePref( + prefs::kMacLeopardObsoleteInfobarLastShown, + 0, + PrefService::UNSYNCABLE_PREF); +} + void ShowObsoleteOSPrompt(Browser* browser) { if (!base::mac::IsOSLeopard()) return; + PrefService* local_state = g_browser_process->local_state(); + if (!local_state) + return; + + // Only show the infobar if the user has not been shown it for more than a + // week. + base::Time time_now(base::Time::Now()); + if (local_state->HasPrefPath(prefs::kMacLeopardObsoleteInfobarLastShown)) { + double time_double = + local_state->GetDouble(prefs::kMacLeopardObsoleteInfobarLastShown); + base::Time last_shown(base::Time::FromDoubleT(time_double)); + + base::TimeDelta a_week(base::TimeDelta::FromDays(7)); + if (last_shown >= time_now - a_week) + return; + } + TabContents* tab = browser->GetActiveTabContents(); if (!tab) return; @@ -36,6 +64,9 @@ void ShowObsoleteOSPrompt(Browser* browser) { l10n_util::GetStringFUTF16(IDS_MAC_10_5_LEOPARD_DEPRECATED, l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)), GURL(kMacLeopardDeprecationUrl))); + + local_state->SetDouble(prefs::kMacLeopardObsoleteInfobarLastShown, + time_now.ToDoubleT()); } } // namespace browser diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index 32a2837..cf08d3c 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc @@ -1939,4 +1939,11 @@ const char kNetworkProfileWarningsLeft[] = "network_profile.warnings_left"; // |network_profile.warnings_left| after a silence period. const char kNetworkProfileLastWarningTime[] = "network_profile.last_warning_time"; + +#if defined(OS_MACOSX) +// A timestamp of when the obsolete OS infobar was last shown to a user on 10.5. +const char kMacLeopardObsoleteInfobarLastShown[] = + "mac_105_obsolete_infobar_last_shown"; +#endif // defined(OS_MACOSX) + } // namespace prefs diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index fd10825..15b2e04 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h @@ -731,6 +731,10 @@ extern const char kInManagedMode[]; extern const char kNetworkProfileWarningsLeft[]; extern const char kNetworkProfileLastWarningTime[]; +#if defined(OS_MACOSX) +extern const char kMacLeopardObsoleteInfobarLastShown[]; +#endif // defined(OS_MACOSX) + } // namespace prefs #endif // CHROME_COMMON_PREF_NAMES_H_ |
