OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 // Implementation of the SafeBrowsingBlockingPage class. | 5 // Implementation of the SafeBrowsingBlockingPage class. |
6 | 6 |
7 #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h" | 7 #include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h" |
8 | 8 |
9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" |
10 #include "app/resource_bundle.h" | 10 #include "app/resource_bundle.h" |
(...skipping 443 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
454 return Singleton<UnsafeResourceMap>::get(); | 454 return Singleton<UnsafeResourceMap>::get(); |
455 } | 455 } |
456 | 456 |
457 // static | 457 // static |
458 void SafeBrowsingBlockingPage::ShowBlockingPage( | 458 void SafeBrowsingBlockingPage::ShowBlockingPage( |
459 SafeBrowsingService* sb_service, | 459 SafeBrowsingService* sb_service, |
460 const SafeBrowsingService::UnsafeResource& unsafe_resource) { | 460 const SafeBrowsingService::UnsafeResource& unsafe_resource) { |
461 TabContents* tab_contents = tab_util::GetTabContentsByID( | 461 TabContents* tab_contents = tab_util::GetTabContentsByID( |
462 unsafe_resource.render_process_host_id, unsafe_resource.render_view_id); | 462 unsafe_resource.render_process_host_id, unsafe_resource.render_view_id); |
463 | 463 |
464 if (!InterstitialPage::GetInterstitialPage(tab_contents)) { | 464 InterstitialPage* interstitial = |
| 465 InterstitialPage::GetInterstitialPage(tab_contents); |
| 466 if (interstitial && |
| 467 unsafe_resource.resource_type == ResourceType::MAIN_FRAME) { |
| 468 // There is already an interstitial showing and we are about to display a |
| 469 // new one for the main frame. Just hide the current one, it is now |
| 470 // irrelevent |
| 471 interstitial->DontProceed(); |
| 472 interstitial = NULL; |
| 473 } |
| 474 |
| 475 if (!interstitial) { |
465 // There are no interstitial currently showing in that tab, go ahead and | 476 // There are no interstitial currently showing in that tab, go ahead and |
466 // show this interstitial. | 477 // show this interstitial. |
467 std::vector<SafeBrowsingService::UnsafeResource> resources; | 478 std::vector<SafeBrowsingService::UnsafeResource> resources; |
468 resources.push_back(unsafe_resource); | 479 resources.push_back(unsafe_resource); |
469 // Set up the factory if this has not been done already (tests do that | 480 // Set up the factory if this has not been done already (tests do that |
470 // before this method is called). | 481 // before this method is called). |
471 if (!factory_) | 482 if (!factory_) |
472 factory_ = Singleton<SafeBrowsingBlockingPageFactoryImpl>::get(); | 483 factory_ = Singleton<SafeBrowsingBlockingPageFactoryImpl>::get(); |
473 SafeBrowsingBlockingPage* blocking_page = | 484 SafeBrowsingBlockingPage* blocking_page = |
474 factory_->CreateSafeBrowsingPage(sb_service, tab_contents, resources); | 485 factory_->CreateSafeBrowsingPage(sb_service, tab_contents, resources); |
475 blocking_page->Show(); | 486 blocking_page->Show(); |
476 return; | 487 return; |
477 } | 488 } |
478 | 489 |
479 // Let's queue the interstitial. | 490 // This is an interstitial for a page's resource, let's queue it. |
480 // Note we only expect resources from the page at this point. | |
481 DCHECK(unsafe_resource.resource_type != ResourceType::MAIN_FRAME); | |
482 UnsafeResourceMap* unsafe_resource_map = GetUnsafeResourcesMap(); | 491 UnsafeResourceMap* unsafe_resource_map = GetUnsafeResourcesMap(); |
483 (*unsafe_resource_map)[tab_contents].push_back(unsafe_resource); | 492 (*unsafe_resource_map)[tab_contents].push_back(unsafe_resource); |
484 } | 493 } |
485 | 494 |
486 // static | 495 // static |
487 bool SafeBrowsingBlockingPage::IsMainPage( | 496 bool SafeBrowsingBlockingPage::IsMainPage( |
488 const UnsafeResourceList& unsafe_resources) { | 497 const UnsafeResourceList& unsafe_resources) { |
489 return unsafe_resources.size() == 1 && | 498 return unsafe_resources.size() == 1 && |
490 unsafe_resources[0].resource_type == ResourceType::MAIN_FRAME; | 499 unsafe_resources[0].resource_type == ResourceType::MAIN_FRAME; |
491 } | 500 } |
OLD | NEW |