This source file includes following definitions.
- TEST_F
 
#include "base/strings/stringprintf.h"
#include "chrome/common/safe_browsing/safebrowsing_messages.h"
#include "chrome/renderer/safe_browsing/malware_dom_details.h"
#include "chrome/test/base/chrome_render_view_test.h"
#include "net/base/escape.h"
typedef ChromeRenderViewTest MalwareDOMDetailsTest;
TEST_F(MalwareDOMDetailsTest, Everything) {
  scoped_ptr<safe_browsing::MalwareDOMDetails> details(
      safe_browsing::MalwareDOMDetails::Create(view_));
  
  
  details->kMaxNodes = 50;
  const char* urlprefix = "data:text/html;charset=utf-8,";
  { 
    std::string html = "<html><head><script></script></head></html>";
    LoadHTML(html.c_str());
    std::vector<SafeBrowsingHostMsg_MalwareDOMDetails_Node> params;
    details->ExtractResources(¶ms);
    ASSERT_EQ(1u, params.size());
    EXPECT_EQ(GURL(urlprefix + html), params[0].url);
  }
  { 
    
    
    GURL script1_url("data:text/javascript;charset=utf-8,var a=1;");
    GURL script2_url("data:text/javascript;charset=utf-8,var b=2;");
    std::string html = "<html><head><script src=\"" + script1_url.spec() +
        "\"></script><script src=\"" + script2_url.spec() +
        "\"></script></head></html>";
    GURL url(urlprefix + html);
    LoadHTML(html.c_str());
    std::vector<SafeBrowsingHostMsg_MalwareDOMDetails_Node> params;
    details->ExtractResources(¶ms);
    ASSERT_EQ(3u, params.size());
    EXPECT_EQ(script1_url, params[0].url);
    EXPECT_EQ("SCRIPT", params[0].tag_name);
    EXPECT_EQ(script2_url, params[1].url);
    EXPECT_EQ("SCRIPT", params[0].tag_name);
    EXPECT_EQ(url, params[2].url);
  }
  { 
    
    
    
    std::string iframe2_html = "<html><body>iframe2</body></html>";
    GURL iframe2_url(urlprefix + iframe2_html);
    std::string iframe1_html = "<iframe src=\"" + net::EscapeForHTML(
        iframe2_url.spec()) + "\"></iframe>";
    GURL iframe1_url(urlprefix + iframe1_html);
    std::string html = "<html><head><iframe src=\"" + net::EscapeForHTML(
        iframe1_url.spec()) + "\"></iframe></head></html>";
    GURL url(urlprefix + html);
    LoadHTML(html.c_str());
    std::vector<SafeBrowsingHostMsg_MalwareDOMDetails_Node> params;
    details->ExtractResources(¶ms);
    ASSERT_EQ(5u, params.size());
    EXPECT_EQ(iframe1_url, params[0].url);
    EXPECT_EQ(url, params[0].parent);
    EXPECT_EQ(0u, params[0].children.size());
    EXPECT_EQ("IFRAME", params[0].tag_name);
    EXPECT_EQ(url, params[1].url);
    EXPECT_EQ(GURL(), params[1].parent);
    EXPECT_EQ(1u, params[1].children.size());
    EXPECT_EQ(iframe1_url, params[1].children[0]);
    EXPECT_EQ(iframe2_url, params[2].url);
    EXPECT_EQ(iframe1_url, params[2].parent);
    EXPECT_EQ(0u, params[2].children.size());
    EXPECT_EQ("IFRAME", params[2].tag_name);
    
    
    
    EXPECT_EQ(iframe1_url, params[3].url);
    EXPECT_EQ(GURL(), params[3].parent);
    EXPECT_EQ(1u, params[3].children.size());
    EXPECT_EQ(iframe2_url, params[3].children[0]);
    EXPECT_EQ(iframe2_url, params[4].url);
    EXPECT_EQ(GURL(), params[4].parent);
    EXPECT_EQ(0u, params[4].children.size());
  }
  { 
    std::string html;
    for (int i = 0; i < 55; ++i) {
      
      GURL iframe_url(base::StringPrintf("%s%d", urlprefix, i));
      html += "<iframe src=\"" + net::EscapeForHTML(iframe_url.spec()) +
          "\"></iframe>";
    }
    GURL url(urlprefix + html);
    LoadHTML(html.c_str());
    std::vector<SafeBrowsingHostMsg_MalwareDOMDetails_Node> params;
    details->ExtractResources(¶ms);
    ASSERT_EQ(51u, params.size());
  }
  { 
    std::string html;
    for (int i = 0; i < 55; ++i) {
      
      GURL script_url(base::StringPrintf("%s%d", urlprefix, i));
      html += "<script src=\"" + net::EscapeForHTML(script_url.spec()) +
          "\"></script>";
    }
    GURL url(urlprefix + html);
    LoadHTML(html.c_str());
    std::vector<SafeBrowsingHostMsg_MalwareDOMDetails_Node> params;
    details->ExtractResources(¶ms);
    ASSERT_EQ(51u, params.size());
  }
}