OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 <string> | 9 #include <string> |
10 | 10 |
11 #include "app/l10n_util.h" | 11 #include "app/l10n_util.h" |
12 #include "app/resource_bundle.h" | 12 #include "app/resource_bundle.h" |
13 #include "base/i18n/rtl.h" | 13 #include "base/i18n/rtl.h" |
14 #include "base/singleton.h" | 14 #include "base/lazy_instance.h" |
15 #include "base/string_number_conversions.h" | 15 #include "base/string_number_conversions.h" |
16 #include "base/utf_string_conversions.h" | 16 #include "base/utf_string_conversions.h" |
17 #include "base/values.h" | 17 #include "base/values.h" |
18 #include "chrome/browser/browser_thread.h" | 18 #include "chrome/browser/browser_thread.h" |
19 #include "chrome/browser/dom_operation_notification_details.h" | 19 #include "chrome/browser/dom_operation_notification_details.h" |
20 #include "chrome/browser/dom_ui/new_tab_ui.h" | 20 #include "chrome/browser/dom_ui/new_tab_ui.h" |
21 #include "chrome/browser/google/google_util.h" | 21 #include "chrome/browser/google/google_util.h" |
22 #include "chrome/browser/metrics/user_metrics.h" | 22 #include "chrome/browser/metrics/user_metrics.h" |
23 #include "chrome/browser/safe_browsing/safe_browsing_service.h" | 23 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
24 #include "chrome/browser/tab_contents/navigation_controller.h" | 24 #include "chrome/browser/tab_contents/navigation_controller.h" |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 public: | 79 public: |
80 SafeBrowsingBlockingPage* CreateSafeBrowsingPage( | 80 SafeBrowsingBlockingPage* CreateSafeBrowsingPage( |
81 SafeBrowsingService* service, | 81 SafeBrowsingService* service, |
82 TabContents* tab_contents, | 82 TabContents* tab_contents, |
83 const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources) { | 83 const SafeBrowsingBlockingPage::UnsafeResourceList& unsafe_resources) { |
84 return new SafeBrowsingBlockingPage(service, tab_contents, | 84 return new SafeBrowsingBlockingPage(service, tab_contents, |
85 unsafe_resources); | 85 unsafe_resources); |
86 } | 86 } |
87 | 87 |
88 private: | 88 private: |
89 friend struct DefaultSingletonTraits<SafeBrowsingBlockingPageFactoryImpl>; | 89 friend struct base::DefaultLazyInstanceTraits< |
| 90 SafeBrowsingBlockingPageFactoryImpl>; |
90 | 91 |
91 SafeBrowsingBlockingPageFactoryImpl() { } | 92 SafeBrowsingBlockingPageFactoryImpl() { } |
92 | 93 |
93 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingBlockingPageFactoryImpl); | 94 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingBlockingPageFactoryImpl); |
94 }; | 95 }; |
95 | 96 |
| 97 static base::LazyInstance<SafeBrowsingBlockingPageFactoryImpl> |
| 98 g_safe_browsing_blocking_page_factory_impl(base::LINKER_INITIALIZED); |
| 99 |
96 SafeBrowsingBlockingPage::SafeBrowsingBlockingPage( | 100 SafeBrowsingBlockingPage::SafeBrowsingBlockingPage( |
97 SafeBrowsingService* sb_service, | 101 SafeBrowsingService* sb_service, |
98 TabContents* tab_contents, | 102 TabContents* tab_contents, |
99 const UnsafeResourceList& unsafe_resources) | 103 const UnsafeResourceList& unsafe_resources) |
100 : InterstitialPage(tab_contents, | 104 : InterstitialPage(tab_contents, |
101 IsMainPage(unsafe_resources), | 105 IsMainPage(unsafe_resources), |
102 unsafe_resources[0].url), | 106 unsafe_resources[0].url), |
103 sb_service_(sb_service), | 107 sb_service_(sb_service), |
104 is_main_frame_(IsMainPage(unsafe_resources)), | 108 is_main_frame_(IsMainPage(unsafe_resources)), |
105 unsafe_resources_(unsafe_resources) { | 109 unsafe_resources_(unsafe_resources) { |
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 } | 538 } |
535 | 539 |
536 if (!interstitial) { | 540 if (!interstitial) { |
537 // There are no interstitial currently showing in that tab, go ahead and | 541 // There are no interstitial currently showing in that tab, go ahead and |
538 // show this interstitial. | 542 // show this interstitial. |
539 std::vector<SafeBrowsingService::UnsafeResource> resources; | 543 std::vector<SafeBrowsingService::UnsafeResource> resources; |
540 resources.push_back(unsafe_resource); | 544 resources.push_back(unsafe_resource); |
541 // Set up the factory if this has not been done already (tests do that | 545 // Set up the factory if this has not been done already (tests do that |
542 // before this method is called). | 546 // before this method is called). |
543 if (!factory_) | 547 if (!factory_) |
544 factory_ = Singleton<SafeBrowsingBlockingPageFactoryImpl>::get(); | 548 factory_ = g_safe_browsing_blocking_page_factory_impl.Pointer(); |
545 SafeBrowsingBlockingPage* blocking_page = | 549 SafeBrowsingBlockingPage* blocking_page = |
546 factory_->CreateSafeBrowsingPage(sb_service, tab_contents, resources); | 550 factory_->CreateSafeBrowsingPage(sb_service, tab_contents, resources); |
547 blocking_page->Show(); | 551 blocking_page->Show(); |
548 return; | 552 return; |
549 } | 553 } |
550 | 554 |
551 // This is an interstitial for a page's resource, let's queue it. | 555 // This is an interstitial for a page's resource, let's queue it. |
552 UnsafeResourceMap* unsafe_resource_map = GetUnsafeResourcesMap(); | 556 UnsafeResourceMap* unsafe_resource_map = GetUnsafeResourcesMap(); |
553 (*unsafe_resource_map)[tab_contents].push_back(unsafe_resource); | 557 (*unsafe_resource_map)[tab_contents].push_back(unsafe_resource); |
554 } | 558 } |
555 | 559 |
556 // static | 560 // static |
557 bool SafeBrowsingBlockingPage::IsMainPage( | 561 bool SafeBrowsingBlockingPage::IsMainPage( |
558 const UnsafeResourceList& unsafe_resources) { | 562 const UnsafeResourceList& unsafe_resources) { |
559 return unsafe_resources.size() == 1 && | 563 return unsafe_resources.size() == 1 && |
560 unsafe_resources[0].resource_type == ResourceType::MAIN_FRAME; | 564 unsafe_resources[0].resource_type == ResourceType::MAIN_FRAME; |
561 } | 565 } |
OLD | NEW |