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 3 // found in the LICENSE file. 4 // 5 // MalwareDOMDetails iterates over a document's frames and gathers 6 // interesting URLs such as those of scripts and frames. When done, it sends 7 // them to the MalwareDetails that requested them. 8 9 #ifndef CHROME_RENDERER_SAFE_BROWSING_MALWARE_DOM_DETAILS_H_ 10 #define CHROME_RENDERER_SAFE_BROWSING_MALWARE_DOM_DETAILS_H_ 11 12 #include <vector> 13 14 #include "base/basictypes.h" 15 #include "base/compiler_specific.h" 16 #include "content/public/renderer/render_view_observer.h" 17 18 struct SafeBrowsingHostMsg_MalwareDOMDetails_Node; 19 20 namespace safe_browsing { 21 22 // There is one MalwareDOMDetails per RenderView. 23 class MalwareDOMDetails : public content::RenderViewObserver { 24 public: 25 // An upper limit on the number of nodes we collect. Not const for the test. 26 static uint32 kMaxNodes; 27 28 static MalwareDOMDetails* Create(content::RenderView* render_view); 29 virtual ~MalwareDOMDetails(); 30 31 // Begins extracting resource urls for the page currently loaded in 32 // this object's RenderView. 33 // Exposed for testing. 34 void ExtractResources( 35 std::vector<SafeBrowsingHostMsg_MalwareDOMDetails_Node>* resources); 36 37 private: 38 // Creates a MalwareDOMDetails for the specified RenderView. 39 // The MalwareDOMDetails should be destroyed prior to destroying 40 // the RenderView. 41 explicit MalwareDOMDetails(content::RenderView* render_view); 42 43 // RenderViewObserver implementation. 44 virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; 45 46 void OnGetMalwareDOMDetails(); 47 48 DISALLOW_COPY_AND_ASSIGN(MalwareDOMDetails); 49 }; 50 51 } // namespace safe_browsing 52 53 #endif // CHROME_RENDERER_SAFE_BROWSING_MALWARE_DOM_DETAILS_H_ 54