diff options
Diffstat (limited to 'chrome/browser/ui/startup')
| -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 |
2 files changed, 40 insertions, 0 deletions
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 |
