Index: chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc |
=================================================================== |
--- chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc (revision 68800) |
+++ chrome/browser/safe_browsing/safe_browsing_blocking_page_test.cc (working copy) |
@@ -9,13 +9,17 @@ |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/browser_thread.h" |
+#include "chrome/browser/prefs/pref_service.h" |
+#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/renderer_host/render_process_host.h" |
#include "chrome/browser/renderer_host/resource_dispatcher_host.h" |
+#include "chrome/browser/safe_browsing/malware_details.h" |
#include "chrome/browser/safe_browsing/safe_browsing_service.h" |
#include "chrome/browser/safe_browsing/safe_browsing_blocking_page.h" |
#include "chrome/browser/tab_contents/tab_contents.h" |
#include "chrome/browser/tab_contents/tab_contents_view.h" |
#include "chrome/browser/ui/browser.h" |
+#include "chrome/common/pref_names.h" |
#include "chrome/common/url_constants.h" |
#include "chrome/test/in_process_browser_test.h" |
#include "chrome/test/ui_test_utils.h" |
@@ -52,6 +56,26 @@ |
badurls[url.spec()] = checkresult; |
} |
+ virtual void ReportMalwareDetails(scoped_refptr<MalwareDetails> details) { |
+ details_.push_back(details); |
+ // Notify the UI thread, that we got a report. |
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
+ NewRunnableMethod(this, |
+ &FakeSafeBrowsingService::OnMalwareDetailsDone)); |
+ } |
+ |
+ void OnMalwareDetailsDone() { |
+ EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ MessageLoopForUI::current()->Quit(); |
+ } |
+ |
+ std::list<scoped_refptr<MalwareDetails> >* GetDetails() { |
+ return &details_; |
+ } |
+ |
+ std::list<scoped_refptr<MalwareDetails> > details_; |
+ |
+ |
private: |
base::hash_map<std::string, UrlCheckResult> badurls; |
}; |
@@ -102,7 +126,7 @@ |
g_browser_process->resource_dispatcher_host()-> |
safe_browsing_service()); |
- ASSERT_TRUE(service != NULL); |
+ ASSERT_TRUE(service); |
service->AddURLResult(url, checkresult); |
} |
@@ -141,6 +165,17 @@ |
ui_test_utils::WaitForNavigation(controller); |
} |
+ void AssertReportSent() { |
+ // When a report is scheduled in the IO thread we should get notified. |
+ ui_test_utils::RunMessageLoop(); |
+ |
+ FakeSafeBrowsingService* service = |
+ static_cast<FakeSafeBrowsingService*>( |
+ g_browser_process->resource_dispatcher_host()-> |
+ safe_browsing_service()); |
+ ASSERT_EQ(1u, service->GetDetails()->size()); |
+ } |
+ |
private: |
TestSafeBrowsingServiceFactory factory; |
@@ -258,4 +293,25 @@ |
EXPECT_EQ(url, browser()->GetSelectedTabContents()->GetURL()); |
} |
+IN_PROC_BROWSER_TEST_F(SafeBrowsingBlockingPageTest, |
+ MalwareIframeReportDetails) { |
+ // Enable reporting of malware details. |
+ browser()->GetProfile()->GetPrefs()->SetBoolean( |
+ prefs::kSafeBrowsingReportingEnabled, true); |
+ EXPECT_TRUE(browser()->GetProfile()->GetPrefs()->GetBoolean( |
+ prefs::kSafeBrowsingReportingEnabled)); |
+ |
+ GURL url = test_server()->GetURL(kMalwarePage); |
+ GURL iframe_url = test_server()->GetURL(kMalwareIframe); |
+ AddURLResult(iframe_url, SafeBrowsingService::URL_MALWARE); |
+ |
+ ui_test_utils::NavigateToURL(browser(), url); |
+ |
+ SendCommand("\"proceed\""); // Simulate the user clicking "back" |
+ AssertNoInterstitial(); // Assert the interstitial is gone |
+ |
+ EXPECT_EQ(url, browser()->GetSelectedTabContents()->GetURL()); |
+ AssertReportSent(); |
+} |
+ |
} // namespace |