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

Unified Diff: chrome/browser/ui/android/website_settings_popup_android.cc

Issue 620983002: Add Permissions to the PageInfo dialog on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@page_info_dialog_shell_only_v2
Patch Set: Added TODO to rename class to PageInfo Created 6 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 side-by-side diff with in-line comments
Download patch
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(

Powered by Google App Engine
This is Rietveld 408576698