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

Side by Side Diff: chrome/browser/ssl/ssl_blocking_page.cc

Issue 368143002: Add a chrome://interstitials page. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: bauerb comments Created 6 years, 5 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/ssl/ssl_blocking_page.h" 5 #include "chrome/browser/ssl/ssl_blocking_page.h"
6 6
7 #include "base/build_time.h" 7 #include "base/build_time.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/i18n/rtl.h" 9 #include "base/i18n/rtl.h"
10 #include "base/i18n/time_formatting.h" 10 #include "base/i18n/time_formatting.h"
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 } 215 }
216 } 216 }
217 } 217 }
218 218
219 } // namespace 219 } // namespace
220 220
221 // Note that we always create a navigation entry with SSL errors. 221 // Note that we always create a navigation entry with SSL errors.
222 // No error happening loading a sub-resource triggers an interstitial so far. 222 // No error happening loading a sub-resource triggers an interstitial so far.
223 SSLBlockingPage::SSLBlockingPage( 223 SSLBlockingPage::SSLBlockingPage(
224 content::WebContents* web_contents, 224 content::WebContents* web_contents,
225 bool create_interstitial,
225 int cert_error, 226 int cert_error,
226 const net::SSLInfo& ssl_info, 227 const net::SSLInfo& ssl_info,
227 const GURL& request_url, 228 const GURL& request_url,
228 bool overridable, 229 bool overridable,
229 bool strict_enforcement, 230 bool strict_enforcement,
230 const base::Callback<void(bool)>& callback) 231 const base::Callback<void(bool)>& callback)
231 : callback_(callback), 232 : callback_(callback),
232 web_contents_(web_contents), 233 web_contents_(web_contents),
233 cert_error_(cert_error), 234 cert_error_(cert_error),
234 ssl_info_(ssl_info), 235 ssl_info_(ssl_info),
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 #if defined(ENABLE_CAPTIVE_PORTAL_DETECTION) 272 #if defined(ENABLE_CAPTIVE_PORTAL_DETECTION)
272 CaptivePortalService* captive_portal_service = 273 CaptivePortalService* captive_portal_service =
273 CaptivePortalServiceFactory::GetForProfile(profile); 274 CaptivePortalServiceFactory::GetForProfile(profile);
274 captive_portal_detection_enabled_ = captive_portal_service ->enabled(); 275 captive_portal_detection_enabled_ = captive_portal_service ->enabled();
275 captive_portal_service ->DetectCaptivePortal(); 276 captive_portal_service ->DetectCaptivePortal();
276 registrar_.Add(this, 277 registrar_.Add(this,
277 chrome::NOTIFICATION_CAPTIVE_PORTAL_CHECK_RESULT, 278 chrome::NOTIFICATION_CAPTIVE_PORTAL_CHECK_RESULT,
278 content::Source<Profile>(profile)); 279 content::Source<Profile>(profile));
279 #endif 280 #endif
280 281
281 interstitial_page_ = InterstitialPage::Create( 282 // chrome://interstitials page uses this class without actually creating an
282 web_contents_, true, request_url, this); 283 // interstitial so that it can be debugged. Set |create_interstitial| to true
283 interstitial_page_->Show(); 284 // if the page is going to be used as an actual interstitial and not just part
285 // of the chrome://interstitials webui.
286 if (create_interstitial) {
287 interstitial_page_ = InterstitialPage::Create(
288 web_contents_, true, request_url, this);
289 interstitial_page_->Show();
290 }
284 } 291 }
285 292
286 SSLBlockingPage::~SSLBlockingPage() { 293 SSLBlockingPage::~SSLBlockingPage() {
287 if (!callback_.is_null()) { 294 if (!callback_.is_null()) {
288 RecordSSLBlockingPageDetailedStats(false, 295 RecordSSLBlockingPageDetailedStats(false,
289 cert_error_, 296 cert_error_,
290 overridable_ && !strict_enforcement_, 297 overridable_ && !strict_enforcement_,
291 internal_, 298 internal_,
292 num_visits_, 299 num_visits_,
293 captive_portal_detection_enabled_, 300 captive_portal_detection_enabled_,
294 captive_portal_probe_completed_, 301 captive_portal_probe_completed_,
295 captive_portal_no_response_, 302 captive_portal_no_response_,
296 captive_portal_detected_); 303 captive_portal_detected_);
297 // The page is closed without the user having chosen what to do, default to 304 // The page is closed without the user having chosen what to do, default to
298 // deny. 305 // deny.
299 NotifyDenyCertificate(); 306 NotifyDenyCertificate();
300 } 307 }
301 } 308 }
302 309
310 // static
311 void SSLBlockingPage::Show(content::WebContents* web_contents,
312 int cert_error,
313 const net::SSLInfo& ssl_info,
314 const GURL& request_url,
315 bool overridable,
316 bool strict_enforcement,
317 const base::Callback<void(bool)>& callback) {
318 // The interstitial created by the blocking page owns the blocking page.
319 new SSLBlockingPage(web_contents,
320 true,
Bernhard Bauer 2014/07/16 21:49:59 What I meant was that you could show it from here,
meacer 2014/07/17 21:24:09 Done.
321 cert_error,
322 ssl_info,
323 request_url,
324 overridable,
325 strict_enforcement,
326 callback);
327 }
328
329 // static
330 SSLBlockingPage* SSLBlockingPage::CreateForWebUI(
331 content::WebContents* web_contents,
332 int cert_error,
333 const net::SSLInfo& ssl_info,
334 const GURL& request_url,
335 bool overridable,
336 bool strict_enforcement) {
337 // The callee owns the blocking page.
Bernhard Bauer 2014/07/16 21:49:59 This comment would be better off in the header. Bu
meacer 2014/07/17 21:24:09 Returning scoped_ptr makes the code slightly more
338 return new SSLBlockingPage(web_contents,
339 false,
340 cert_error,
341 ssl_info,
342 request_url,
343 overridable,
344 strict_enforcement,
345 base::Callback<void(bool)>());
346 }
347
303 std::string SSLBlockingPage::GetHTMLContents() { 348 std::string SSLBlockingPage::GetHTMLContents() {
304 if (trial_condition_ == kCondV1 || trial_condition_ == kCondV1LayoutV2Text) 349 if (trial_condition_ == kCondV1 || trial_condition_ == kCondV1LayoutV2Text)
305 return GetHTMLContentsV1(); 350 return GetHTMLContentsV1();
306 return GetHTMLContentsV2(); 351 return GetHTMLContentsV2();
307 } 352 }
308 353
309 std::string SSLBlockingPage::GetHTMLContentsV1() { 354 std::string SSLBlockingPage::GetHTMLContentsV1() {
310 base::DictionaryValue strings; 355 base::DictionaryValue strings;
311 int resource_id; 356 int resource_id;
312 if (overridable_ && !strict_enforcement_) { 357 if (overridable_ && !strict_enforcement_) {
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 // sure we don't clear the captive portal flag, since the interstitial was 766 // sure we don't clear the captive portal flag, since the interstitial was
722 // potentially caused by the captive portal. 767 // potentially caused by the captive portal.
723 captive_portal_detected_ = captive_portal_detected_ || 768 captive_portal_detected_ = captive_portal_detected_ ||
724 (results->result == captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL); 769 (results->result == captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL);
725 // Also keep track of non-HTTP portals and error cases. 770 // Also keep track of non-HTTP portals and error cases.
726 captive_portal_no_response_ = captive_portal_no_response_ || 771 captive_portal_no_response_ = captive_portal_no_response_ ||
727 (results->result == captive_portal::RESULT_NO_RESPONSE); 772 (results->result == captive_portal::RESULT_NO_RESPONSE);
728 } 773 }
729 #endif 774 #endif
730 } 775 }
OLDNEW
« no previous file with comments | « chrome/browser/ssl/ssl_blocking_page.h ('k') | chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698