OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 package org.chromium.chrome.browser.preferences; | 5 package org.chromium.chrome.browser.preferences; |
6 | 6 |
7 import android.content.Context; | 7 import android.content.Context; |
8 import android.content.Intent; | 8 import android.content.Intent; |
9 import android.content.SharedPreferences; | 9 import android.content.SharedPreferences; |
10 import android.content.res.Resources; | 10 import android.content.res.Resources; |
(...skipping 22 matching lines...) Expand all Loading... | |
33 import org.chromium.chrome.browser.preferences.website.WebsitePreferenceBridge; | 33 import org.chromium.chrome.browser.preferences.website.WebsitePreferenceBridge; |
34 import org.chromium.chrome.browser.search_engines.TemplateUrlService; | 34 import org.chromium.chrome.browser.search_engines.TemplateUrlService; |
35 import org.chromium.chrome.browser.search_engines.TemplateUrlService.LoadListene r; | 35 import org.chromium.chrome.browser.search_engines.TemplateUrlService.LoadListene r; |
36 import org.chromium.chrome.browser.search_engines.TemplateUrlService.TemplateUrl ; | 36 import org.chromium.chrome.browser.search_engines.TemplateUrlService.TemplateUrl ; |
37 import org.chromium.components.location.LocationUtils; | 37 import org.chromium.components.location.LocationUtils; |
38 import org.chromium.ui.text.SpanApplier; | 38 import org.chromium.ui.text.SpanApplier; |
39 import org.chromium.ui.text.SpanApplier.SpanInfo; | 39 import org.chromium.ui.text.SpanApplier.SpanInfo; |
40 | 40 |
41 import java.util.List; | 41 import java.util.List; |
42 | 42 |
43 | |
43 /** | 44 /** |
44 * A custom adapter for listing search engines. | 45 * A custom adapter for listing search engines. |
45 */ | 46 */ |
46 public class SearchEngineAdapter extends BaseAdapter implements LoadListener, On ClickListener { | 47 public class SearchEngineAdapter extends BaseAdapter implements LoadListener, On ClickListener { |
47 /** | 48 /** |
48 * A callback for reporting progress to the owner. | 49 * A callback for reporting progress to the owner. |
49 */ | 50 */ |
50 public interface SelectSearchEngineCallback { | 51 public interface SelectSearchEngineCallback { |
51 /** | 52 /** |
52 * Called when the search engine data has loaded and we've determined th e currently active | 53 * Called when the search engine data has loaded and we've determined th e currently active |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
198 public void onInitializeAccessibilityNodeInfo(View host, Accessibili tyNodeInfo info) { | 199 public void onInitializeAccessibilityNodeInfo(View host, Accessibili tyNodeInfo info) { |
199 super.onInitializeAccessibilityNodeInfo(host, info); | 200 super.onInitializeAccessibilityNodeInfo(host, info); |
200 info.setCheckable(true); | 201 info.setCheckable(true); |
201 info.setChecked(selected); | 202 info.setChecked(selected); |
202 } | 203 } |
203 }); | 204 }); |
204 | 205 |
205 TextView link = (TextView) view.findViewById(R.id.link); | 206 TextView link = (TextView) view.findViewById(R.id.link); |
206 link.setVisibility(selected ? View.VISIBLE : View.GONE); | 207 link.setVisibility(selected ? View.VISIBLE : View.GONE); |
207 if (selected) { | 208 if (selected) { |
208 ForegroundColorSpan linkSpan = new ForegroundColorSpan( | 209 if (!shouldShowLocationInfo(position)) { |
209 ApiCompatibilityUtils.getColor(resources, R.color.pref_accen t_color)); | 210 link.setVisibility(View.GONE); |
210 if (LocationUtils.getInstance().isSystemLocationSettingEnabled()) { | |
211 String message = mContext.getString( | |
212 locationEnabled(position, true) | |
213 ? R.string.search_engine_location_allowed | |
214 : R.string.search_engine_location_blocked); | |
215 SpannableString messageWithLink = new SpannableString(message); | |
216 messageWithLink.setSpan(linkSpan, 0, messageWithLink.length(), 0 ); | |
217 link.setText(messageWithLink); | |
218 } else { | 211 } else { |
219 link.setText(SpanApplier.applySpans( | 212 ForegroundColorSpan linkSpan = new ForegroundColorSpan( |
220 mContext.getString(R.string.android_location_off), | 213 ApiCompatibilityUtils.getColor(resources, R.color.pref_a ccent_color)); |
221 new SpanInfo("<link>", "</link>", linkSpan))); | 214 if (LocationUtils.getInstance().isSystemLocationSettingEnabled() ) { |
Peter Kasting
2016/11/17 23:12:05
Is this condition, in this nested case, still what
ltian
2016/11/18 00:17:36
That part is necessary. Here the "system location"
Peter Kasting
2016/11/18 00:24:47
Right, that was the UI I figured was here.
I gues
| |
215 String message = mContext.getString( | |
216 locationEnabled(position, true) | |
217 ? R.string.search_engine_location_allowed | |
218 : R.string.search_engine_location_blocked); | |
219 SpannableString messageWithLink = new SpannableString(messag e); | |
220 messageWithLink.setSpan(linkSpan, 0, messageWithLink.length( ), 0); | |
221 link.setText(messageWithLink); | |
222 } else { | |
223 link.setText(SpanApplier.applySpans( | |
224 mContext.getString(R.string.android_location_off), | |
225 new SpanInfo("<link>", "</link>", linkSpan))); | |
226 } | |
227 | |
228 link.setOnClickListener(this); | |
222 } | 229 } |
223 | |
224 link.setOnClickListener(this); | |
225 } | 230 } |
226 | 231 |
227 return view; | 232 return view; |
228 } | 233 } |
229 | 234 |
230 // TemplateUrlService.LoadListener | 235 // TemplateUrlService.LoadListener |
231 | 236 |
232 @Override | 237 @Override |
233 public void onTemplateUrlServiceLoaded() { | 238 public void onTemplateUrlServiceLoaded() { |
234 TemplateUrlService.getInstance().unregisterLoadListener(this); | 239 TemplateUrlService.getInstance().unregisterLoadListener(this); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
293 String url = TemplateUrlService.getInstance().getSearchEngineUrlFromTemp lateUrl( | 298 String url = TemplateUrlService.getInstance().getSearchEngineUrlFromTemp lateUrl( |
294 toIndex(position)); | 299 toIndex(position)); |
295 GeolocationInfo locationSettings = new GeolocationInfo(url, null, false) ; | 300 GeolocationInfo locationSettings = new GeolocationInfo(url, null, false) ; |
296 ContentSetting locationPermission = locationSettings.getContentSetting() ; | 301 ContentSetting locationPermission = locationSettings.getContentSetting() ; |
297 // Handle the case where the geoHeader being sent when no permission has been specified. | 302 // Handle the case where the geoHeader being sent when no permission has been specified. |
298 if (locationPermission == ContentSetting.ASK && checkGeoHeader) { | 303 if (locationPermission == ContentSetting.ASK && checkGeoHeader) { |
299 return GeolocationHeader.isGeoHeaderEnabledForUrl(mContext, url, fal se); | 304 return GeolocationHeader.isGeoHeaderEnabledForUrl(mContext, url, fal se); |
300 } | 305 } |
301 return locationPermission == ContentSetting.ALLOW; | 306 return locationPermission == ContentSetting.ALLOW; |
302 } | 307 } |
308 | |
309 private boolean shouldShowLocationInfo(int position) { | |
310 String url = TemplateUrlService.getInstance().getSearchEngineUrlFromTemp lateUrl( | |
311 toIndex(position)); | |
312 GeolocationInfo locationSettings = new GeolocationInfo(url, null, false) ; | |
313 ContentSetting locationPermission = locationSettings.getContentSetting() ; | |
Peter Kasting
2016/11/17 23:12:05
This code seems like it partially duplicates locat
ltian
2016/11/18 00:17:36
I thought about it before but the two functions lo
Peter Kasting
2016/11/18 00:24:47
I think we want something like the following (over
| |
314 // For Google search engine, if location permission is granted for the w hole app, | |
315 // even its own location permission is unset, its location permission is still granted. | |
316 return locationPermission != ContentSetting.ASK | |
317 || GeolocationHeader.isGeoHeaderEnabledForUrl(mContext, url, fals e); | |
318 } | |
303 } | 319 } |
OLD | NEW |