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

Side by Side Diff: chrome/browser/safe_browsing/threat_details.cc

Issue 2784253004: Componentize safe_browsing: decouple threat_details* from the chrome/ layer. (Closed)
Patch Set: fix compile for browser tests Created 3 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 // Implementation of the ThreatDetails class. 5 // Implementation of the ThreatDetails class.
6 6
7 #include "chrome/browser/safe_browsing/threat_details.h" 7 #include "chrome/browser/safe_browsing/threat_details.h"
8 8
9 #include <stddef.h> 9 #include <stddef.h>
10 #include <stdint.h> 10 #include <stdint.h>
11 #include <unordered_set> 11 #include <unordered_set>
12 12
13 #include "base/bind.h" 13 #include "base/bind.h"
14 #include "base/lazy_instance.h" 14 #include "base/lazy_instance.h"
15 #include "base/macros.h" 15 #include "base/macros.h"
16 #include "base/metrics/histogram_macros.h" 16 #include "base/metrics/histogram_macros.h"
17 #include "base/strings/string_util.h" 17 #include "base/strings/string_util.h"
18 #include "chrome/browser/history/history_service_factory.h"
19 #include "chrome/browser/profiles/profile.h"
20 #include "chrome/browser/safe_browsing/threat_details_cache.h" 18 #include "chrome/browser/safe_browsing/threat_details_cache.h"
21 #include "chrome/browser/safe_browsing/threat_details_history.h" 19 #include "chrome/browser/safe_browsing/threat_details_history.h"
22 #include "components/history/core/browser/history_service.h" 20 #include "components/history/core/browser/history_service.h"
23 #include "components/safe_browsing/common/safebrowsing_messages.h" 21 #include "components/safe_browsing/common/safebrowsing_messages.h"
24 #include "content/public/browser/browser_thread.h" 22 #include "content/public/browser/browser_thread.h"
25 #include "content/public/browser/navigation_controller.h" 23 #include "content/public/browser/navigation_controller.h"
26 #include "content/public/browser/navigation_entry.h" 24 #include "content/public/browser/navigation_entry.h"
27 #include "content/public/browser/render_frame_host.h" 25 #include "content/public/browser/render_frame_host.h"
28 #include "content/public/browser/web_contents.h" 26 #include "content/public/browser/web_contents.h"
29 #include "net/url_request/url_request_context_getter.h" 27 #include "net/url_request/url_request_context_getter.h"
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 131
134 } // namespace 132 } // namespace
135 133
136 // The default ThreatDetailsFactory. Global, made a singleton so we 134 // The default ThreatDetailsFactory. Global, made a singleton so we
137 // don't leak it. 135 // don't leak it.
138 class ThreatDetailsFactoryImpl : public ThreatDetailsFactory { 136 class ThreatDetailsFactoryImpl : public ThreatDetailsFactory {
139 public: 137 public:
140 ThreatDetails* CreateThreatDetails( 138 ThreatDetails* CreateThreatDetails(
141 BaseUIManager* ui_manager, 139 BaseUIManager* ui_manager,
142 WebContents* web_contents, 140 WebContents* web_contents,
143 const security_interstitials::UnsafeResource& unsafe_resource) override { 141 const security_interstitials::UnsafeResource& unsafe_resource,
144 return new ThreatDetails(ui_manager, web_contents, unsafe_resource); 142 net::URLRequestContextGetter* request_context_getter,
143 history::HistoryService* history_service) override {
144 return new ThreatDetails(ui_manager, web_contents, unsafe_resource,
145 request_context_getter, history_service);
145 } 146 }
146 147
147 private: 148 private:
148 friend struct base::LazyInstanceTraitsBase<ThreatDetailsFactoryImpl>; 149 friend struct base::LazyInstanceTraitsBase<ThreatDetailsFactoryImpl>;
149 150
150 ThreatDetailsFactoryImpl() {} 151 ThreatDetailsFactoryImpl() {}
151 152
152 DISALLOW_COPY_AND_ASSIGN(ThreatDetailsFactoryImpl); 153 DISALLOW_COPY_AND_ASSIGN(ThreatDetailsFactoryImpl);
153 }; 154 };
154 155
155 static base::LazyInstance<ThreatDetailsFactoryImpl>::DestructorAtExit 156 static base::LazyInstance<ThreatDetailsFactoryImpl>::DestructorAtExit
156 g_threat_details_factory_impl = LAZY_INSTANCE_INITIALIZER; 157 g_threat_details_factory_impl = LAZY_INSTANCE_INITIALIZER;
157 158
158 // Create a ThreatDetails for the given tab. 159 // Create a ThreatDetails for the given tab.
159 /* static */ 160 /* static */
160 ThreatDetails* ThreatDetails::NewThreatDetails( 161 ThreatDetails* ThreatDetails::NewThreatDetails(
161 BaseUIManager* ui_manager, 162 BaseUIManager* ui_manager,
162 WebContents* web_contents, 163 WebContents* web_contents,
163 const UnsafeResource& resource) { 164 const UnsafeResource& resource,
165 net::URLRequestContextGetter* request_context_getter,
166 history::HistoryService* history_service) {
164 // Set up the factory if this has not been done already (tests do that 167 // Set up the factory if this has not been done already (tests do that
165 // before this method is called). 168 // before this method is called).
166 if (!factory_) 169 if (!factory_)
167 factory_ = g_threat_details_factory_impl.Pointer(); 170 factory_ = g_threat_details_factory_impl.Pointer();
168 return factory_->CreateThreatDetails(ui_manager, web_contents, resource); 171 return factory_->CreateThreatDetails(ui_manager, web_contents, resource,
172 request_context_getter, history_service);
169 } 173 }
170 174
171 // Create a ThreatDetails for the given tab. Runs in the UI thread. 175 // Create a ThreatDetails for the given tab. Runs in the UI thread.
172 ThreatDetails::ThreatDetails(BaseUIManager* ui_manager, 176 ThreatDetails::ThreatDetails(
173 content::WebContents* web_contents, 177 BaseUIManager* ui_manager,
174 const UnsafeResource& resource) 178 content::WebContents* web_contents,
179 const UnsafeResource& resource,
180 net::URLRequestContextGetter* request_context_getter,
181 history::HistoryService* history_service)
175 : content::WebContentsObserver(web_contents), 182 : content::WebContentsObserver(web_contents),
176 profile_(Profile::FromBrowserContext(web_contents->GetBrowserContext())), 183 request_context_getter_(request_context_getter),
177 request_context_getter_(profile_->GetRequestContext()),
178 ui_manager_(ui_manager), 184 ui_manager_(ui_manager),
179 resource_(resource), 185 resource_(resource),
180 cache_result_(false), 186 cache_result_(false),
181 did_proceed_(false), 187 did_proceed_(false),
182 num_visits_(0), 188 num_visits_(0),
183 ambiguous_dom_(false), 189 ambiguous_dom_(false),
184 cache_collector_(new ThreatDetailsCacheCollector) { 190 cache_collector_(new ThreatDetailsCacheCollector) {
185 history::HistoryService* history_service =
186 HistoryServiceFactory::GetForProfile(profile_,
187 ServiceAccessType::EXPLICIT_ACCESS);
188 redirects_collector_ = new ThreatDetailsRedirectsCollector( 191 redirects_collector_ = new ThreatDetailsRedirectsCollector(
189 history_service ? history_service->AsWeakPtr() 192 history_service ? history_service->AsWeakPtr()
190 : base::WeakPtr<history::HistoryService>()); 193 : base::WeakPtr<history::HistoryService>());
191 StartCollection(); 194 StartCollection();
192 } 195 }
193 196
194 ThreatDetails::~ThreatDetails() {} 197 ThreatDetails::~ThreatDetails() {}
195 198
196 bool ThreatDetails::OnMessageReceived(const IPC::Message& message, 199 bool ThreatDetails::OnMessageReceived(const IPC::Message& message,
197 RenderFrameHost* render_frame_host) { 200 RenderFrameHost* render_frame_host) {
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 // Send the report, using the SafeBrowsingService. 593 // Send the report, using the SafeBrowsingService.
591 std::string serialized; 594 std::string serialized;
592 if (!report_->SerializeToString(&serialized)) { 595 if (!report_->SerializeToString(&serialized)) {
593 DLOG(ERROR) << "Unable to serialize the threat report."; 596 DLOG(ERROR) << "Unable to serialize the threat report.";
594 return; 597 return;
595 } 598 }
596 ui_manager_->SendSerializedThreatDetails(serialized); 599 ui_manager_->SendSerializedThreatDetails(serialized);
597 } 600 }
598 601
599 } // namespace safe_browsing 602 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698