Chromium Code Reviews| Index: chrome/browser/safe_browsing/malware_details.h |
| =================================================================== |
| --- chrome/browser/safe_browsing/malware_details.h (revision 79632) |
| +++ chrome/browser/safe_browsing/malware_details.h (working copy) |
| @@ -10,8 +10,7 @@ |
| // users opt-in to do so from the malware warning page. |
| // An instance of this class is generated when a malware warning page |
| -// is shown (SafeBrowsingBlockingPage). It is passed on to the |
| -// SafeBrowsing service when the warning goes away. |
| +// is shown (SafeBrowsingBlockingPage). |
| #include <string> |
| #include <vector> |
| @@ -22,17 +21,27 @@ |
| #include "chrome/browser/safe_browsing/report.pb.h" |
| #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
| #include "content/browser/tab_contents/tab_contents_observer.h" |
| +#include "net/base/completion_callback.h" |
| class TabContents; |
| struct SafeBrowsingHostMsg_MalwareDOMDetails_Node; |
| +class MalwareDetailsCacheCollector; |
| class MalwareDetailsFactory; |
| +namespace safe_browsing { |
| +// Maps a URL to its Resource. |
| +typedef base::hash_map< |
| + std::string, |
| + linked_ptr<safe_browsing::ClientMalwareReportRequest::Resource> > ResourceMap; |
| +} |
| + |
| class MalwareDetails : public base::RefCountedThreadSafe<MalwareDetails>, |
| public TabContentsObserver { |
| public: |
| // Constructs a new MalwareDetails instance, using the factory. |
| static MalwareDetails* NewMalwareDetails( |
| + SafeBrowsingService* sb_service, |
| TabContents* tab_contents, |
| const SafeBrowsingService::UnsafeResource& resource); |
| @@ -42,34 +51,39 @@ |
| factory_ = factory; |
| } |
| - // The SafeBrowsingService calls this from the IO thread, to get the |
| - // serialized report as a string and send it over. |
| - const std::string* GetSerializedReport(); |
| + // The SafeBrowsingBlockingPage calls this from the IO thread when |
| + // the user is leaving the blocking page and has opted-in to sending |
| + // the report. We start the cache collection, and when we are done, |
| + // we send the report. |
| + void FinishCollection(); |
| + void OnCacheCollectionReady(); |
| + |
| // TabContentsObserver implementation. |
| virtual bool OnMessageReceived(const IPC::Message& message); |
| protected: |
| friend class MalwareDetailsFactoryImpl; |
| - MalwareDetails(TabContents* tab_contents, |
| + MalwareDetails(SafeBrowsingService* sb_service, |
| + TabContents* tab_contents, |
| const SafeBrowsingService::UnsafeResource& resource); |
| + virtual ~MalwareDetails(); |
| + |
| // Called on the IO thread with the DOM details. |
| virtual void AddDOMDetails( |
| const std::vector<SafeBrowsingHostMsg_MalwareDOMDetails_Node>& params); |
| - virtual ~MalwareDetails(); |
| + // The report protocol buffer. |
| + scoped_ptr<safe_browsing::ClientMalwareReportRequest> report_; |
| + // Used to get a pointer to the HTTP cache. |
| + URLRequestContextGetter* request_context_getter_; |
| + |
| private: |
| friend class base::RefCountedThreadSafe<MalwareDetails>; |
| - // Maps a URL to its Resource. |
| - typedef base::hash_map< |
| - std::string, |
| - linked_ptr<safe_browsing::ClientMalwareReportRequest::Resource> > |
| - ResourceMap; |
| - |
| // Starts the collection of the report. |
| void StartCollection(); |
| @@ -93,21 +107,28 @@ |
| void OnReceivedMalwareDOMDetails( |
| const std::vector<SafeBrowsingHostMsg_MalwareDOMDetails_Node>& params); |
| + SafeBrowsingService* sb_service_; |
|
noelutz
2011/04/06 20:34:19
I think you need a scoped ref pointer here just to
panayiotis
2011/04/07 20:08:32
Done.
|
| + |
| const SafeBrowsingService::UnsafeResource resource_; |
| // For every Url we collect we create a Resource message. We keep |
| // them in a map so we can avoid duplicates. |
| - ResourceMap resources_; |
| + safe_browsing::ResourceMap resources_; |
| - // The report protocol buffer. |
| - scoped_ptr<safe_browsing::ClientMalwareReportRequest> report_; |
| + // Result from the cache extractor. |
| + int cache_result_; |
| // The factory used to instanciate SafeBrowsingBlockingPage objects. |
| // Usefull for tests, so they can provide their own implementation of |
| // SafeBrowsingBlockingPage. |
| static MalwareDetailsFactory* factory_; |
| + // Used to collect details from the HTTP Cache. |
| + scoped_refptr<MalwareDetailsCacheCollector> cache_collector_; |
| + |
| FRIEND_TEST_ALL_PREFIXES(MalwareDetailsTest, MalwareDOMDetails); |
| + FRIEND_TEST_ALL_PREFIXES(MalwareDetailsTest, HTTPCache); |
| + FRIEND_TEST_ALL_PREFIXES(MalwareDetailsTest, HTTPCacheNoEntries); |
| DISALLOW_COPY_AND_ASSIGN(MalwareDetails); |
| }; |
| @@ -118,6 +139,7 @@ |
| virtual ~MalwareDetailsFactory() { } |
| virtual MalwareDetails* CreateMalwareDetails( |
| + SafeBrowsingService* sb_service, |
| TabContents* tab_contents, |
| const SafeBrowsingService::UnsafeResource& unsafe_resource) = 0; |
| }; |