Index: chrome/browser/ui/android/page_info/website_settings_popup_android.cc |
diff --git a/chrome/browser/ui/android/page_info/website_settings_popup_android.cc b/chrome/browser/ui/android/page_info/website_settings_popup_android.cc |
index b63da4287fe957e8661042193dd4c25923f9fa22..1f598e76e02539a5bf46c90d17527d52ed09d6b4 100644 |
--- a/chrome/browser/ui/android/page_info/website_settings_popup_android.cc |
+++ b/chrome/browser/ui/android/page_info/website_settings_popup_android.cc |
@@ -8,6 +8,7 @@ |
#include "base/android/jni_array.h" |
#include "base/android/jni_string.h" |
#include "base/stl_util.h" |
+#include "chrome/browser/android/search_geolocation/search_geolocation_service.h" |
#include "chrome/browser/infobars/infobar_service.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ssl/security_state_tab_helper.h" |
@@ -21,6 +22,7 @@ |
#include "content/public/browser/navigation_entry.h" |
#include "content/public/browser/web_contents.h" |
#include "jni/WebsiteSettingsPopup_jni.h" |
+#include "url/origin.h" |
using base::android::ConvertUTF16ToJavaString; |
using base::android::ConvertUTF8ToJavaString; |
@@ -41,7 +43,8 @@ static jlong Init(JNIEnv* env, |
WebsiteSettingsPopupAndroid::WebsiteSettingsPopupAndroid( |
JNIEnv* env, |
jobject java_website_settings_pop, |
- content::WebContents* web_contents) { |
+ content::WebContents* web_contents) |
+ : search_geolocation_service_(nullptr) { |
// Important to use GetVisibleEntry to match what's showing in the omnibox. |
content::NavigationEntry* nav_entry = |
web_contents->GetController().GetVisibleEntry(); |
@@ -58,6 +61,10 @@ WebsiteSettingsPopupAndroid::WebsiteSettingsPopupAndroid( |
security_state::SecurityInfo security_info; |
helper->GetSecurityInfo(&security_info); |
+ search_geolocation_service_ = |
+ SearchGeolocationService::Factory::GetForBrowserContext( |
+ web_contents->GetBrowserContext()); |
+ |
presenter_.reset(new WebsiteSettings( |
this, Profile::FromBrowserContext(web_contents->GetBrowserContext()), |
TabSpecificContentSettings::FromWebContents(web_contents), web_contents, |
@@ -117,9 +124,20 @@ void WebsiteSettingsPopupAndroid::SetPermissionInfo( |
user_specified_settings_to_display; |
for (const auto& permission : permission_info_list) { |
- if (base::ContainsValue(permissions_to_display, permission.type) && |
- permission.setting != CONTENT_SETTING_DEFAULT) { |
- user_specified_settings_to_display[permission.type] = permission.setting; |
+ if (base::ContainsValue(permissions_to_display, permission.type)) { |
+ if (permission.setting != CONTENT_SETTING_DEFAULT) { |
+ user_specified_settings_to_display[permission.type] = |
+ permission.setting; |
+ } else if (permission.type == CONTENT_SETTINGS_TYPE_GEOLOCATION) { |
+ if (search_geolocation_service_ && |
+ search_geolocation_service_->UseDSEGeolocationSetting( |
+ url::Origin(url_))) { |
+ user_specified_settings_to_display[permission.type] = |
+ search_geolocation_service_->GetDSEGeolocationSetting() |
+ ? CONTENT_SETTING_ALLOW |
+ : CONTENT_SETTING_BLOCK; |
+ } |
+ } |
} |
} |