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_helper.h"
9 #include "base/android/scoped_java_ref.h"
10 #include "base/memory/scoped_ptr.h"
11 #include "chrome/browser/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 SetDefaultSearchProvider(JNIEnv
* env
, jobject obj
, jint selected_index
);
25 jint
GetDefaultSearchProvider(JNIEnv
* env
, jobject obj
);
26 jint
GetTemplateUrlCount(JNIEnv
* env
, jobject obj
);
27 jboolean
IsLoaded(JNIEnv
* env
, jobject obj
);
28 base::android::ScopedJavaLocalRef
<jobject
>
29 GetPrepopulatedTemplateUrlAt(JNIEnv
* env
, jobject obj
, jint index
);
30 jboolean
IsSearchProviderManaged(JNIEnv
* env
, jobject obj
);
31 jboolean
IsSearchByImageAvailable(JNIEnv
* env
, jobject obj
);
32 jboolean
IsDefaultSearchEngineGoogle(JNIEnv
* env
, jobject obj
);
33 base::android::ScopedJavaLocalRef
<jstring
> GetUrlForSearchQuery(
37 base::android::ScopedJavaLocalRef
<jstring
> GetUrlForVoiceSearchQuery(
41 base::android::ScopedJavaLocalRef
<jstring
> ReplaceSearchTermsInUrl(
45 jstring jcurrent_url
);
47 static bool Register(JNIEnv
* env
);
50 ~TemplateUrlServiceAndroid();
52 bool IsPrepopulatedTemplate(TemplateURL
* url
);
54 void OnTemplateURLServiceLoaded();
56 JavaObjectWeakGlobalRef weak_java_obj_
;
58 // Pointer to the TemplateUrlService for the main profile.
59 TemplateURLService
* template_url_service_
;
61 scoped_ptr
<TemplateURLService::Subscription
> template_url_subscription_
;
63 DISALLOW_COPY_AND_ASSIGN(TemplateUrlServiceAndroid
);
66 #endif // CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_ANDROID_H_