1 // Copyright (c) 2013 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.
5 #ifndef CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_ANDROID_H_
6 #define CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_ANDROID_H_
8 #include "base/android/jni_weak_ref.h"
9 #include "base/android/scoped_java_ref.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "components/search_engines/template_url_service.h"
16 // Android wrapper of the TemplateUrlService which provides access from the Java
17 // layer. Note that on Android, there's only a single profile, and therefore
18 // a single instance of this wrapper.
19 class TemplateUrlServiceAndroid
{
21 TemplateUrlServiceAndroid(JNIEnv
* env
, jobject obj
);
23 void Load(JNIEnv
* env
, jobject obj
);
24 void SetUserSelectedDefaultSearchProvider(JNIEnv
* env
,
27 jint
GetDefaultSearchProvider(JNIEnv
* env
, jobject obj
);
28 jint
GetTemplateUrlCount(JNIEnv
* env
, jobject obj
);
29 jboolean
IsLoaded(JNIEnv
* env
, jobject obj
);
30 base::android::ScopedJavaLocalRef
<jobject
>
31 GetPrepopulatedTemplateUrlAt(JNIEnv
* env
, jobject obj
, jint index
);
32 jboolean
IsSearchProviderManaged(JNIEnv
* env
, jobject obj
);
33 jboolean
IsSearchByImageAvailable(JNIEnv
* env
, jobject obj
);
34 jboolean
IsDefaultSearchEngineGoogle(JNIEnv
* env
, jobject obj
);
35 base::android::ScopedJavaLocalRef
<jstring
> GetUrlForSearchQuery(
39 base::android::ScopedJavaLocalRef
<jstring
> GetUrlForVoiceSearchQuery(
43 base::android::ScopedJavaLocalRef
<jstring
> ReplaceSearchTermsInUrl(
47 jstring jcurrent_url
);
48 base::android::ScopedJavaLocalRef
<jstring
> GetUrlForContextualSearchQuery(
52 jstring jalternate_term
);
54 static bool Register(JNIEnv
* env
);
57 ~TemplateUrlServiceAndroid();
59 bool IsPrepopulatedTemplate(TemplateURL
* url
);
61 void OnTemplateURLServiceLoaded();
63 JavaObjectWeakGlobalRef weak_java_obj_
;
65 // Pointer to the TemplateUrlService for the main profile.
66 TemplateURLService
* template_url_service_
;
68 scoped_ptr
<TemplateURLService::Subscription
> template_url_subscription_
;
70 DISALLOW_COPY_AND_ASSIGN(TemplateUrlServiceAndroid
);
73 #endif // CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_ANDROID_H_