| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/command_line.h" |
| #include "base/feature_list.h" |
| #include "chrome/browser/browser_process.h" |
| #include "components/query_tiles/switches.h" |
| #include "components/variations/service/variations_service.h" |
| |
| #if BUILDFLAG(IS_ANDROID) |
| #include "base/android/jni_android.h" |
| #include "chrome/android/chrome_jni_headers/QueryTileUtils_jni.h" |
| #endif |
| |
| namespace query_tiles { |
| |
| // Issue 1076964: Currently the variation service can be only reached in full |
| // browser mode. Ensure the fetcher task launches OnFullBrowserLoaded. |
| // TODO(hesen): Work around store/get country code in reduce mode. |
| // static |
| std::string GetCountryCode() { |
| std::string country_code; |
| base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
| if (command_line->HasSwitch(query_tiles::switches::kQueryTilesCountryCode)) { |
| country_code = command_line->GetSwitchValueASCII( |
| query_tiles::switches::kQueryTilesCountryCode); |
| if (!country_code.empty()) |
| return country_code; |
| } |
| |
| if (!g_browser_process) |
| return country_code; |
| |
| auto* variations_service = g_browser_process->variations_service(); |
| if (variations_service) { |
| country_code = variations_service->GetStoredPermanentCountry(); |
| if (!country_code.empty()) |
| return country_code; |
| country_code = variations_service->GetLatestCountry(); |
| } |
| return country_code; |
| } |
| |
| bool IsQueryTilesEnabled() { |
| return (!base::FeatureList::IsEnabled( |
| query_tiles::features::kQueryTilesDisableCountryOverride) && |
| query_tiles::features::IsQueryTilesEnabledForCountry( |
| GetCountryCode())) || |
| base::FeatureList::IsEnabled(query_tiles::features::kQueryTiles); |
| } |
| |
| #if BUILDFLAG(IS_ANDROID) |
| static jboolean JNI_QueryTileUtils_IsQueryTilesEnabled(JNIEnv* env) { |
| return IsQueryTilesEnabled(); |
| } |
| #endif |
| |
| } // namespace query_tiles |