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

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: Final rebase Created 6 years, 1 month 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 Java_WebsiteSettingsPopup_updatePageDetails(
73 switch (identity_info.connection_status) {
74 case WebsiteSettings::SITE_CONNECTION_STATUS_UNKNOWN:
75 connection_type = CONNECTION_UNKNOWN;
76 break;
77 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED:
78 connection_type = CONNECTION_ENCRYPTED;
79 break;
80 case WebsiteSettings::SITE_CONNECTION_STATUS_MIXED_CONTENT:
81 connection_type = CONNECTION_MIXED_CONTENT;
82 break;
83 case WebsiteSettings::SITE_CONNECTION_STATUS_UNENCRYPTED:
84 connection_type = CONNECTION_UNENCRYPTED;
85 break;
86 case WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED_ERROR:
87 connection_type = CONNECTION_ENCRYPTED_ERROR;
88 break;
89 case WebsiteSettings::SITE_CONNECTION_STATUS_INTERNAL_PAGE:
90 connection_type = CONNECTION_INTERNAL_PAGE;
91 break;
92 default:
93 NOTREACHED();
94 break;
95 }
96
97 Java_WebsiteSettingsPopup_setURLTitle(
98 env, 85 env,
99 popup_jobject_.obj(), 86 popup_jobject_.obj(),
100 ConvertUTF8ToJavaString(env, url_.scheme()).obj(), 87 identity_info.connection_status ==
101 ConvertUTF8ToJavaString(env, url_.host()).obj(), 88 WebsiteSettings::SITE_CONNECTION_STATUS_INTERNAL_PAGE);
102 ConvertUTF8ToJavaString(env, url_.path()).obj(),
103 static_cast<jint>(connection_type));
104
105 Java_WebsiteSettingsPopup_setConnectionMessage(
106 env,
107 popup_jobject_.obj(),
108 ConvertUTF16ToJavaString(
109 env,
110 l10n_util::GetStringUTF16(
111 WebsiteSettingsUI::GetConnectionSummaryMessageID(
112 identity_info.connection_status))).obj());
113 89
114 Java_WebsiteSettingsPopup_showDialog(env, popup_jobject_.obj()); 90 Java_WebsiteSettingsPopup_showDialog(env, popup_jobject_.obj());
115 } 91 }
116 92
117 void WebsiteSettingsPopupAndroid::SetCookieInfo( 93 void WebsiteSettingsPopupAndroid::SetCookieInfo(
118 const CookieInfoList& cookie_info_list) { 94 const CookieInfoList& cookie_info_list) {
119 NOTIMPLEMENTED(); 95 NOTIMPLEMENTED();
120 } 96 }
121 97
122 void WebsiteSettingsPopupAndroid::SetPermissionInfo( 98 void WebsiteSettingsPopupAndroid::SetPermissionInfo(
123 const PermissionInfoList& permission_info_list) { 99 const PermissionInfoList& permission_info_list) {
124 NOTIMPLEMENTED(); 100 JNIEnv* env = base::android::AttachCurrentThread();
101
102 // On Android, we only want to display a subset of the available options in a
103 // particular order, but only if their value is different from the default.
104 std::vector<ContentSettingsType> permissions_to_display;
105 permissions_to_display.push_back(CONTENT_SETTINGS_TYPE_GEOLOCATION);
106 permissions_to_display.push_back(CONTENT_SETTINGS_TYPE_MEDIASTREAM);
107 permissions_to_display.push_back(CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
108 permissions_to_display.push_back(CONTENT_SETTINGS_TYPE_IMAGES);
109 permissions_to_display.push_back(CONTENT_SETTINGS_TYPE_JAVASCRIPT);
110 permissions_to_display.push_back(CONTENT_SETTINGS_TYPE_POPUPS);
111
112 std::map<ContentSettingsType, ContentSetting>
113 user_specified_settings_to_display;
114
115 for (const auto& permission : permission_info_list) {
116 if (std::find(permissions_to_display.begin(),
117 permissions_to_display.end(),
118 permission.type) != permissions_to_display.end() &&
119 permission.setting != CONTENT_SETTING_DEFAULT) {
120 user_specified_settings_to_display[permission.type] = permission.setting;
121 }
122 }
123
124 for (const auto& permission : permissions_to_display) {
125 if (ContainsKey(user_specified_settings_to_display, permission)) {
126 base::string16 setting_title =
127 WebsiteSettingsUI::PermissionTypeToUIString(permission);
128
129 Java_WebsiteSettingsPopup_addPermissionSection(
130 env,
131 popup_jobject_.obj(),
132 ConvertUTF16ToJavaString(env, setting_title).obj(),
133 static_cast<jint>(permission),
134 static_cast<jint>(user_specified_settings_to_display[permission]));
135 }
136 }
125 } 137 }
126 138
127 void WebsiteSettingsPopupAndroid::SetSelectedTab( 139 void WebsiteSettingsPopupAndroid::SetSelectedTab(
128 WebsiteSettingsUI::TabId tab_id) { 140 WebsiteSettingsUI::TabId tab_id) {
129 // There's no tab UI on Android - only connection info is shown. 141 // There's no tab UI on Android - only connection info is shown.
130 NOTIMPLEMENTED(); 142 NOTIMPLEMENTED();
131 } 143 }
132 144
133 void WebsiteSettingsPopupAndroid::SetFirstVisit( 145 void WebsiteSettingsPopupAndroid::SetFirstVisit(
134 const base::string16& first_visit) { 146 const base::string16& first_visit) {
135 NOTIMPLEMENTED(); 147 NOTIMPLEMENTED();
136 } 148 }
137 149
138 // static 150 // static
139 bool WebsiteSettingsPopupAndroid::RegisterWebsiteSettingsPopupAndroid( 151 bool WebsiteSettingsPopupAndroid::RegisterWebsiteSettingsPopupAndroid(
140 JNIEnv* env) { 152 JNIEnv* env) {
141 return RegisterNativesImpl(env); 153 return RegisterNativesImpl(env);
142 } 154 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698