summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/startup
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/startup')
-rw-r--r--chrome/browser/ui/startup/obsolete_os_prompt.h9
-rw-r--r--chrome/browser/ui/startup/obsolete_os_prompt_mac.cc31
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