blob: 59dbdfae09c93ba9ddfc0f75ca6f460606cdd642 [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/android/chrome_jni_headers/TemplateUrlServiceFactory_jni.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/search_engines/template_url_service_factory.h"
#include "components/search_engines/template_url_service.h"
#include "components/search_provider_logos/features.h"
#include "components/search_provider_logos/switches.h"
namespace {
Profile* GetOriginalProfile() {
return ProfileManager::GetActiveUserProfile()->GetOriginalProfile();
}
} // namespace
static TemplateURLService* GetTemplateUrlService() {
return TemplateURLServiceFactory::GetForProfile(GetOriginalProfile());
}
static base::android::ScopedJavaLocalRef<jobject>
JNI_TemplateUrlServiceFactory_GetTemplateUrlService(JNIEnv* env) {
return GetTemplateUrlService()->GetJavaObject();
}
static jboolean IsDefaultSearchEngineGoogle(JNIEnv* env) {
const TemplateURL* default_search_provider =
GetTemplateUrlService()->GetDefaultSearchProvider();
return default_search_provider &&
default_search_provider->url_ref().HasGoogleBaseURLs(
GetTemplateUrlService()->search_terms_data());
}
static jboolean JNI_TemplateUrlServiceFactory_DoesDefaultSearchEngineHaveLogo(
JNIEnv* env) {
// |kSearchProviderLogoURL| applies to all search engines (Google or
// third-party).
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
search_provider_logos::switches::kSearchProviderLogoURL)) {
return true;
}
// Google always has a logo.
if (IsDefaultSearchEngineGoogle(env))
return true;
// Third-party search engines can have a doodle specified via the command
// line, or a static logo or doodle from the TemplateURLService.
if (base::CommandLine::ForCurrentProcess()->HasSwitch(
search_provider_logos::switches::kThirdPartyDoodleURL)) {
return true;
}
const TemplateURL* default_search_provider =
GetTemplateUrlService()->GetDefaultSearchProvider();
return default_search_provider &&
(default_search_provider->doodle_url().is_valid() ||
default_search_provider->logo_url().is_valid());
}