diff options
| author | rsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-13 18:09:34 +0000 |
|---|---|---|
| committer | rsesek@chromium.org <rsesek@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-13 18:09:34 +0000 |
| commit | 1c4c3bf963f332f8e1dce09e68ecbb438b9e6c11 (patch) | |
| tree | 30daadccd61c5b871f5734869fd784d7a5d26134 | |
| parent | fae288af7e77e81be9f6e0e64ac2fb1fe80e6abf (diff) | |
| download | chromium_src-1c4c3bf963f332f8e1dce09e68ecbb438b9e6c11.zip chromium_src-1c4c3bf963f332f8e1dce09e68ecbb438b9e6c11.tar.gz chromium_src-1c4c3bf963f332f8e1dce09e68ecbb438b9e6c11.tar.bz2 | |
[Mac] Only show the 10.5 deprecation infobar once a week.
Also fixes a bug where it wouldn't display at all because OS_MACOSX was not
defined. Fixed by including build_config.h.
BUG=130351
TEST=On Leopard, open and see an infobar that 10.5 is deprecated. Quit and relaunch and it's not there. Wait a week and it will be again.
Review URL: https://chromiumcodereview.appspot.com/10543128
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@141918 0039d316-1c4b-4281-b951-d872f2087c98
| -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_ |
