Index: chrome/browser/ui/android/website_settings_popup_android.cc |
diff --git a/chrome/browser/ui/android/website_settings_popup_android.cc b/chrome/browser/ui/android/website_settings_popup_android.cc |
index aecef2eb3f6dc7286017b7c66e736eb636ac113d..60b8b6e73d986cf9e250a485053f704f07fe0f96 100644 |
--- a/chrome/browser/ui/android/website_settings_popup_android.cc |
+++ b/chrome/browser/ui/android/website_settings_popup_android.cc |
@@ -11,12 +11,14 @@ |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/website_settings/website_settings.h" |
#include "chrome/browser/ui/website_settings/website_settings_ui.h" |
+#include "components/content_settings/core/common/content_settings.h" |
#include "components/content_settings/core/common/content_settings_types.h" |
#include "content/public/browser/browser_context.h" |
#include "content/public/browser/cert_store.h" |
#include "content/public/browser/navigation_controller.h" |
#include "content/public/browser/navigation_entry.h" |
#include "content/public/browser/web_contents.h" |
+#include "grit/generated_resources.h" |
#include "jni/WebsiteSettingsPopup_jni.h" |
#include "ui/base/l10n/l10n_util.h" |
@@ -65,6 +67,16 @@ void WebsiteSettingsPopupAndroid::Destroy(JNIEnv* env, jobject obj) { |
delete this; |
} |
+void WebsiteSettingsPopupAndroid::OnPermissionSettingChanged(JNIEnv* env, |
+ jobject obj, |
+ jint type, |
+ jint setting) { |
+ ContentSettingsType content_setting_type = |
+ static_cast<ContentSettingsType>(type); |
+ ContentSetting content_setting = static_cast<ContentSetting>(setting); |
+ presenter_->OnSitePermissionChanged(content_setting_type, content_setting); |
+} |
+ |
void WebsiteSettingsPopupAndroid::SetIdentityInfo( |
const IdentityInfo& identity_info) { |
JNIEnv* env = base::android::AttachCurrentThread(); |
@@ -94,9 +106,10 @@ void WebsiteSettingsPopupAndroid::SetIdentityInfo( |
break; |
} |
- Java_WebsiteSettingsPopup_setURLTitle( |
+ Java_WebsiteSettingsPopup_setURL( |
env, |
popup_jobject_.obj(), |
+ ConvertUTF8ToJavaString(env, url_.spec()).obj(), |
ConvertUTF8ToJavaString(env, url_.scheme()).obj(), |
ConvertUTF8ToJavaString(env, url_.host()).obj(), |
ConvertUTF8ToJavaString(env, url_.path()).obj(), |
@@ -121,7 +134,71 @@ void WebsiteSettingsPopupAndroid::SetCookieInfo( |
void WebsiteSettingsPopupAndroid::SetPermissionInfo( |
const PermissionInfoList& permission_info_list) { |
- NOTIMPLEMENTED(); |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ |
+ for (PermissionInfoList::const_iterator permission = |
+ permission_info_list.begin(); |
+ permission != permission_info_list.end(); |
+ ++permission) { |
+ int selected_setting_index; |
+ switch (permission->setting) { |
+ case CONTENT_SETTING_DEFAULT: |
+ // If the permission is set to the default, don't display it in the |
+ // dialog. |
+ continue; |
+ break; |
+ case CONTENT_SETTING_ALLOW: |
+ selected_setting_index = 0; |
+ break; |
+ case CONTENT_SETTING_BLOCK: |
+ selected_setting_index = 1; |
+ break; |
+ default: |
+ // It's not possible to have a content setting that's not allow, block |
+ // or default on Android. |
+ LOG(ERROR) << "Content setting with type " << permission->type |
+ << " has invalid setting " << permission->setting; |
+ continue; |
+ break; |
+ } |
+ |
+ // Only Allow and Block are available in the selectors. |
+ jobjectArray settings_labels = env->NewObjectArray( |
+ 2, env->FindClass("java/lang/String"), env->NewStringUTF("")); |
+ env->SetObjectArrayElement( |
+ settings_labels, |
+ 0, |
+ ConvertUTF16ToJavaString( |
+ env, l10n_util::GetStringUTF16(IDS_PAGE_INFO_PERMISSION_ALLOW)) |
+ .obj()); |
+ env->SetObjectArrayElement( |
+ settings_labels, |
+ 1, |
+ ConvertUTF16ToJavaString( |
+ env, l10n_util::GetStringUTF16(IDS_PAGE_INFO_PERMISSION_BLOCK)) |
+ .obj()); |
+ |
+ jintArray settings_values = env->NewIntArray(2); |
+ jint setting = static_cast<jint>(CONTENT_SETTING_ALLOW); |
+ env->SetIntArrayRegion(settings_values, 0, 1, &setting); |
+ setting = static_cast<jint>(CONTENT_SETTING_BLOCK); |
+ env->SetIntArrayRegion(settings_values, 1, 1, &setting); |
+ |
+ base::string16 setting_title = |
+ WebsiteSettingsUI::PermissionTypeToUIString(permission->type); |
+ |
+ Java_WebsiteSettingsPopup_addPermissionSection( |
+ env, |
+ popup_jobject_.obj(), |
+ ConvertUTF16ToJavaString(env, setting_title).obj(), |
+ static_cast<jint>(permission->type), |
+ settings_labels, |
+ settings_values, |
+ static_cast<jint>(selected_setting_index)); |
+ |
+ env->DeleteLocalRef(settings_labels); |
+ env->DeleteLocalRef(settings_values); |
+ } |
} |
void WebsiteSettingsPopupAndroid::SetSelectedTab( |