Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(123)

Side by Side Diff: chrome/browser/search_engines/template_url_service_android.cc

Issue 23710022: Convert NOTIFICATION_TEMPLATE_URL_SERVICE_LOADED to CallbackList (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/search_engines/template_url_service_android.h" 5 #include "chrome/browser/search_engines/template_url_service_android.h"
6 6
7 #include "base/android/jni_string.h" 7 #include "base/android/jni_string.h"
8 #include "base/bind.h"
8 #include "base/format_macros.h" 9 #include "base/format_macros.h"
9 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
10 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
11 #include "chrome/browser/browser_process.h" 12 #include "chrome/browser/browser_process.h"
12 #include "chrome/browser/chrome_notification_types.h"
13 #include "chrome/browser/profiles/profile_manager.h" 13 #include "chrome/browser/profiles/profile_manager.h"
14 #include "chrome/browser/search_engines/search_terms_data.h" 14 #include "chrome/browser/search_engines/search_terms_data.h"
15 #include "chrome/browser/search_engines/template_url.h" 15 #include "chrome/browser/search_engines/template_url.h"
16 #include "chrome/browser/search_engines/template_url_prepopulate_data.h" 16 #include "chrome/browser/search_engines/template_url_prepopulate_data.h"
17 #include "chrome/browser/search_engines/template_url_service.h"
18 #include "chrome/browser/search_engines/template_url_service_factory.h" 17 #include "chrome/browser/search_engines/template_url_service_factory.h"
19 #include "content/public/browser/notification_source.h"
20 #include "jni/TemplateUrlService_jni.h" 18 #include "jni/TemplateUrlService_jni.h"
21 19
22 using base::android::ConvertJavaStringToUTF16; 20 using base::android::ConvertJavaStringToUTF16;
23 using base::android::ConvertUTF16ToJavaString; 21 using base::android::ConvertUTF16ToJavaString;
24 using base::android::ConvertUTF8ToJavaString; 22 using base::android::ConvertUTF8ToJavaString;
25 23
26 namespace { 24 namespace {
27 25
28 Profile* GetOriginalProfile() { 26 Profile* GetOriginalProfile() {
29 return g_browser_process->profile_manager()->GetDefaultProfile()-> 27 return g_browser_process->profile_manager()->GetDefaultProfile()->
30 GetOriginalProfile(); 28 GetOriginalProfile();
31 } 29 }
32 30
33 } // namespace 31 } // namespace
34 32
35 TemplateUrlServiceAndroid::TemplateUrlServiceAndroid(JNIEnv* env, 33 TemplateUrlServiceAndroid::TemplateUrlServiceAndroid(JNIEnv* env,
36 jobject obj) 34 jobject obj)
37 : weak_java_obj_(env, obj), 35 : weak_java_obj_(env, obj),
38 template_url_service_( 36 template_url_service_(
39 TemplateURLServiceFactory::GetForProfile(GetOriginalProfile())) { 37 TemplateURLServiceFactory::GetForProfile(GetOriginalProfile())) {
40 registrar_.Add(this, 38 template_url_subscription_ =
41 chrome::NOTIFICATION_TEMPLATE_URL_SERVICE_LOADED, 39 template_url_service_->RegisterOnLoadedCallback(
42 content::Source<TemplateURLService>(template_url_service_)); 40 base::Bind(&TemplateUrlServiceAndroid::OnTemplateURLServiceLoaded,
41 base::Unretained(this)));
43 } 42 }
44 43
45 TemplateUrlServiceAndroid::~TemplateUrlServiceAndroid() { 44 TemplateUrlServiceAndroid::~TemplateUrlServiceAndroid() {
46 } 45 }
47 46
48 void TemplateUrlServiceAndroid::Observe(
49 int type,
50 const content::NotificationSource& source,
51 const content::NotificationDetails& details) {
52 DCHECK_EQ(chrome::NOTIFICATION_TEMPLATE_URL_SERVICE_LOADED, type);
53 JNIEnv* env = base::android::AttachCurrentThread();
54 if (weak_java_obj_.get(env).is_null())
55 return;
56
57 Java_TemplateUrlService_templateUrlServiceLoaded(env,
58 weak_java_obj_.get(env).obj());
59 }
60
61 void TemplateUrlServiceAndroid::Load(JNIEnv* env, jobject obj) { 47 void TemplateUrlServiceAndroid::Load(JNIEnv* env, jobject obj) {
62 template_url_service_->Load(); 48 template_url_service_->Load();
63 } 49 }
64 50
65 void TemplateUrlServiceAndroid::SetDefaultSearchProvider(JNIEnv* env, 51 void TemplateUrlServiceAndroid::SetDefaultSearchProvider(JNIEnv* env,
66 jobject obj, 52 jobject obj,
67 jint selected_index) { 53 jint selected_index) {
68 std::vector<TemplateURL*> template_urls = 54 std::vector<TemplateURL*> template_urls =
69 template_url_service_->GetTemplateURLs(); 55 template_url_service_->GetTemplateURLs();
70 size_t selected_index_size_t = static_cast<size_t>(selected_index); 56 size_t selected_index_size_t = static_cast<size_t>(selected_index);
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 env, 119 env,
134 index, 120 index,
135 ConvertUTF16ToJavaString(env, template_url->short_name()).obj(), 121 ConvertUTF16ToJavaString(env, template_url->short_name()).obj(),
136 ConvertUTF16ToJavaString(env, template_url->keyword()).obj()); 122 ConvertUTF16ToJavaString(env, template_url->keyword()).obj());
137 } 123 }
138 124
139 bool TemplateUrlServiceAndroid::IsPrepopulatedTemplate(TemplateURL* url) { 125 bool TemplateUrlServiceAndroid::IsPrepopulatedTemplate(TemplateURL* url) {
140 return url->prepopulate_id() > 0; 126 return url->prepopulate_id() > 0;
141 } 127 }
142 128
129 void TemplateUrlServiceAndroid::OnTemplateURLServiceLoaded() {
130 template_url_subscription_.reset();
131 JNIEnv* env = base::android::AttachCurrentThread();
132 if (weak_java_obj_.get(env).is_null())
133 return;
134
135 Java_TemplateUrlService_templateUrlServiceLoaded(
136 env, weak_java_obj_.get(env).obj());
137 }
138
143 base::android::ScopedJavaLocalRef<jstring> 139 base::android::ScopedJavaLocalRef<jstring>
144 TemplateUrlServiceAndroid::GetUrlForSearchQuery(JNIEnv* env, 140 TemplateUrlServiceAndroid::GetUrlForSearchQuery(JNIEnv* env,
145 jobject obj, 141 jobject obj,
146 jstring jquery) { 142 jstring jquery) {
147 const TemplateURL* default_provider = 143 const TemplateURL* default_provider =
148 template_url_service_->GetDefaultSearchProvider(); 144 template_url_service_->GetDefaultSearchProvider();
149 145
150 string16 query(ConvertJavaStringToUTF16(env, jquery)); 146 string16 query(ConvertJavaStringToUTF16(env, jquery));
151 147
152 std::string url; 148 std::string url;
(...skipping 29 matching lines...) Expand all
182 static jint Init(JNIEnv* env, jobject obj) { 178 static jint Init(JNIEnv* env, jobject obj) {
183 TemplateUrlServiceAndroid* template_url_service_android = 179 TemplateUrlServiceAndroid* template_url_service_android =
184 new TemplateUrlServiceAndroid(env, obj); 180 new TemplateUrlServiceAndroid(env, obj);
185 return reinterpret_cast<jint>(template_url_service_android); 181 return reinterpret_cast<jint>(template_url_service_android);
186 } 182 }
187 183
188 // static 184 // static
189 bool TemplateUrlServiceAndroid::Register(JNIEnv* env) { 185 bool TemplateUrlServiceAndroid::Register(JNIEnv* env) {
190 return RegisterNativesImpl(env); 186 return RegisterNativesImpl(env);
191 } 187 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698