Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / search_engines / template_url_service_android.h
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.
4
5 #ifndef CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_ANDROID_H_
6 #define CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_ANDROID_H_
7
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"
12
13 class TemplateURL;
14
15
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 {
20  public:
21   TemplateUrlServiceAndroid(JNIEnv* env, jobject obj);
22
23   void Load(JNIEnv* env, jobject obj);
24   void SetUserSelectedDefaultSearchProvider(JNIEnv* env,
25                                             jobject obj,
26                                             jint selected_index);
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(
36       JNIEnv* env,
37       jobject obj,
38       jstring jquery);
39   base::android::ScopedJavaLocalRef<jstring> GetUrlForVoiceSearchQuery(
40       JNIEnv* env,
41       jobject obj,
42       jstring jquery);
43   base::android::ScopedJavaLocalRef<jstring> ReplaceSearchTermsInUrl(
44       JNIEnv* env,
45       jobject obj,
46       jstring jquery,
47       jstring jcurrent_url);
48   base::android::ScopedJavaLocalRef<jstring> GetUrlForContextualSearchQuery(
49       JNIEnv* env,
50       jobject obj,
51       jstring jquery,
52       jstring jalternate_term);
53
54   static bool Register(JNIEnv* env);
55
56  private:
57   ~TemplateUrlServiceAndroid();
58
59   bool IsPrepopulatedTemplate(TemplateURL* url);
60
61   void OnTemplateURLServiceLoaded();
62
63   JavaObjectWeakGlobalRef weak_java_obj_;
64
65   // Pointer to the TemplateUrlService for the main profile.
66   TemplateURLService* template_url_service_;
67
68   scoped_ptr<TemplateURLService::Subscription> template_url_subscription_;
69
70   DISALLOW_COPY_AND_ASSIGN(TemplateUrlServiceAndroid);
71 };
72
73 #endif  // CHROME_BROWSER_SEARCH_ENGINES_TEMPLATE_URL_SERVICE_ANDROID_H_