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

Side by Side Diff: chrome/browser/captive_portal/captive_portal_tab_helper_unittest.cc

Issue 1049953003: Rename GURL::SchemeUsesTLS to SchemeIsCryptographic. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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) 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/captive_portal/captive_portal_tab_helper.h" 5 #include "chrome/browser/captive_portal/captive_portal_tab_helper.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "chrome/browser/captive_portal/captive_portal_service.h" 9 #include "chrome/browser/captive_portal/captive_portal_service.h"
10 #include "chrome/browser/captive_portal/captive_portal_tab_reloader.h" 10 #include "chrome/browser/captive_portal/captive_portal_tab_reloader.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 80
81 void TearDown() override { 81 void TearDown() override {
82 web_contents2_.reset(NULL); 82 web_contents2_.reset(NULL);
83 web_contents1_.reset(NULL); 83 web_contents1_.reset(NULL);
84 ChromeRenderViewHostTestHarness::TearDown(); 84 ChromeRenderViewHostTestHarness::TearDown();
85 } 85 }
86 86
87 // Simulates a successful load of |url|. 87 // Simulates a successful load of |url|.
88 void SimulateSuccess(const GURL& url, 88 void SimulateSuccess(const GURL& url,
89 content::RenderViewHost* render_view_host) { 89 content::RenderViewHost* render_view_host) {
90 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeUsesTLS())).Times(1); 90 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeIsCryptographic()))
91 .Times(1);
91 tab_helper().DidStartProvisionalLoadForFrame( 92 tab_helper().DidStartProvisionalLoadForFrame(
92 render_view_host->GetMainFrame(), url, false, false); 93 render_view_host->GetMainFrame(), url, false, false);
93 94
94 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1); 95 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1);
95 tab_helper().DidCommitProvisionalLoadForFrame( 96 tab_helper().DidCommitProvisionalLoadForFrame(
96 render_view_host->GetMainFrame(), 97 render_view_host->GetMainFrame(),
97 url, 98 url,
98 ui::PAGE_TRANSITION_LINK); 99 ui::PAGE_TRANSITION_LINK);
99 } 100 }
100 101
101 // Simulates a connection timeout while requesting |url|. 102 // Simulates a connection timeout while requesting |url|.
102 void SimulateTimeout(const GURL& url, 103 void SimulateTimeout(const GURL& url,
103 content::RenderViewHost* render_view_host) { 104 content::RenderViewHost* render_view_host) {
104 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeUsesTLS())).Times(1); 105 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeIsCryptographic()))
106 .Times(1);
105 tab_helper().DidStartProvisionalLoadForFrame( 107 tab_helper().DidStartProvisionalLoadForFrame(
106 render_view_host->GetMainFrame(), url, false, false); 108 render_view_host->GetMainFrame(), url, false, false);
107 109
108 tab_helper().DidFailProvisionalLoad(render_view_host->GetMainFrame(), 110 tab_helper().DidFailProvisionalLoad(render_view_host->GetMainFrame(),
109 url, 111 url,
110 net::ERR_TIMED_OUT, 112 net::ERR_TIMED_OUT,
111 base::string16()); 113 base::string16());
112 114
113 // Provisional load starts for the error page. 115 // Provisional load starts for the error page.
114 tab_helper().DidStartProvisionalLoadForFrame( 116 tab_helper().DidStartProvisionalLoadForFrame(
115 render_view_host->GetMainFrame(), GURL(kErrorPageUrl), true, false); 117 render_view_host->GetMainFrame(), GURL(kErrorPageUrl), true, false);
116 118
117 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::ERR_TIMED_OUT)).Times(1); 119 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::ERR_TIMED_OUT)).Times(1);
118 tab_helper().DidCommitProvisionalLoadForFrame( 120 tab_helper().DidCommitProvisionalLoadForFrame(
119 render_view_host->GetMainFrame(), 121 render_view_host->GetMainFrame(),
120 GURL(kErrorPageUrl), 122 GURL(kErrorPageUrl),
121 ui::PAGE_TRANSITION_LINK); 123 ui::PAGE_TRANSITION_LINK);
122 } 124 }
123 125
124 // Simulates an abort while requesting |url|. 126 // Simulates an abort while requesting |url|.
125 void SimulateAbort(const GURL& url, 127 void SimulateAbort(const GURL& url,
126 content::RenderViewHost* render_view_host, 128 content::RenderViewHost* render_view_host,
127 NavigationType navigation_type) { 129 NavigationType navigation_type) {
128 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeUsesTLS())).Times(1); 130 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeIsCryptographic()))
131 .Times(1);
129 tab_helper().DidStartProvisionalLoadForFrame( 132 tab_helper().DidStartProvisionalLoadForFrame(
130 render_view_host->GetMainFrame(), url, false, false); 133 render_view_host->GetMainFrame(), url, false, false);
131 134
132 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1); 135 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1);
133 if (navigation_type == kSameProcess) { 136 if (navigation_type == kSameProcess) {
134 tab_helper().DidFailProvisionalLoad(render_view_host->GetMainFrame(), 137 tab_helper().DidFailProvisionalLoad(render_view_host->GetMainFrame(),
135 url, 138 url,
136 net::ERR_ABORTED, 139 net::ERR_ABORTED,
137 base::string16()); 140 base::string16());
138 } else { 141 } else {
139 // For interrupted provisional cross-process navigations, the 142 // For interrupted provisional cross-process navigations, the
140 // RenderViewHost is destroyed without sending a DidFailProvisionalLoad 143 // RenderViewHost is destroyed without sending a DidFailProvisionalLoad
141 // notification. 144 // notification.
142 tab_helper().RenderViewDeleted(render_view_host); 145 tab_helper().RenderViewDeleted(render_view_host);
143 } 146 }
144 147
145 // Make sure that above call resulted in abort, for tests that continue 148 // Make sure that above call resulted in abort, for tests that continue
146 // after the abort. 149 // after the abort.
147 EXPECT_CALL(mock_reloader(), OnAbort()).Times(0); 150 EXPECT_CALL(mock_reloader(), OnAbort()).Times(0);
148 } 151 }
149 152
150 // Simulates an abort while loading an error page. 153 // Simulates an abort while loading an error page.
151 void SimulateAbortTimeout(const GURL& url, 154 void SimulateAbortTimeout(const GURL& url,
152 content::RenderViewHost* render_view_host, 155 content::RenderViewHost* render_view_host,
153 NavigationType navigation_type) { 156 NavigationType navigation_type) {
154 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeUsesTLS())).Times(1); 157 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeIsCryptographic()))
158 .Times(1);
155 tab_helper().DidStartProvisionalLoadForFrame( 159 tab_helper().DidStartProvisionalLoadForFrame(
156 render_view_host->GetMainFrame(), url, false, false); 160 render_view_host->GetMainFrame(), url, false, false);
157 161
158 tab_helper().DidFailProvisionalLoad(render_view_host->GetMainFrame(), 162 tab_helper().DidFailProvisionalLoad(render_view_host->GetMainFrame(),
159 url, 163 url,
160 net::ERR_TIMED_OUT, 164 net::ERR_TIMED_OUT,
161 base::string16()); 165 base::string16());
162 166
163 // Start event for the error page. 167 // Start event for the error page.
164 tab_helper().DidStartProvisionalLoadForFrame( 168 tab_helper().DidStartProvisionalLoadForFrame(
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 } 331 }
328 332
329 // A provisional same-site navigation is interrupted by a cross-process 333 // A provisional same-site navigation is interrupted by a cross-process
330 // navigation without sending an abort first. 334 // navigation without sending an abort first.
331 TEST_F(CaptivePortalTabHelperTest, UnexpectedProvisionalLoad) { 335 TEST_F(CaptivePortalTabHelperTest, UnexpectedProvisionalLoad) {
332 GURL same_site_url = GURL(kHttpUrl); 336 GURL same_site_url = GURL(kHttpUrl);
333 GURL cross_process_url = GURL(kHttpsUrl2); 337 GURL cross_process_url = GURL(kHttpsUrl2);
334 338
335 // A same-site load for the original RenderViewHost starts. 339 // A same-site load for the original RenderViewHost starts.
336 EXPECT_CALL(mock_reloader(), 340 EXPECT_CALL(mock_reloader(),
337 OnLoadStart(same_site_url.SchemeUsesTLS())).Times(1); 341 OnLoadStart(same_site_url.SchemeIsCryptographic())).Times(1);
338 tab_helper().DidStartProvisionalLoadForFrame( 342 tab_helper().DidStartProvisionalLoadForFrame(
339 main_render_frame1(), same_site_url, false, false); 343 main_render_frame1(), same_site_url, false, false);
340 344
341 // It's unexpectedly interrupted by a cross-process navigation, which starts 345 // It's unexpectedly interrupted by a cross-process navigation, which starts
342 // navigating before the old navigation cancels. We generate an abort message 346 // navigating before the old navigation cancels. We generate an abort message
343 // for the old navigation. 347 // for the old navigation.
344 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1); 348 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1);
345 EXPECT_CALL(mock_reloader(), 349 EXPECT_CALL(mock_reloader(),
346 OnLoadStart(cross_process_url.SchemeUsesTLS())).Times(1); 350 OnLoadStart(cross_process_url.SchemeIsCryptographic())).Times(1);
347 tab_helper().DidStartProvisionalLoadForFrame( 351 tab_helper().DidStartProvisionalLoadForFrame(
348 main_render_frame2(), cross_process_url, false, false); 352 main_render_frame2(), cross_process_url, false, false);
349 353
350 // The cross-process navigation fails. 354 // The cross-process navigation fails.
351 tab_helper().DidFailProvisionalLoad(main_render_frame2(), 355 tab_helper().DidFailProvisionalLoad(main_render_frame2(),
352 cross_process_url, 356 cross_process_url,
353 net::ERR_FAILED, 357 net::ERR_FAILED,
354 base::string16()); 358 base::string16());
355 359
356 // The same-site navigation finally is aborted. 360 // The same-site navigation finally is aborted.
(...skipping 14 matching lines...) Expand all
371 } 375 }
372 376
373 // Similar to the above test, except the original RenderViewHost manages to 377 // Similar to the above test, except the original RenderViewHost manages to
374 // commit before its navigation is aborted. 378 // commit before its navigation is aborted.
375 TEST_F(CaptivePortalTabHelperTest, UnexpectedCommit) { 379 TEST_F(CaptivePortalTabHelperTest, UnexpectedCommit) {
376 GURL same_site_url = GURL(kHttpUrl); 380 GURL same_site_url = GURL(kHttpUrl);
377 GURL cross_process_url = GURL(kHttpsUrl2); 381 GURL cross_process_url = GURL(kHttpsUrl2);
378 382
379 // A same-site load for the original RenderViewHost starts. 383 // A same-site load for the original RenderViewHost starts.
380 EXPECT_CALL(mock_reloader(), 384 EXPECT_CALL(mock_reloader(),
381 OnLoadStart(same_site_url.SchemeUsesTLS())).Times(1); 385 OnLoadStart(same_site_url.SchemeIsCryptographic())).Times(1);
382 tab_helper().DidStartProvisionalLoadForFrame( 386 tab_helper().DidStartProvisionalLoadForFrame(
383 main_render_frame1(), same_site_url, false, false); 387 main_render_frame1(), same_site_url, false, false);
384 388
385 // It's unexpectedly interrupted by a cross-process navigation, which starts 389 // It's unexpectedly interrupted by a cross-process navigation, which starts
386 // navigating before the old navigation cancels. We generate an abort message 390 // navigating before the old navigation cancels. We generate an abort message
387 // for the old navigation. 391 // for the old navigation.
388 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1); 392 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1);
389 EXPECT_CALL(mock_reloader(), 393 EXPECT_CALL(mock_reloader(),
390 OnLoadStart(cross_process_url.SchemeUsesTLS())).Times(1); 394 OnLoadStart(cross_process_url.SchemeIsCryptographic())).Times(1);
391 tab_helper().DidStartProvisionalLoadForFrame( 395 tab_helper().DidStartProvisionalLoadForFrame(
392 main_render_frame2(), cross_process_url, false, false); 396 main_render_frame2(), cross_process_url, false, false);
393 397
394 // The cross-process navigation fails. 398 // The cross-process navigation fails.
395 tab_helper().DidFailProvisionalLoad(main_render_frame2(), 399 tab_helper().DidFailProvisionalLoad(main_render_frame2(),
396 cross_process_url, 400 cross_process_url,
397 net::ERR_FAILED, 401 net::ERR_FAILED,
398 base::string16()); 402 base::string16());
399 403
400 // The same-site navigation succeeds. 404 // The same-site navigation succeeds.
401 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1); 405 EXPECT_CALL(mock_reloader(), OnAbort()).Times(1);
402 EXPECT_CALL(mock_reloader(), 406 EXPECT_CALL(mock_reloader(),
403 OnLoadStart(same_site_url.SchemeUsesTLS())).Times(1); 407 OnLoadStart(same_site_url.SchemeIsCryptographic())).Times(1);
404 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1); 408 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1);
405 tab_helper().DidCommitProvisionalLoadForFrame( 409 tab_helper().DidCommitProvisionalLoadForFrame(
406 main_render_frame1(), same_site_url, ui::PAGE_TRANSITION_LINK); 410 main_render_frame1(), same_site_url, ui::PAGE_TRANSITION_LINK);
407 } 411 }
408 412
409 // Simulates navigations for a number of subframes, and makes sure no 413 // Simulates navigations for a number of subframes, and makes sure no
410 // CaptivePortalTabHelper function is called. 414 // CaptivePortalTabHelper function is called.
411 TEST_F(CaptivePortalTabHelperTest, HttpsSubframe) { 415 TEST_F(CaptivePortalTabHelperTest, HttpsSubframe) {
412 GURL url = GURL(kHttpsUrl); 416 GURL url = GURL(kHttpsUrl);
413 417
(...skipping 29 matching lines...) Expand all
443 // but with a different error code. Make sure the TabHelper sees the correct 447 // but with a different error code. Make sure the TabHelper sees the correct
444 // error. 448 // error.
445 TEST_F(CaptivePortalTabHelperTest, HttpsSubframeParallelError) { 449 TEST_F(CaptivePortalTabHelperTest, HttpsSubframeParallelError) {
446 // URL used by both frames. 450 // URL used by both frames.
447 GURL url = GURL(kHttpsUrl); 451 GURL url = GURL(kHttpsUrl);
448 content::RenderFrameHost* subframe = 452 content::RenderFrameHost* subframe =
449 content::RenderFrameHostTester::For(main_render_frame1()) 453 content::RenderFrameHostTester::For(main_render_frame1())
450 ->AppendChild("subframe"); 454 ->AppendChild("subframe");
451 455
452 // Loads start. 456 // Loads start.
453 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeUsesTLS())).Times(1); 457 EXPECT_CALL(mock_reloader(), OnLoadStart(url.SchemeIsCryptographic()))
458 .Times(1);
454 tab_helper().DidStartProvisionalLoadForFrame( 459 tab_helper().DidStartProvisionalLoadForFrame(
455 main_render_frame1(), url, false, false); 460 main_render_frame1(), url, false, false);
456 tab_helper().DidStartProvisionalLoadForFrame(subframe, url, false, false); 461 tab_helper().DidStartProvisionalLoadForFrame(subframe, url, false, false);
457 462
458 // Loads return errors. 463 // Loads return errors.
459 tab_helper().DidFailProvisionalLoad( 464 tab_helper().DidFailProvisionalLoad(
460 main_render_frame1(), url, net::ERR_UNEXPECTED, base::string16()); 465 main_render_frame1(), url, net::ERR_UNEXPECTED, base::string16());
461 tab_helper().DidFailProvisionalLoad( 466 tab_helper().DidFailProvisionalLoad(
462 subframe, url, net::ERR_TIMED_OUT, base::string16()); 467 subframe, url, net::ERR_TIMED_OUT, base::string16());
463 468
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
498 503
499 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::ERR_TIMED_OUT)).Times(1); 504 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::ERR_TIMED_OUT)).Times(1);
500 tab_helper().DidCommitProvisionalLoadForFrame(main_render_frame1(), 505 tab_helper().DidCommitProvisionalLoadForFrame(main_render_frame1(),
501 GURL(kErrorPageUrl), 506 GURL(kErrorPageUrl),
502 ui::PAGE_TRANSITION_LINK); 507 ui::PAGE_TRANSITION_LINK);
503 } 508 }
504 509
505 // Simulates an HTTPS to HTTP redirect. 510 // Simulates an HTTPS to HTTP redirect.
506 TEST_F(CaptivePortalTabHelperTest, HttpsToHttpRedirect) { 511 TEST_F(CaptivePortalTabHelperTest, HttpsToHttpRedirect) {
507 GURL https_url(kHttpsUrl); 512 GURL https_url(kHttpsUrl);
508 EXPECT_CALL(mock_reloader(), 513 EXPECT_CALL(mock_reloader(), OnLoadStart(https_url.SchemeIsCryptographic()))
509 OnLoadStart(https_url.SchemeUsesTLS())).Times(1); 514 .Times(1);
510 tab_helper().DidStartProvisionalLoadForFrame( 515 tab_helper().DidStartProvisionalLoadForFrame(
511 main_render_frame1(), https_url, false, false); 516 main_render_frame1(), https_url, false, false);
512 517
513 GURL http_url(kHttpUrl); 518 GURL http_url(kHttpUrl);
514 EXPECT_CALL(mock_reloader(), OnRedirect(http_url.SchemeUsesTLS())).Times(1); 519 EXPECT_CALL(mock_reloader(), OnRedirect(http_url.SchemeIsCryptographic()))
520 .Times(1);
515 OnRedirect(content::RESOURCE_TYPE_MAIN_FRAME, http_url, 521 OnRedirect(content::RESOURCE_TYPE_MAIN_FRAME, http_url,
516 render_view_host1()->GetProcess()->GetID()); 522 render_view_host1()->GetProcess()->GetID());
517 523
518 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1); 524 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1);
519 tab_helper().DidCommitProvisionalLoadForFrame( 525 tab_helper().DidCommitProvisionalLoadForFrame(
520 main_render_frame1(), http_url, ui::PAGE_TRANSITION_LINK); 526 main_render_frame1(), http_url, ui::PAGE_TRANSITION_LINK);
521 } 527 }
522 528
523 // Simulates an HTTPS to HTTPS redirect. 529 // Simulates an HTTPS to HTTPS redirect.
524 TEST_F(CaptivePortalTabHelperTest, HttpToHttpRedirect) { 530 TEST_F(CaptivePortalTabHelperTest, HttpToHttpRedirect) {
525 GURL http_url(kHttpUrl); 531 GURL http_url(kHttpUrl);
526 EXPECT_CALL(mock_reloader(), 532 EXPECT_CALL(mock_reloader(), OnLoadStart(http_url.SchemeIsCryptographic()))
527 OnLoadStart(http_url.SchemeUsesTLS())).Times(1); 533 .Times(1);
528 tab_helper().DidStartProvisionalLoadForFrame( 534 tab_helper().DidStartProvisionalLoadForFrame(
529 main_render_frame1(), http_url, false, false); 535 main_render_frame1(), http_url, false, false);
530 536
531 EXPECT_CALL(mock_reloader(), OnRedirect(http_url.SchemeUsesTLS())).Times(1); 537 EXPECT_CALL(mock_reloader(), OnRedirect(http_url.SchemeIsCryptographic()))
538 .Times(1);
532 OnRedirect(content::RESOURCE_TYPE_MAIN_FRAME, http_url, 539 OnRedirect(content::RESOURCE_TYPE_MAIN_FRAME, http_url,
533 render_view_host1()->GetProcess()->GetID()); 540 render_view_host1()->GetProcess()->GetID());
534 541
535 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1); 542 EXPECT_CALL(mock_reloader(), OnLoadCommitted(net::OK)).Times(1);
536 tab_helper().DidCommitProvisionalLoadForFrame( 543 tab_helper().DidCommitProvisionalLoadForFrame(
537 main_render_frame1(), http_url, ui::PAGE_TRANSITION_LINK); 544 main_render_frame1(), http_url, ui::PAGE_TRANSITION_LINK);
538 } 545 }
539 546
540 // Tests that a subframe redirect doesn't reset the timer to kick off a captive 547 // Tests that a subframe redirect doesn't reset the timer to kick off a captive
541 // portal probe for the main frame if the main frame request is taking too long. 548 // portal probe for the main frame if the main frame request is taking too long.
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
632 EXPECT_FALSE(tab_helper().IsLoginTab()); 639 EXPECT_FALSE(tab_helper().IsLoginTab());
633 640
634 ObservePortalResult(captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL, 641 ObservePortalResult(captive_portal::RESULT_BEHIND_CAPTIVE_PORTAL,
635 captive_portal::RESULT_NO_RESPONSE); 642 captive_portal::RESULT_NO_RESPONSE);
636 EXPECT_FALSE(tab_helper().IsLoginTab()); 643 EXPECT_FALSE(tab_helper().IsLoginTab());
637 644
638 ObservePortalResult(captive_portal::RESULT_NO_RESPONSE, 645 ObservePortalResult(captive_portal::RESULT_NO_RESPONSE,
639 captive_portal::RESULT_INTERNET_CONNECTED); 646 captive_portal::RESULT_INTERNET_CONNECTED);
640 EXPECT_FALSE(tab_helper().IsLoginTab()); 647 EXPECT_FALSE(tab_helper().IsLoginTab());
641 } 648 }
OLDNEW
« no previous file with comments | « chrome/browser/captive_portal/captive_portal_tab_helper.cc ('k') | chrome/browser/net/certificate_error_reporter.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698