Home | History | Annotate | Download | only in safe_browsing
      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