OLD | NEW |
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_legacy_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/android/resource_mapper.h" | 10 #include "chrome/browser/android/resource_mapper.h" |
11 #include "chrome/browser/infobars/infobar_service.h" | 11 #include "chrome/browser/infobars/infobar_service.h" |
12 #include "chrome/browser/profiles/profile.h" | 12 #include "chrome/browser/profiles/profile.h" |
13 #include "chrome/browser/ssl/chrome_ssl_host_state_delegate.h" | 13 #include "chrome/browser/ssl/chrome_ssl_host_state_delegate.h" |
14 #include "chrome/browser/ssl/chrome_ssl_host_state_delegate_factory.h" | 14 #include "chrome/browser/ssl/chrome_ssl_host_state_delegate_factory.h" |
15 #include "chrome/browser/ui/website_settings/website_settings.h" | 15 #include "chrome/browser/ui/website_settings/website_settings.h" |
16 #include "chrome/grit/generated_resources.h" | |
17 #include "content/public/browser/browser_context.h" | 16 #include "content/public/browser/browser_context.h" |
18 #include "content/public/browser/cert_store.h" | 17 #include "content/public/browser/cert_store.h" |
19 #include "content/public/browser/navigation_controller.h" | 18 #include "content/public/browser/navigation_controller.h" |
20 #include "content/public/browser/navigation_entry.h" | 19 #include "content/public/browser/navigation_entry.h" |
21 #include "content/public/browser/web_contents.h" | 20 #include "content/public/browser/web_contents.h" |
22 #include "content/public/common/ssl_status.h" | 21 #include "content/public/common/ssl_status.h" |
23 #include "jni/WebsiteSettingsPopup_jni.h" | 22 #include "grit/generated_resources.h" |
| 23 #include "jni/WebsiteSettingsPopupLegacy_jni.h" |
24 #include "net/cert/x509_certificate.h" | 24 #include "net/cert/x509_certificate.h" |
25 #include "ui/base/l10n/l10n_util.h" | 25 #include "ui/base/l10n/l10n_util.h" |
26 | 26 |
27 using base::android::CheckException; | 27 using base::android::CheckException; |
28 using base::android::ConvertUTF8ToJavaString; | 28 using base::android::ConvertUTF8ToJavaString; |
29 using base::android::ConvertUTF16ToJavaString; | 29 using base::android::ConvertUTF16ToJavaString; |
30 using base::android::GetClass; | 30 using base::android::GetClass; |
31 using base::android::ScopedJavaLocalRef; | 31 using base::android::ScopedJavaLocalRef; |
32 using content::CertStore; | 32 using content::CertStore; |
33 using content::WebContents; | 33 using content::WebContents; |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 | 70 |
71 // static | 71 // static |
72 static jlong Init(JNIEnv* env, | 72 static jlong Init(JNIEnv* env, |
73 jclass clazz, | 73 jclass clazz, |
74 jobject obj, | 74 jobject obj, |
75 jobject java_web_contents) { | 75 jobject java_web_contents) { |
76 content::WebContents* web_contents = | 76 content::WebContents* web_contents = |
77 content::WebContents::FromJavaWebContents(java_web_contents); | 77 content::WebContents::FromJavaWebContents(java_web_contents); |
78 | 78 |
79 return reinterpret_cast<intptr_t>( | 79 return reinterpret_cast<intptr_t>( |
80 new WebsiteSettingsPopupAndroid(env, obj, web_contents)); | 80 new WebsiteSettingsPopupLegacyAndroid(env, obj, web_contents)); |
81 } | 81 } |
82 | 82 |
83 WebsiteSettingsPopupAndroid::WebsiteSettingsPopupAndroid( | 83 WebsiteSettingsPopupLegacyAndroid::WebsiteSettingsPopupLegacyAndroid( |
84 JNIEnv* env, | 84 JNIEnv* env, |
85 jobject java_website_settings_pop, | 85 jobject java_website_settings_pop, |
86 WebContents* web_contents) { | 86 WebContents* web_contents) { |
87 // Important to use GetVisibleEntry to match what's showing in the omnibox. | 87 // Important to use GetVisibleEntry to match what's showing in the omnibox. |
88 content::NavigationEntry* nav_entry = | 88 content::NavigationEntry* nav_entry = |
89 web_contents->GetController().GetVisibleEntry(); | 89 web_contents->GetController().GetVisibleEntry(); |
90 if (nav_entry == NULL) | 90 if (nav_entry == NULL) |
91 return; | 91 return; |
92 | 92 |
93 popup_jobject_.Reset(env, java_website_settings_pop); | 93 popup_jobject_.Reset(env, java_website_settings_pop); |
94 | 94 |
95 presenter_.reset(new WebsiteSettings( | 95 presenter_.reset(new WebsiteSettings( |
96 this, | 96 this, |
97 Profile::FromBrowserContext(web_contents->GetBrowserContext()), | 97 Profile::FromBrowserContext(web_contents->GetBrowserContext()), |
98 TabSpecificContentSettings::FromWebContents(web_contents), | 98 TabSpecificContentSettings::FromWebContents(web_contents), |
99 InfoBarService::FromWebContents(web_contents), | 99 InfoBarService::FromWebContents(web_contents), |
100 nav_entry->GetURL(), | 100 nav_entry->GetURL(), |
101 nav_entry->GetSSL(), | 101 nav_entry->GetSSL(), |
102 content::CertStore::GetInstance())); | 102 content::CertStore::GetInstance())); |
103 } | 103 } |
104 | 104 |
105 WebsiteSettingsPopupAndroid::~WebsiteSettingsPopupAndroid() {} | 105 WebsiteSettingsPopupLegacyAndroid::~WebsiteSettingsPopupLegacyAndroid() { |
| 106 } |
106 | 107 |
107 void WebsiteSettingsPopupAndroid::Destroy(JNIEnv* env, jobject obj) { | 108 void WebsiteSettingsPopupLegacyAndroid::Destroy(JNIEnv* env, jobject obj) { |
108 delete this; | 109 delete this; |
109 } | 110 } |
110 | 111 |
111 void WebsiteSettingsPopupAndroid::ResetCertDecisions( | 112 void WebsiteSettingsPopupLegacyAndroid::ResetCertDecisions( |
112 JNIEnv* env, | 113 JNIEnv* env, |
113 jobject obj, | 114 jobject obj, |
114 jobject java_web_contents) { | 115 jobject java_web_contents) { |
115 content::WebContents* web_contents = | 116 content::WebContents* web_contents = |
116 content::WebContents::FromJavaWebContents(java_web_contents); | 117 content::WebContents::FromJavaWebContents(java_web_contents); |
117 if (!web_contents) | 118 if (!web_contents) |
118 return; | 119 return; |
119 ChromeSSLHostStateDelegate* delegate = | 120 ChromeSSLHostStateDelegate* delegate = |
120 presenter_->chrome_ssl_host_state_delegate(); | 121 presenter_->chrome_ssl_host_state_delegate(); |
121 DCHECK(delegate); | 122 DCHECK(delegate); |
122 delegate->RevokeUserDecisionsHard(presenter_->site_url().host()); | 123 delegate->RevokeUserDecisionsHard(presenter_->site_url().host()); |
123 } | 124 } |
124 | 125 |
125 void WebsiteSettingsPopupAndroid::SetIdentityInfo( | 126 void WebsiteSettingsPopupLegacyAndroid::SetIdentityInfo( |
126 const IdentityInfo& identity_info) { | 127 const IdentityInfo& identity_info) { |
127 JNIEnv* env = base::android::AttachCurrentThread(); | 128 JNIEnv* env = base::android::AttachCurrentThread(); |
128 | 129 |
129 { | 130 { |
130 int icon_id = ResourceMapper::MapFromChromiumId( | 131 int icon_id = ResourceMapper::MapFromChromiumId( |
131 WebsiteSettingsUI::GetIdentityIconID(identity_info.identity_status)); | 132 WebsiteSettingsUI::GetIdentityIconID(identity_info.identity_status)); |
132 | 133 |
133 // The headline and the certificate dialog link of the site's identity | 134 // The headline and the certificate dialog link of the site's identity |
134 // section is only displayed if the site's identity was verified. If the | 135 // section is only displayed if the site's identity was verified. If the |
135 // site's identity was verified, then the headline contains the organization | 136 // site's identity was verified, then the headline contains the organization |
136 // name from the provided certificate. If the organization name is not | 137 // name from the provided certificate. If the organization name is not |
137 // available than the hostname of the site is used instead. | 138 // available than the hostname of the site is used instead. |
138 std::string headline; | 139 std::string headline; |
139 if (identity_info.cert_id) { | 140 if (identity_info.cert_id) { |
140 headline = identity_info.site_identity; | 141 headline = identity_info.site_identity; |
141 } | 142 } |
142 | 143 |
143 ScopedJavaLocalRef<jstring> description = ConvertUTF8ToJavaString( | 144 ScopedJavaLocalRef<jstring> description = |
144 env, identity_info.identity_status_description); | 145 ConvertUTF8ToJavaString(env, identity_info.identity_status_description); |
145 base::string16 certificate_label = | 146 base::string16 certificate_label = |
146 l10n_util::GetStringUTF16(IDS_PAGEINFO_CERT_INFO_BUTTON); | 147 l10n_util::GetStringUTF16(IDS_PAGEINFO_CERT_INFO_BUTTON); |
147 Java_WebsiteSettingsPopup_addCertificateSection( | 148 Java_WebsiteSettingsPopupLegacy_addCertificateSection( |
148 env, | 149 env, |
149 popup_jobject_.obj(), | 150 popup_jobject_.obj(), |
150 icon_id, | 151 icon_id, |
151 ConvertUTF8ToJavaString(env, headline).obj(), | 152 ConvertUTF8ToJavaString(env, headline).obj(), |
152 description.obj(), | 153 description.obj(), |
153 ConvertUTF16ToJavaString(env, certificate_label).obj()); | 154 ConvertUTF16ToJavaString(env, certificate_label).obj()); |
154 | 155 |
155 if (identity_info.show_ssl_decision_revoke_button) { | 156 if (identity_info.show_ssl_decision_revoke_button) { |
156 base::string16 reset_button_label = l10n_util::GetStringUTF16( | 157 base::string16 reset_button_label = l10n_util::GetStringUTF16( |
157 IDS_PAGEINFO_RESET_INVALID_CERTIFICATE_DECISIONS_BUTTON); | 158 IDS_PAGEINFO_RESET_INVALID_CERTIFICATE_DECISIONS_BUTTON); |
158 Java_WebsiteSettingsPopup_addResetCertDecisionsButton( | 159 Java_WebsiteSettingsPopupLegacy_addResetCertDecisionsButton( |
159 env, | 160 env, |
160 popup_jobject_.obj(), | 161 popup_jobject_.obj(), |
161 ConvertUTF16ToJavaString(env, reset_button_label).obj()); | 162 ConvertUTF16ToJavaString(env, reset_button_label).obj()); |
162 } | 163 } |
163 } | 164 } |
164 | 165 |
165 { | 166 { |
166 int icon_id = ResourceMapper::MapFromChromiumId( | 167 int icon_id = ResourceMapper::MapFromChromiumId( |
167 WebsiteSettingsUI::GetConnectionIconID( | 168 WebsiteSettingsUI::GetConnectionIconID( |
168 identity_info.connection_status)); | 169 identity_info.connection_status)); |
169 | 170 |
170 ScopedJavaLocalRef<jstring> description = ConvertUTF8ToJavaString( | 171 ScopedJavaLocalRef<jstring> description = ConvertUTF8ToJavaString( |
171 env, identity_info.connection_status_description); | 172 env, identity_info.connection_status_description); |
172 Java_WebsiteSettingsPopup_addDescriptionSection( | 173 Java_WebsiteSettingsPopupLegacy_addDescriptionSection( |
173 env, popup_jobject_.obj(), icon_id, NULL, description.obj()); | 174 env, popup_jobject_.obj(), icon_id, NULL, description.obj()); |
174 } | 175 } |
175 | 176 |
176 Java_WebsiteSettingsPopup_addMoreInfoLink(env, popup_jobject_.obj(), | 177 Java_WebsiteSettingsPopupLegacy_addMoreInfoLink( |
| 178 env, |
| 179 popup_jobject_.obj(), |
177 ConvertUTF8ToJavaString( | 180 ConvertUTF8ToJavaString( |
178 env, l10n_util::GetStringUTF8(IDS_PAGE_INFO_HELP_CENTER_LINK)).obj()); | 181 env, l10n_util::GetStringUTF8(IDS_PAGE_INFO_HELP_CENTER_LINK)).obj()); |
179 Java_WebsiteSettingsPopup_showDialog(env, popup_jobject_.obj()); | 182 Java_WebsiteSettingsPopupLegacy_showDialog(env, popup_jobject_.obj()); |
180 } | 183 } |
181 | 184 |
182 void WebsiteSettingsPopupAndroid::SetCookieInfo( | 185 void WebsiteSettingsPopupLegacyAndroid::SetCookieInfo( |
183 const CookieInfoList& cookie_info_list) { | 186 const CookieInfoList& cookie_info_list) { |
184 NOTIMPLEMENTED(); | 187 NOTIMPLEMENTED(); |
185 } | 188 } |
186 | 189 |
187 void WebsiteSettingsPopupAndroid::SetPermissionInfo( | 190 void WebsiteSettingsPopupLegacyAndroid::SetPermissionInfo( |
188 const PermissionInfoList& permission_info_list) { | 191 const PermissionInfoList& permission_info_list) { |
189 NOTIMPLEMENTED(); | 192 NOTIMPLEMENTED(); |
190 } | 193 } |
191 | 194 |
192 void WebsiteSettingsPopupAndroid::SetSelectedTab( | 195 void WebsiteSettingsPopupLegacyAndroid::SetSelectedTab( |
193 WebsiteSettingsUI::TabId tab_id) { | 196 WebsiteSettingsUI::TabId tab_id) { |
194 // There's no tab UI on Android - only connection info is shown. | 197 // There's no tab UI on Android - only connection info is shown. |
195 NOTIMPLEMENTED(); | 198 NOTIMPLEMENTED(); |
196 } | 199 } |
197 | 200 |
198 void WebsiteSettingsPopupAndroid::SetFirstVisit( | 201 void WebsiteSettingsPopupLegacyAndroid::SetFirstVisit( |
199 const base::string16& first_visit) { | 202 const base::string16& first_visit) { |
200 NOTIMPLEMENTED(); | 203 NOTIMPLEMENTED(); |
201 } | 204 } |
202 | 205 |
203 // static | 206 // static |
204 bool WebsiteSettingsPopupAndroid::RegisterWebsiteSettingsPopupAndroid( | 207 bool |
| 208 WebsiteSettingsPopupLegacyAndroid::RegisterWebsiteSettingsPopupLegacyAndroid( |
205 JNIEnv* env) { | 209 JNIEnv* env) { |
206 return RegisterNativesImpl(env); | 210 return RegisterNativesImpl(env); |
207 } | 211 } |
OLD | NEW |