blob: 6b8b57e4b773907de313809c89c3fd9192495d5f [file] [log] [blame]
// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/obsolete_system/obsolete_system.h"
#include "base/system/sys_info.h"
#include "chrome/common/chrome_version.h"
#include "chrome/common/url_constants.h"
#include "chrome/grit/chromium_strings.h"
#include "ui/base/l10n/l10n_util.h"
namespace {
enum class Obsoleteness {
MacOS1011Obsolete,
MacOS1012Obsolete,
NotObsolete,
};
Obsoleteness OsObsoleteness() {
// Use base::SysInfo::OperatingSystemVersionNumbers() here rather than the
// preferred base::mac::IsOS*() function because the IsOS functions for
// obsolete system versions are removed to help prevent obsolete code from
// existing in the Chromium codebase.
int32_t major, minor, bugfix;
base::SysInfo::OperatingSystemVersionNumbers(&major, &minor, &bugfix);
if (major < 10 || (major == 10 && minor <= 11))
return Obsoleteness::MacOS1011Obsolete;
if (major == 10 && minor == 12)
return Obsoleteness::MacOS1012Obsolete;
return Obsoleteness::NotObsolete;
}
} // namespace
// static
bool ObsoleteSystem::IsObsoleteNowOrSoon() {
return OsObsoleteness() != Obsoleteness::NotObsolete;
}
// static
std::u16string ObsoleteSystem::LocalizedObsoleteString() {
switch (OsObsoleteness()) {
case Obsoleteness::MacOS1011Obsolete:
return l10n_util::GetStringUTF16(IDS_MAC_10_11_OBSOLETE);
case Obsoleteness::MacOS1012Obsolete:
return l10n_util::GetStringUTF16(IDS_MAC_10_12_OBSOLETE);
default:
return std::u16string();
}
}
// static
bool ObsoleteSystem::IsEndOfTheLine() {
return CHROME_VERSION_MAJOR >= 103;
}
// static
const char* ObsoleteSystem::GetLinkURL() {
return chrome::kMacOsObsoleteURL;
}