OLD | NEW |
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 #include "chrome/renderer/safe_browsing/malware_dom_details.h" | 5 #include "chrome/renderer/safe_browsing/malware_dom_details.h" |
6 | 6 |
7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
8 #include "chrome/common/chrome_constants.h" | 8 #include "chrome/common/chrome_constants.h" |
9 #include "chrome/common/safe_browsing/safebrowsing_messages.h" | 9 #include "chrome/common/safe_browsing/safebrowsing_messages.h" |
10 #include "content/public/renderer/render_view.h" | 10 #include "content/public/renderer/render_view.h" |
11 #include "third_party/WebKit/public/platform/WebString.h" | 11 #include "third_party/WebKit/public/platform/WebString.h" |
12 #include "third_party/WebKit/public/web/WebDocument.h" | 12 #include "third_party/WebKit/public/web/WebDocument.h" |
13 #include "third_party/WebKit/public/web/WebElement.h" | 13 #include "third_party/WebKit/public/web/WebElement.h" |
| 14 #include "third_party/WebKit/public/web/WebElementCollection.h" |
14 #include "third_party/WebKit/public/web/WebFrame.h" | 15 #include "third_party/WebKit/public/web/WebFrame.h" |
15 #include "third_party/WebKit/public/web/WebNodeCollection.h" | |
16 #include "third_party/WebKit/public/web/WebView.h" | 16 #include "third_party/WebKit/public/web/WebView.h" |
17 | 17 |
18 namespace safe_browsing { | 18 namespace safe_browsing { |
19 | 19 |
20 // An upper limit on the number of nodes we collect. | 20 // An upper limit on the number of nodes we collect. |
21 uint32 MalwareDOMDetails::kMaxNodes = 500; | 21 uint32 MalwareDOMDetails::kMaxNodes = 500; |
22 | 22 |
23 // static | 23 // static |
24 MalwareDOMDetails* MalwareDOMDetails::Create(content::RenderView* render_view) { | 24 MalwareDOMDetails* MalwareDOMDetails::Create(content::RenderView* render_view) { |
25 // Private constructor and public static Create() method to facilitate | 25 // Private constructor and public static Create() method to facilitate |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 DCHECK(frame); | 64 DCHECK(frame); |
65 SafeBrowsingHostMsg_MalwareDOMDetails_Node details_node; | 65 SafeBrowsingHostMsg_MalwareDOMDetails_Node details_node; |
66 blink::WebDocument document = frame->document(); | 66 blink::WebDocument document = frame->document(); |
67 details_node.url = GURL(document.url()); | 67 details_node.url = GURL(document.url()); |
68 if (document.isNull()) { | 68 if (document.isNull()) { |
69 // Nothing in this frame, move on to the next one. | 69 // Nothing in this frame, move on to the next one. |
70 resources->push_back(details_node); | 70 resources->push_back(details_node); |
71 continue; | 71 continue; |
72 } | 72 } |
73 | 73 |
74 blink::WebNodeCollection elements = document.all(); | 74 blink::WebElementCollection elements = document.all(); |
75 blink::WebNode cur_node = elements.firstItem(); | 75 blink::WebElement element = elements.firstItem(); |
76 for (; !cur_node.isNull(); cur_node = elements.nextItem()) { | 76 for (; !element.isNull(); element = elements.nextItem()) { |
77 if (!cur_node.isElementNode()) { | |
78 continue; | |
79 } | |
80 blink::WebElement element = cur_node.to<blink::WebElement>(); | |
81 if (element.hasTagName("iframe") || element.hasTagName("frame") || | 77 if (element.hasTagName("iframe") || element.hasTagName("frame") || |
82 element.hasTagName("embed") || element.hasTagName("script")) { | 78 element.hasTagName("embed") || element.hasTagName("script")) { |
83 HandleElement(element, &details_node, resources); | 79 HandleElement(element, &details_node, resources); |
84 if (resources->size() >= kMaxNodes) { | 80 if (resources->size() >= kMaxNodes) { |
85 // We have reached kMaxNodes, exit early. | 81 // We have reached kMaxNodes, exit early. |
86 resources->push_back(details_node); | 82 resources->push_back(details_node); |
87 return; | 83 return; |
88 } | 84 } |
89 } | 85 } |
90 } | 86 } |
(...skipping 21 matching lines...) Expand all Loading... |
112 | 108 |
113 // Create the child node. | 109 // Create the child node. |
114 SafeBrowsingHostMsg_MalwareDOMDetails_Node child_node; | 110 SafeBrowsingHostMsg_MalwareDOMDetails_Node child_node; |
115 child_node.url = child_url; | 111 child_node.url = child_url; |
116 child_node.tag_name = element.tagName().utf8(); | 112 child_node.tag_name = element.tagName().utf8(); |
117 child_node.parent = parent_node->url; | 113 child_node.parent = parent_node->url; |
118 resources->push_back(child_node); | 114 resources->push_back(child_node); |
119 } | 115 } |
120 | 116 |
121 } // namespace safe_browsing | 117 } // namespace safe_browsing |
OLD | NEW |