1 // Copyright 2016 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "components/spellcheck/common/spellcheck_features.h" 6 7 #include "base/system/sys_info.h" 8 #include "base/win/windows_version.h" 9 #include "build/build_config.h" 10 #include "components/spellcheck/spellcheck_buildflags.h" 11 12 namespace spellcheck { 13 14 #if BUILDFLAG(ENABLE_SPELLCHECK) 15 16 #if BUILDFLAG(USE_WIN_HYBRID_SPELLCHECKER) 17 const base::Feature kWinUseHybridSpellChecker{ 18 "WinUseHybridSpellChecker", base::FEATURE_DISABLED_BY_DEFAULT}; 19 #endif // BUILDFLAG(USE_WIN_HYBRID_SPELLCHECKER) 20 UseBrowserSpellChecker()21bool UseBrowserSpellChecker() { 22 #if !BUILDFLAG(USE_BROWSER_SPELLCHECKER) 23 return false; 24 #elif defined(OS_WIN) 25 return base::FeatureList::IsEnabled(spellcheck::kWinUseBrowserSpellChecker) && 26 WindowsVersionSupportsSpellchecker(); 27 #else 28 return true; 29 #endif 30 } 31 32 #if defined(OS_WIN) 33 const base::Feature kWinUseBrowserSpellChecker{ 34 "WinUseBrowserSpellChecker", base::FEATURE_DISABLED_BY_DEFAULT}; 35 WindowsVersionSupportsSpellchecker()36bool WindowsVersionSupportsSpellchecker() { 37 return base::win::GetVersion() > base::win::Version::WIN7 && 38 base::win::GetVersion() < base::win::Version::WIN_LAST; 39 } 40 UseWinHybridSpellChecker()41bool UseWinHybridSpellChecker() { 42 #if BUILDFLAG(USE_WIN_HYBRID_SPELLCHECKER) 43 return base::FeatureList::IsEnabled(spellcheck::kWinUseHybridSpellChecker) && 44 UseBrowserSpellChecker(); 45 #else 46 return false; 47 #endif 48 } 49 #endif // defined(OS_WIN) 50 51 #if defined(OS_ANDROID) 52 // Enables/disables Android spellchecker. 53 const base::Feature kAndroidSpellChecker{ 54 "AndroidSpellChecker", base::FEATURE_DISABLED_BY_DEFAULT}; 55 56 // Enables/disables Android spellchecker on non low-end Android devices. 57 const base::Feature kAndroidSpellCheckerNonLowEnd{ 58 "AndroidSpellCheckerNonLowEnd", base::FEATURE_ENABLED_BY_DEFAULT}; 59 IsAndroidSpellCheckFeatureEnabled()60bool IsAndroidSpellCheckFeatureEnabled() { 61 if (base::FeatureList::IsEnabled(spellcheck::kAndroidSpellCheckerNonLowEnd)) { 62 return !base::SysInfo::IsLowEndDevice(); 63 } 64 65 if (base::FeatureList::IsEnabled(spellcheck::kAndroidSpellChecker)) { 66 return true; 67 } 68 69 return false; 70 } 71 #endif // defined(OS_ANDROID) 72 73 #endif // BUILDFLAG(ENABLE_SPELLCHECK) 74 75 } // namespace spellcheck 76