summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/prefs/browser_prefs.cc2
-rw-r--r--chrome/browser/ui/startup/obsolete_os_prompt.h9
-rw-r--r--chrome/browser/ui/startup/obsolete_os_prompt_mac.cc31
-rw-r--r--chrome/common/pref_names.cc7
-rw-r--r--chrome/common/pref_names.h4
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_