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

Side by Side 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 unified diff | Download patch
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/ui/android/website_settings_popup_android.h" 5 #include "chrome/browser/ui/android/website_settings_popup_android.h"
6 6
7 #include "base/android/jni_android.h" 7 #include "base/android/jni_android.h"
8 #include "base/android/jni_array.h" 8 #include "base/android/jni_array.h"
9 #include "base/android/jni_string.h" 9 #include "base/android/jni_string.h"
10 #include "chrome/browser/infobars/infobar_service.h" 10 #include "chrome/browser/infobars/infobar_service.h"
11 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/browser/ui/website_settings/website_settings.h" 12 #include "chrome/browser/ui/website_settings/website_settings.h"
13 #include "chrome/browser/ui/website_settings/website_settings_ui.h" 13 #include "chrome/browser/ui/website_settings/website_settings_ui.h"
14 #include "components/content_settings/core/common/content_settings.h"
14 #include "components/content_settings/core/common/content_settings_types.h" 15 #include "components/content_settings/core/common/content_settings_types.h"
15 #include "content/public/browser/browser_context.h" 16 #include "content/public/browser/browser_context.h"
16 #include "content/public/browser/cert_store.h" 17 #include "content/public/browser/cert_store.h"
17 #include "content/public/browser/navigation_controller.h" 18 #include "content/public/browser/navigation_controller.h"
18 #include "content/public/browser/navigation_entry.h" 19 #include "content/public/browser/navigation_entry.h"
19 #include "content/public/browser/web_contents.h" 20 #include "content/public/browser/web_contents.h"
21 #include "grit/generated_resources.h"
20 #include "jni/WebsiteSettingsPopup_jni.h" 22 #include "jni/WebsiteSettingsPopup_jni.h"
21 #include "ui/base/l10n/l10n_util.h" 23 #include "ui/base/l10n/l10n_util.h"
22 24
23 using base::android::ConvertUTF16ToJavaString; 25 using base::android::ConvertUTF16ToJavaString;
24 using base::android::ConvertUTF8ToJavaString; 26 using base::android::ConvertUTF8ToJavaString;
25 27
26 // static 28 // static
27 static jlong Init(JNIEnv* env, 29 static jlong Init(JNIEnv* env,
28 jclass clazz, 30 jclass clazz,
29 jobject obj, 31 jobject obj,
(...skipping 28 matching lines...) Expand all
58 nav_entry->GetSSL(), 60 nav_entry->GetSSL(),
59 content::CertStore::GetInstance())); 61 content::CertStore::GetInstance()));
60 } 62 }
61 63
62 WebsiteSettingsPopupAndroid::~WebsiteSettingsPopupAndroid() {} 64 WebsiteSettingsPopupAndroid::~WebsiteSettingsPopupAndroid() {}
63 65
64 void WebsiteSettingsPopupAndroid::Destroy(JNIEnv* env, jobject obj) { 66 void WebsiteSettingsPopupAndroid::Destroy(JNIEnv* env, jobject obj) {
65 delete this; 67 delete this;
66 } 68 }
67 69
70 void WebsiteSettingsPopupAndroid::OnPermissionSettingChanged(JNIEnv* env,
71 jobject obj,
72 jint type,
73 jint setting) {
74 ContentSettingsType content_setting_type =
75 static_cast<ContentSettingsType>(type);
76 ContentSetting content_setting = static_cast<ContentSetting>(setting);
77 presenter_->OnSitePermissionChanged(content_setting_type, content_setting);
78 }
79
68 void WebsiteSettingsPopupAndroid::SetIdentityInfo( 80 void WebsiteSettingsPopupAndroid::SetIdentityInfo(
69 const IdentityInfo& identity_info) { 81 const IdentityInfo& identity_info) {
70 JNIEnv* env = base::android::AttachCurrentThread(); 82 JNIEnv* env = base::android::AttachCurrentThread();
71 83
72 enum PageInfoConnectionType connection_type = CONNECTION_UNKNOWN; 84 enum PageInfoConnectionType connection_type = CONNECTION_UNKNOWN;
73 switch (identity_info.connection_status) { 85 switch (identity_info.connection_status) {
74 case WebsiteSettings::SITE_CONNECTION_STATUS_UNKNOWN: 86 case WebsiteSettings::SITE_CONNECTION_STATUS_UNKNOWN:
75 connection_type = CONNECTION_UNKNOWN; 87 connection_type = CONNECTION_UNKNOWN;
76 break; 88 break;
77 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED: 89 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED:
78 connection_type = CONNECTION_ENCRYPTED; 90 connection_type = CONNECTION_ENCRYPTED;
79 break; 91 break;
80 case WebsiteSettings::SITE_CONNECTION_STATUS_MIXED_CONTENT: 92 case WebsiteSettings::SITE_CONNECTION_STATUS_MIXED_CONTENT:
81 connection_type = CONNECTION_MIXED_CONTENT; 93 connection_type = CONNECTION_MIXED_CONTENT;
82 break; 94 break;
83 case WebsiteSettings::SITE_CONNECTION_STATUS_UNENCRYPTED: 95 case WebsiteSettings::SITE_CONNECTION_STATUS_UNENCRYPTED:
84 connection_type = CONNECTION_UNENCRYPTED; 96 connection_type = CONNECTION_UNENCRYPTED;
85 break; 97 break;
86 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED_ERROR: 98 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED_ERROR:
87 connection_type = CONNECTION_ENCRYPTED_ERROR; 99 connection_type = CONNECTION_ENCRYPTED_ERROR;
88 break; 100 break;
89 case WebsiteSettings::SITE_CONNECTION_STATUS_INTERNAL_PAGE: 101 case WebsiteSettings::SITE_CONNECTION_STATUS_INTERNAL_PAGE:
90 connection_type = CONNECTION_INTERNAL_PAGE; 102 connection_type = CONNECTION_INTERNAL_PAGE;
91 break; 103 break;
92 default: 104 default:
93 NOTREACHED(); 105 NOTREACHED();
94 break; 106 break;
95 } 107 }
96 108
97 Java_WebsiteSettingsPopup_setURLTitle( 109 Java_WebsiteSettingsPopup_setURL(
98 env, 110 env,
99 popup_jobject_.obj(), 111 popup_jobject_.obj(),
112 ConvertUTF8ToJavaString(env, url_.spec()).obj(),
100 ConvertUTF8ToJavaString(env, url_.scheme()).obj(), 113 ConvertUTF8ToJavaString(env, url_.scheme()).obj(),
101 ConvertUTF8ToJavaString(env, url_.host()).obj(), 114 ConvertUTF8ToJavaString(env, url_.host()).obj(),
102 ConvertUTF8ToJavaString(env, url_.path()).obj(), 115 ConvertUTF8ToJavaString(env, url_.path()).obj(),
103 static_cast<jint>(connection_type)); 116 static_cast<jint>(connection_type));
104 117
105 Java_WebsiteSettingsPopup_setConnectionMessage( 118 Java_WebsiteSettingsPopup_setConnectionMessage(
106 env, 119 env,
107 popup_jobject_.obj(), 120 popup_jobject_.obj(),
108 ConvertUTF16ToJavaString( 121 ConvertUTF16ToJavaString(
109 env, 122 env,
110 l10n_util::GetStringUTF16( 123 l10n_util::GetStringUTF16(
111 WebsiteSettingsUI::GetConnectionSummaryMessageID( 124 WebsiteSettingsUI::GetConnectionSummaryMessageID(
112 identity_info.connection_status))).obj()); 125 identity_info.connection_status))).obj());
113 126
114 Java_WebsiteSettingsPopup_showDialog(env, popup_jobject_.obj()); 127 Java_WebsiteSettingsPopup_showDialog(env, popup_jobject_.obj());
115 } 128 }
116 129
117 void WebsiteSettingsPopupAndroid::SetCookieInfo( 130 void WebsiteSettingsPopupAndroid::SetCookieInfo(
118 const CookieInfoList& cookie_info_list) { 131 const CookieInfoList& cookie_info_list) {
119 NOTIMPLEMENTED(); 132 NOTIMPLEMENTED();
120 } 133 }
121 134
122 void WebsiteSettingsPopupAndroid::SetPermissionInfo( 135 void WebsiteSettingsPopupAndroid::SetPermissionInfo(
123 const PermissionInfoList& permission_info_list) { 136 const PermissionInfoList& permission_info_list) {
124 NOTIMPLEMENTED(); 137 JNIEnv* env = base::android::AttachCurrentThread();
138
139 for (PermissionInfoList::const_iterator permission =
140 permission_info_list.begin();
141 permission != permission_info_list.end();
142 ++permission) {
143 int selected_setting_index;
144 switch (permission->setting) {
145 case CONTENT_SETTING_DEFAULT:
146 // If the permission is set to the default, don't display it in the
147 // dialog.
148 continue;
149 break;
150 case CONTENT_SETTING_ALLOW:
151 selected_setting_index = 0;
152 break;
153 case CONTENT_SETTING_BLOCK:
154 selected_setting_index = 1;
155 break;
156 default:
157 // It's not possible to have a content setting that's not allow, block
158 // or default on Android.
159 LOG(ERROR) << "Content setting with type " << permission->type
160 << " has invalid setting " << permission->setting;
161 continue;
162 break;
163 }
164
165 // Only Allow and Block are available in the selectors.
166 jobjectArray settings_labels = env->NewObjectArray(
167 2, env->FindClass("java/lang/String"), env->NewStringUTF(""));
168 env->SetObjectArrayElement(
169 settings_labels,
170 0,
171 ConvertUTF16ToJavaString(
172 env, l10n_util::GetStringUTF16(IDS_PAGE_INFO_PERMISSION_ALLOW))
173 .obj());
174 env->SetObjectArrayElement(
175 settings_labels,
176 1,
177 ConvertUTF16ToJavaString(
178 env, l10n_util::GetStringUTF16(IDS_PAGE_INFO_PERMISSION_BLOCK))
179 .obj());
180
181 jintArray settings_values = env->NewIntArray(2);
182 jint setting = static_cast<jint>(CONTENT_SETTING_ALLOW);
183 env->SetIntArrayRegion(settings_values, 0, 1, &setting);
184 setting = static_cast<jint>(CONTENT_SETTING_BLOCK);
185 env->SetIntArrayRegion(settings_values, 1, 1, &setting);
186
187 base::string16 setting_title =
188 WebsiteSettingsUI::PermissionTypeToUIString(permission->type);
189
190 Java_WebsiteSettingsPopup_addPermissionSection(
191 env,
192 popup_jobject_.obj(),
193 ConvertUTF16ToJavaString(env, setting_title).obj(),
194 static_cast<jint>(permission->type),
195 settings_labels,
196 settings_values,
197 static_cast<jint>(selected_setting_index));
198
199 env->DeleteLocalRef(settings_labels);
200 env->DeleteLocalRef(settings_values);
201 }
125 } 202 }
126 203
127 void WebsiteSettingsPopupAndroid::SetSelectedTab( 204 void WebsiteSettingsPopupAndroid::SetSelectedTab(
128 WebsiteSettingsUI::TabId tab_id) { 205 WebsiteSettingsUI::TabId tab_id) {
129 // There's no tab UI on Android - only connection info is shown. 206 // There's no tab UI on Android - only connection info is shown.
130 NOTIMPLEMENTED(); 207 NOTIMPLEMENTED();
131 } 208 }
132 209
133 void WebsiteSettingsPopupAndroid::SetFirstVisit( 210 void WebsiteSettingsPopupAndroid::SetFirstVisit(
134 const base::string16& first_visit) { 211 const base::string16& first_visit) {
135 NOTIMPLEMENTED(); 212 NOTIMPLEMENTED();
136 } 213 }
137 214
138 // static 215 // static
139 bool WebsiteSettingsPopupAndroid::RegisterWebsiteSettingsPopupAndroid( 216 bool WebsiteSettingsPopupAndroid::RegisterWebsiteSettingsPopupAndroid(
140 JNIEnv* env) { 217 JNIEnv* env) {
141 return RegisterNativesImpl(env); 218 return RegisterNativesImpl(env);
142 } 219 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698