1 // Copyright 2015 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.
5 #ifndef CHROME_BROWSER_SAFE_BROWSING_UI_MANAGER_UNITTEST_CC_
6 #define CHROME_BROWSER_SAFE_BROWSING_UI_MANAGER_UNITTEST_CC_
8 #include "base/memory/scoped_ptr.h"
9 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
10 #include "chrome/browser/safe_browsing/safe_browsing_util.h"
11 #include "chrome/browser/safe_browsing/ui_manager.h"
12 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
13 #include "chrome/test/base/testing_profile.h"
14 #include "content/public/browser/render_process_host.h"
15 #include "content/public/browser/render_view_host.h"
16 #include "content/public/browser/web_contents.h"
17 #include "content/public/test/test_browser_thread_bundle.h"
18 #include "content/public/test/web_contents_tester.h"
19 #include "testing/gtest/include/gtest/gtest.h"
22 static const char* kGoodURL
= "https://www.good.com";
23 static const char* kBadURL
= "https://www.malware.com";
24 static const char* kBadURLWithPath
= "https://www.malware.com/index.html";
26 class SafeBrowsingUIManagerTest
: public ChromeRenderViewHostTestHarness
{
28 SafeBrowsingUIManagerTest() : ui_manager_(new SafeBrowsingUIManager(NULL
)) {}
30 ~SafeBrowsingUIManagerTest() override
{};
32 void SetUp() override
{ ChromeRenderViewHostTestHarness::SetUp(); }
34 void TearDown() override
{ ChromeRenderViewHostTestHarness::TearDown(); }
36 bool IsWhitelisted(SafeBrowsingUIManager::UnsafeResource resource
) {
37 return ui_manager_
->IsWhitelisted(resource
);
40 void AddToWhitelist(SafeBrowsingUIManager::UnsafeResource resource
) {
41 ui_manager_
->AddToWhitelist(resource
);
44 SafeBrowsingUIManager::UnsafeResource
MakeUnsafeResource(const char* url
) {
45 SafeBrowsingUIManager::UnsafeResource resource
;
46 resource
.url
= GURL(url
);
47 resource
.render_process_host_id
=
48 web_contents()->GetRenderProcessHost()->GetID();
49 resource
.render_view_id
=
50 web_contents()->GetRenderViewHost()->GetRoutingID();
51 resource
.threat_type
= SB_THREAT_TYPE_URL_MALWARE
;
55 SafeBrowsingUIManager::UnsafeResource
MakeUnsafeResourceAndNavigate(
57 SafeBrowsingUIManager::UnsafeResource resource
= MakeUnsafeResource(url
);
59 // The WC doesn't have a URL without a navigation. Normally the
60 // interstitial would provide this instead of a fully committed navigation.
61 EXPECT_FALSE(IsWhitelisted(resource
));
62 NavigateAndCommit(GURL(url
));
67 scoped_refptr
<SafeBrowsingUIManager
> ui_manager_
;
70 TEST_F(SafeBrowsingUIManagerTest
, Whitelist
) {
71 SafeBrowsingUIManager::UnsafeResource resource
=
72 MakeUnsafeResourceAndNavigate(kBadURL
);
73 AddToWhitelist(resource
);
74 EXPECT_TRUE(IsWhitelisted(resource
));
77 TEST_F(SafeBrowsingUIManagerTest
, WhitelistIgnoresSitesNotAdded
) {
78 SafeBrowsingUIManager::UnsafeResource resource
=
79 MakeUnsafeResourceAndNavigate(kGoodURL
);
80 EXPECT_FALSE(IsWhitelisted(resource
));
83 TEST_F(SafeBrowsingUIManagerTest
, WhitelistIgnoresPath
) {
84 SafeBrowsingUIManager::UnsafeResource resource
=
85 MakeUnsafeResourceAndNavigate(kBadURL
);
86 AddToWhitelist(resource
);
87 EXPECT_TRUE(IsWhitelisted(resource
));
89 SafeBrowsingUIManager::UnsafeResource resource_path
=
90 MakeUnsafeResource(kBadURLWithPath
);
91 EXPECT_TRUE(IsWhitelisted(resource_path
));
94 TEST_F(SafeBrowsingUIManagerTest
, WhitelistIgnoresThreatType
) {
95 SafeBrowsingUIManager::UnsafeResource resource
=
96 MakeUnsafeResourceAndNavigate(kBadURL
);
97 AddToWhitelist(resource
);
98 EXPECT_TRUE(IsWhitelisted(resource
));
100 SafeBrowsingUIManager::UnsafeResource resource_phishing
=
101 MakeUnsafeResource(kBadURL
);
102 resource_phishing
.threat_type
= SB_THREAT_TYPE_URL_PHISHING
;
103 EXPECT_TRUE(IsWhitelisted(resource_phishing
));
106 #endif // CHROME_BROWSER_SAFE_BROWSING_UI_MANAGER_UNITTEST_CC_