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

Side by Side Diff: chrome/renderer/safe_browsing/threat_dom_details.h

Issue 2713233002: Update ThreatDOMDetails to be able to collect non-resource HTML Elements based on their attributes. (Closed)
Patch Set: Sync Created 3 years, 9 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 // ThreatDOMDetails iterates over a document's frames and gathers 5 // ThreatDOMDetails iterates over a document's frames and gathers
6 // interesting URLs such as those of scripts and frames. When done, it sends 6 // interesting URLs such as those of scripts and frames. When done, it sends
7 // them to the ThreatDetails that requested them. 7 // them to the ThreatDetails that requested them.
8 8
9 #ifndef CHROME_RENDERER_SAFE_BROWSING_THREAT_DOM_DETAILS_H_ 9 #ifndef CHROME_RENDERER_SAFE_BROWSING_THREAT_DOM_DETAILS_H_
10 #define CHROME_RENDERER_SAFE_BROWSING_THREAT_DOM_DETAILS_H_ 10 #define CHROME_RENDERER_SAFE_BROWSING_THREAT_DOM_DETAILS_H_
11 11
12 #include <vector> 12 #include <vector>
13 13
14 #include "base/compiler_specific.h" 14 #include "base/compiler_specific.h"
15 #include "base/feature_list.h"
15 #include "content/public/renderer/render_frame_observer.h" 16 #include "content/public/renderer/render_frame_observer.h"
16 17
17 struct SafeBrowsingHostMsg_ThreatDOMDetails_Node; 18 struct SafeBrowsingHostMsg_ThreatDOMDetails_Node;
18 19
19 namespace safe_browsing { 20 namespace safe_browsing {
20 21
22 extern const base::Feature kThreatDomDetailsTagAndAttributeFeature;
23 extern const char kTagAndAttributeParamName[];
24
25 // Represents the tag name of an HTML Element and its associated attributes.
26 // Used to determine which elements to collect. Populated from the param value
27 // of |kThreatDomDetailsTagAndAttributeFeature|.
28 class TagAndAttributesItem {
29 public:
30 TagAndAttributesItem();
31 TagAndAttributesItem(const TagAndAttributesItem& item);
32 ~TagAndAttributesItem();
33
34 std::string tag_name;
35 std::vector<std::string> attributes;
36 };
37
21 // There is one ThreatDOMDetails per RenderFrame. 38 // There is one ThreatDOMDetails per RenderFrame.
22 class ThreatDOMDetails : public content::RenderFrameObserver { 39 class ThreatDOMDetails : public content::RenderFrameObserver {
23 public: 40 public:
24 // An upper limit on the number of nodes we collect. Not const for the test. 41 // An upper limit on the number of nodes we collect. Not const for the test.
25 static uint32_t kMaxNodes; 42 static uint32_t kMaxNodes;
26 43
27 static ThreatDOMDetails* Create(content::RenderFrame* render_frame); 44 static ThreatDOMDetails* Create(content::RenderFrame* render_frame);
28 ~ThreatDOMDetails() override; 45 ~ThreatDOMDetails() override;
29 46
30 // Begins extracting resource urls for the page currently loaded in 47 // Begins extracting resource urls for the page currently loaded in
31 // this object's RenderFrame. 48 // this object's RenderFrame.
32 // Exposed for testing. 49 // Exposed for testing.
33 void ExtractResources( 50 void ExtractResources(
34 std::vector<SafeBrowsingHostMsg_ThreatDOMDetails_Node>* resources); 51 std::vector<SafeBrowsingHostMsg_ThreatDOMDetails_Node>* resources);
35 52
36 private: 53 private:
37 // Creates a ThreatDOMDetails for the specified RenderFrame. 54 // Creates a ThreatDOMDetails for the specified RenderFrame.
38 // The ThreatDOMDetails should be destroyed prior to destroying 55 // The ThreatDOMDetails should be destroyed prior to destroying
39 // the RenderFrame. 56 // the RenderFrame.
40 explicit ThreatDOMDetails(content::RenderFrame* render_frame); 57 explicit ThreatDOMDetails(content::RenderFrame* render_frame);
41 58
42 // RenderFrameObserver implementation. 59 // RenderFrameObserver implementation.
43 bool OnMessageReceived(const IPC::Message& message) override; 60 bool OnMessageReceived(const IPC::Message& message) override;
44 void OnDestruct() override; 61 void OnDestruct() override;
45 62
46 void OnGetThreatDOMDetails(); 63 void OnGetThreatDOMDetails();
47 64
65 // A list of tag names and associates attributes, used to determine which
66 // elements need to be collected.
67 std::vector<TagAndAttributesItem> tag_and_attributes_list_;
68
48 DISALLOW_COPY_AND_ASSIGN(ThreatDOMDetails); 69 DISALLOW_COPY_AND_ASSIGN(ThreatDOMDetails);
49 }; 70 };
50 71
51 } // namespace safe_browsing 72 } // namespace safe_browsing
52 73
53 #endif // CHROME_RENDERER_SAFE_BROWSING_THREAT_DOM_DETAILS_H_ 74 #endif // CHROME_RENDERER_SAFE_BROWSING_THREAT_DOM_DETAILS_H_
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/threat_details_unittest.cc ('k') | chrome/renderer/safe_browsing/threat_dom_details.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698