OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
Jialiu Lin
2017/01/04 01:36:34
It probably should say "2017" here.
Happy new year
Nate Fischer
2017/01/04 01:45:59
Done. Happy new year!
| |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 // | |
5 // The Safe Browsing service is responsible for downloading anti-phishing and | |
6 // anti-malware tables and checking urls against them. | |
7 | |
8 #ifndef COMPONENTS_SAFE_BROWSING_BASE_SAFE_BROWSING_SERVICE_H_ | |
9 #define COMPONENTS_SAFE_BROWSING_BASE_SAFE_BROWSING_SERVICE_H_ | |
10 | |
11 #include <map> | |
12 #include <memory> | |
13 #include <string> | |
14 | |
15 #include "base/callback_list.h" | |
16 #include "base/macros.h" | |
17 #include "base/memory/ref_counted.h" | |
18 #include "content/public/browser/browser_thread.h" | |
19 | |
20 namespace net { | |
21 class URLRequest; | |
22 class URLRequestContextGetter; | |
23 } | |
24 | |
25 namespace safe_browsing { | |
26 struct ResourceRequestInfo; | |
27 class SafeBrowsingDatabaseManager; | |
28 | |
29 // Construction needs to happen on the main thread. | |
30 // The BaseSafeBrowsingService owns both the UI and Database managers which do | |
31 // the heavylifting of safebrowsing service. Both of these managers stay | |
32 // alive until BaseSafeBrowsingService is destroyed, however, they are disabled | |
33 // permanently when Shutdown method is called. | |
34 class BaseSafeBrowsingService : public base::RefCountedThreadSafe< | |
35 BaseSafeBrowsingService, | |
36 content::BrowserThread::DeleteOnUIThread> { | |
37 public: | |
38 // Called on the UI thread to initialize the service. | |
39 virtual void Initialize(); | |
40 | |
41 // Called on the main thread to let us know that the io_thread is going away. | |
42 virtual void ShutDown(); | |
43 | |
44 // Get current enabled status. Must be called on IO thread. | |
45 bool enabled() const { | |
46 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | |
47 return enabled_; | |
48 } | |
49 | |
50 virtual scoped_refptr<net::URLRequestContextGetter> url_request_context(); | |
51 | |
52 // This returns either the v3 or the v4 database manager, depending on | |
53 // the experiment settings. | |
54 virtual const scoped_refptr<SafeBrowsingDatabaseManager>& database_manager() | |
55 const; | |
56 | |
57 // Observes resource requests made by the renderer and reports suspicious | |
58 // activity. | |
59 void OnResourceRequest(const net::URLRequest* request); | |
60 | |
61 // Type for subscriptions to SafeBrowsing service state. | |
62 typedef base::CallbackList<void(void)>::Subscription StateSubscription; | |
63 | |
64 // Adds a listener for when SafeBrowsing preferences might have changed. To | |
65 // get the current state, the callback should call | |
66 // SafeBrowsingService::enabled_by_prefs(). Should only be called on the UI | |
67 // thread. | |
68 std::unique_ptr<StateSubscription> RegisterStateCallback( | |
69 const base::Callback<void(void)>& callback); | |
70 | |
71 protected: | |
72 // Creates the safe browsing service. Need to initialize before using. | |
73 BaseSafeBrowsingService(); | |
74 | |
75 virtual ~BaseSafeBrowsingService(); | |
76 | |
77 virtual SafeBrowsingDatabaseManager* CreateDatabaseManager(); | |
78 | |
79 // Whether the service is running. 'enabled_' is used by | |
80 // BaseSafeBrowsingService on the IO thread during normal operations. | |
81 bool enabled_; | |
82 | |
83 // The database manager handles the database and download logic. Accessed on | |
84 // both UI and IO thread. | |
85 scoped_refptr<SafeBrowsingDatabaseManager> database_manager_; | |
86 | |
87 // Callbacks when SafeBrowsing state might have changed. | |
88 // Should only be accessed on the UI thread. | |
89 base::CallbackList<void(void)> state_callback_list_; | |
90 | |
91 private: | |
92 friend struct content::BrowserThread::DeleteOnThread< | |
93 content::BrowserThread::UI>; | |
94 friend class base::DeleteHelper<BaseSafeBrowsingService>; | |
95 | |
96 // Process the observed resource requests on the UI thread. | |
97 void ProcessResourceRequest(const ResourceRequestInfo& request); | |
98 | |
99 DISALLOW_COPY_AND_ASSIGN(BaseSafeBrowsingService); | |
100 }; | |
101 | |
102 } // namespace safe_browsing | |
103 | |
104 #endif // COMPONENTS_SAFE_BROWSING_BASE_SAFE_BROWSING_SERVICE_H_ | |
OLD | NEW |