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

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

Issue 465183002: Add ctxsl_alternate_term to the contextual search request and update the API version to 2. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix typo. Created 6 years, 4 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
« no previous file with comments | « chrome/browser/search_engines/template_url_service_android.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/bind.h"
9 #include "base/format_macros.h" 9 #include "base/format_macros.h"
10 #include "base/strings/stringprintf.h" 10 #include "base/strings/stringprintf.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "chrome/browser/profiles/profile_manager.h" 12 #include "chrome/browser/profiles/profile_manager.h"
13 #include "chrome/browser/search_engines/template_url_service_factory.h" 13 #include "chrome/browser/search_engines/template_url_service_factory.h"
14 #include "components/google/core/browser/google_util.h" 14 #include "components/google/core/browser/google_util.h"
15 #include "components/search_engines/template_url.h" 15 #include "components/search_engines/template_url.h"
16 #include "components/search_engines/template_url_prepopulate_data.h" 16 #include "components/search_engines/template_url_prepopulate_data.h"
17 #include "components/search_engines/template_url_service.h" 17 #include "components/search_engines/template_url_service.h"
18 #include "components/search_engines/util.h" 18 #include "components/search_engines/util.h"
19 #include "jni/TemplateUrlService_jni.h" 19 #include "jni/TemplateUrlService_jni.h"
20 #include "net/base/url_util.h" 20 #include "net/base/url_util.h"
21 21
22 using base::android::ConvertJavaStringToUTF16;
23 using base::android::ConvertUTF16ToJavaString;
24 using base::android::ConvertUTF8ToJavaString;
25
26 namespace { 22 namespace {
27 23
28 Profile* GetOriginalProfile() { 24 Profile* GetOriginalProfile() {
29 return ProfileManager::GetActiveUserProfile()->GetOriginalProfile(); 25 return ProfileManager::GetActiveUserProfile()->GetOriginalProfile();
30 } 26 }
31 27
32 } // namespace 28 } // namespace
33 29
34 TemplateUrlServiceAndroid::TemplateUrlServiceAndroid(JNIEnv* env, 30 TemplateUrlServiceAndroid::TemplateUrlServiceAndroid(JNIEnv* env,
35 jobject obj) 31 jobject obj)
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 jobject obj, 111 jobject obj,
116 jint index) { 112 jint index) {
117 TemplateURL* template_url = template_url_service_->GetTemplateURLs()[index]; 113 TemplateURL* template_url = template_url_service_->GetTemplateURLs()[index];
118 if (!IsPrepopulatedTemplate(template_url) && 114 if (!IsPrepopulatedTemplate(template_url) &&
119 !template_url->created_by_policy()) 115 !template_url->created_by_policy())
120 return ScopedJavaLocalRef<jobject>(); 116 return ScopedJavaLocalRef<jobject>();
121 117
122 return Java_TemplateUrl_create( 118 return Java_TemplateUrl_create(
123 env, 119 env,
124 index, 120 index,
125 ConvertUTF16ToJavaString(env, template_url->short_name()).obj(), 121 base::android::ConvertUTF16ToJavaString(
126 ConvertUTF16ToJavaString(env, template_url->keyword()).obj()); 122 env, template_url->short_name()).obj(),
123 base::android::ConvertUTF16ToJavaString(
124 env, template_url->keyword()).obj());
127 } 125 }
128 126
129 bool TemplateUrlServiceAndroid::IsPrepopulatedTemplate(TemplateURL* url) { 127 bool TemplateUrlServiceAndroid::IsPrepopulatedTemplate(TemplateURL* url) {
130 return url->prepopulate_id() > 0; 128 return url->prepopulate_id() > 0;
131 } 129 }
132 130
133 void TemplateUrlServiceAndroid::OnTemplateURLServiceLoaded() { 131 void TemplateUrlServiceAndroid::OnTemplateURLServiceLoaded() {
134 template_url_subscription_.reset(); 132 template_url_subscription_.reset();
135 JNIEnv* env = base::android::AttachCurrentThread(); 133 JNIEnv* env = base::android::AttachCurrentThread();
136 if (weak_java_obj_.get(env).is_null()) 134 if (weak_java_obj_.get(env).is_null())
137 return; 135 return;
138 136
139 Java_TemplateUrlService_templateUrlServiceLoaded( 137 Java_TemplateUrlService_templateUrlServiceLoaded(
140 env, weak_java_obj_.get(env).obj()); 138 env, weak_java_obj_.get(env).obj());
141 } 139 }
142 140
143 base::android::ScopedJavaLocalRef<jstring> 141 base::android::ScopedJavaLocalRef<jstring>
144 TemplateUrlServiceAndroid::GetUrlForSearchQuery(JNIEnv* env, 142 TemplateUrlServiceAndroid::GetUrlForSearchQuery(JNIEnv* env,
145 jobject obj, 143 jobject obj,
146 jstring jquery) { 144 jstring jquery) {
147 const TemplateURL* default_provider = 145 const TemplateURL* default_provider =
148 template_url_service_->GetDefaultSearchProvider(); 146 template_url_service_->GetDefaultSearchProvider();
149 147
150 base::string16 query(ConvertJavaStringToUTF16(env, jquery)); 148 base::string16 query(base::android::ConvertJavaStringToUTF16(env, jquery));
151 149
152 std::string url; 150 std::string url;
153 if (default_provider && 151 if (default_provider &&
154 default_provider->url_ref().SupportsReplacement( 152 default_provider->url_ref().SupportsReplacement(
155 template_url_service_->search_terms_data()) && 153 template_url_service_->search_terms_data()) &&
156 !query.empty()) { 154 !query.empty()) {
157 url = default_provider->url_ref().ReplaceSearchTerms( 155 url = default_provider->url_ref().ReplaceSearchTerms(
158 TemplateURLRef::SearchTermsArgs(query), 156 TemplateURLRef::SearchTermsArgs(query),
159 template_url_service_->search_terms_data()); 157 template_url_service_->search_terms_data());
160 } 158 }
161 159
162 return ConvertUTF8ToJavaString(env, url); 160 return base::android::ConvertUTF8ToJavaString(env, url);
163 } 161 }
164 162
165 base::android::ScopedJavaLocalRef<jstring> 163 base::android::ScopedJavaLocalRef<jstring>
166 TemplateUrlServiceAndroid::GetUrlForVoiceSearchQuery(JNIEnv* env, 164 TemplateUrlServiceAndroid::GetUrlForVoiceSearchQuery(JNIEnv* env,
167 jobject obj, 165 jobject obj,
168 jstring jquery) { 166 jstring jquery) {
169 base::string16 query(ConvertJavaStringToUTF16(env, jquery)); 167 base::string16 query(base::android::ConvertJavaStringToUTF16(env, jquery));
170 std::string url; 168 std::string url;
171 169
172 if (!query.empty()) { 170 if (!query.empty()) {
173 GURL gurl(GetDefaultSearchURLForSearchTerms(template_url_service_, query)); 171 GURL gurl(GetDefaultSearchURLForSearchTerms(template_url_service_, query));
174 if (google_util::IsGoogleSearchUrl(gurl)) 172 if (google_util::IsGoogleSearchUrl(gurl))
175 gurl = net::AppendQueryParameter(gurl, "inm", "vs"); 173 gurl = net::AppendQueryParameter(gurl, "inm", "vs");
176 url = gurl.spec(); 174 url = gurl.spec();
177 } 175 }
178 176
179 return ConvertUTF8ToJavaString(env, url); 177 return base::android::ConvertUTF8ToJavaString(env, url);
180 } 178 }
181 179
182 base::android::ScopedJavaLocalRef<jstring> 180 base::android::ScopedJavaLocalRef<jstring>
183 TemplateUrlServiceAndroid::ReplaceSearchTermsInUrl(JNIEnv* env, 181 TemplateUrlServiceAndroid::ReplaceSearchTermsInUrl(JNIEnv* env,
184 jobject obj, 182 jobject obj,
185 jstring jquery, 183 jstring jquery,
186 jstring jcurrent_url) { 184 jstring jcurrent_url) {
187 TemplateURL* default_provider = 185 TemplateURL* default_provider =
188 template_url_service_->GetDefaultSearchProvider(); 186 template_url_service_->GetDefaultSearchProvider();
189 187
190 base::string16 query(ConvertJavaStringToUTF16(env, jquery)); 188 base::string16 query(base::android::ConvertJavaStringToUTF16(env, jquery));
191 GURL current_url(ConvertJavaStringToUTF16(env, jcurrent_url)); 189 GURL current_url(base::android::ConvertJavaStringToUTF16(env, jcurrent_url));
192 GURL destination_url(current_url); 190 GURL destination_url(current_url);
193 if (default_provider && !query.empty()) { 191 if (default_provider && !query.empty()) {
194 bool refined_query = default_provider->ReplaceSearchTermsInURL( 192 bool refined_query = default_provider->ReplaceSearchTermsInURL(
195 current_url, TemplateURLRef::SearchTermsArgs(query), 193 current_url, TemplateURLRef::SearchTermsArgs(query),
196 template_url_service_->search_terms_data(), &destination_url); 194 template_url_service_->search_terms_data(), &destination_url);
197 if (refined_query) 195 if (refined_query)
198 return ConvertUTF8ToJavaString(env, destination_url.spec()); 196 return base::android::ConvertUTF8ToJavaString(
197 env, destination_url.spec());
199 } 198 }
200 return base::android::ScopedJavaLocalRef<jstring>(env, NULL); 199 return base::android::ScopedJavaLocalRef<jstring>(env, NULL);
201 } 200 }
202 201
203 base::android::ScopedJavaLocalRef<jstring> 202 base::android::ScopedJavaLocalRef<jstring>
204 TemplateUrlServiceAndroid::GetUrlForContextualSearchQuery(JNIEnv* env, 203 TemplateUrlServiceAndroid::GetUrlForContextualSearchQuery(
205 jobject obj, 204 JNIEnv* env,
206 jstring jquery) { 205 jobject obj,
207 base::string16 query(ConvertJavaStringToUTF16(env, jquery)); 206 jstring jquery,
207 jstring jalternate_term) {
208 base::string16 query(base::android::ConvertJavaStringToUTF16(env, jquery));
208 std::string url; 209 std::string url;
209 210
210 if (!query.empty()) { 211 if (!query.empty()) {
211 GURL gurl(GetDefaultSearchURLForSearchTerms(template_url_service_, query)); 212 GURL gurl(GetDefaultSearchURLForSearchTerms(template_url_service_, query));
212 if (google_util::IsGoogleSearchUrl(gurl)) { 213 if (google_util::IsGoogleSearchUrl(gurl)) {
213 gurl = net::AppendQueryParameter(gurl, "ctxs", "1"); 214 gurl = net::AppendQueryParameter(gurl, "ctxs", "2");
214 // Indicate that the search page is being prefetched. 215 // Indicate that the search page is being prefetched.
215 gurl = net::AppendQueryParameter(gurl, "pf", "c"); 216 gurl = net::AppendQueryParameter(gurl, "pf", "c");
217
218 if (jalternate_term) {
219 std::string alternate_term(
220 base::android::ConvertJavaStringToUTF8(env, jalternate_term));
221 if (!alternate_term.empty()) {
222 gurl = net::AppendQueryParameter(
223 gurl, "ctxsl_alternate_term", alternate_term);
224 }
225 }
216 } 226 }
217 url = gurl.spec(); 227 url = gurl.spec();
218 } 228 }
219 229
220 return ConvertUTF8ToJavaString(env, url); 230 return base::android::ConvertUTF8ToJavaString(env, url);
221 } 231 }
222 232
223 static jlong Init(JNIEnv* env, jobject obj) { 233 static jlong Init(JNIEnv* env, jobject obj) {
224 TemplateUrlServiceAndroid* template_url_service_android = 234 TemplateUrlServiceAndroid* template_url_service_android =
225 new TemplateUrlServiceAndroid(env, obj); 235 new TemplateUrlServiceAndroid(env, obj);
226 return reinterpret_cast<intptr_t>(template_url_service_android); 236 return reinterpret_cast<intptr_t>(template_url_service_android);
227 } 237 }
228 238
229 // static 239 // static
230 bool TemplateUrlServiceAndroid::Register(JNIEnv* env) { 240 bool TemplateUrlServiceAndroid::Register(JNIEnv* env) {
231 return RegisterNativesImpl(env); 241 return RegisterNativesImpl(env);
232 } 242 }
OLDNEW
« no previous file with comments | « chrome/browser/search_engines/template_url_service_android.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698