Chromium Code Reviews| Index: chrome/browser/safe_browsing/client_side_detection_service_unittest.cc |
| diff --git a/chrome/browser/safe_browsing/client_side_detection_service_unittest.cc b/chrome/browser/safe_browsing/client_side_detection_service_unittest.cc |
| index b418d14a6e4de6fc90c6b4f9204e0aba1c50eb19..c54cf39ec55f1aee1dfe25fdbc97b3d9280180ee 100644 |
| --- a/chrome/browser/safe_browsing/client_side_detection_service_unittest.cc |
| +++ b/chrome/browser/safe_browsing/client_side_detection_service_unittest.cc |
| @@ -19,11 +19,15 @@ |
| #include "base/time.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "chrome/browser/browser_thread.h" |
| +#include "chrome/browser/renderer_host/test/test_render_view_host.h" |
| #include "chrome/browser/safe_browsing/client_side_detection_service.h" |
| #include "chrome/browser/safe_browsing/csd.pb.h" |
| +#include "chrome/common/render_messages.h" |
| #include "chrome/common/net/test_url_fetcher_factory.h" |
| #include "chrome/common/net/url_fetcher.h" |
| #include "googleurl/src/gurl.h" |
| +#include "ipc/ipc_channel.h" |
| +#include "ipc/ipc_test_sink.h" |
| #include "net/url_request/url_request_status.h" |
| namespace safe_browsing { |
| @@ -224,4 +228,69 @@ TEST_F(ClientSideDetectionServiceTest, GetNumReportTest) { |
| EXPECT_EQ(2, GetNumReportsPerDay()); |
| } |
| +// We use a separate test fixture for testing the ClientSideDetectionService's |
| +// handling of load notifications from TabContents. This uses |
| +// RenderViewHostTestHarness to set up a fake TabContents and related objects. |
| +class ClientSideDetectionServiceHooksTest : public RenderViewHostTestHarness, |
| + public IPC::Channel::Listener { |
| + public: |
| + // IPC::Channel::Listener |
| + virtual bool OnMessageReceived(const IPC::Message& msg) { |
| + if (msg.type() == ViewMsg_StartPhishingDetection::ID) { |
| + received_msg_ = msg; |
| + MessageLoop::current()->Quit(); |
| + return true; |
| + } |
| + return false; |
| + } |
| + |
| + protected: |
| + virtual void SetUp() { |
| + RenderViewHostTestHarness::SetUp(); |
| + file_thread_.reset(new BrowserThread(BrowserThread::FILE, &message_loop_)); |
| + ui_thread_.reset(new BrowserThread(BrowserThread::UI, &message_loop_)); |
| + |
| + // We're not exercising model fetching here, so just set up a canned |
| + // success response. |
| + factory_.reset(new FakeURLFetcherFactory()); |
| + factory_->SetFakeResponse(ClientSideDetectionService::kClientModelUrl, |
| + "dummy model data", true); |
| + URLFetcher::set_factory(factory_.get()); |
| + |
| + process()->sink().AddFilter(this); |
| + } |
| + |
| + virtual void TearDown() { |
| + process()->sink().RemoveFilter(this); |
| + URLFetcher::set_factory(NULL); |
| + file_thread_.reset(); |
| + ui_thread_.reset(); |
| + RenderViewHostTestHarness::TearDown(); |
| + } |
| + |
| + scoped_ptr<FakeURLFetcherFactory> factory_; |
| + scoped_ptr<BrowserThread> ui_thread_; |
| + scoped_ptr<BrowserThread> file_thread_; |
| + IPC::Message received_msg_; |
| +}; |
| + |
| +TEST_F(ClientSideDetectionServiceHooksTest, ShouldClassifyUrl) { |
| + ScopedTempDir tmp_dir; |
| + ASSERT_TRUE(tmp_dir.CreateUniqueTempDir()); |
| + FilePath model_path = tmp_dir.path().AppendASCII("model"); |
| + |
| + scoped_ptr<ClientSideDetectionService> csd_service( |
| + ClientSideDetectionService::Create(model_path, NULL)); |
|
noelutz
2011/02/10 01:36:07
I created a separate empty constructor for this in
Brian Ryner
2011/02/10 21:15:20
I'm not so sure I'm a fan of the second constructo
|
| + |
| + // Navigate the tab to a page. We should see a StartPhishingDetection IPC. |
| + NavigateAndCommit(GURL("http://host.com/")); |
| + // Wait for the StartPhishingDetection message to arrive. |
| + MessageLoop::current()->Run(); |
| + |
| + Tuple1<GURL> url; |
| + ViewMsg_StartPhishingDetection::Read(&received_msg_, &url); |
| + EXPECT_EQ(GURL("http://host.com/"), url.a); |
| + EXPECT_EQ(rvh()->routing_id(), received_msg_.routing_id()); |
|
noelutz
2011/02/10 01:36:07
Maybe do a reload and check that you don't send an
Brian Ryner
2011/02/10 21:15:20
Since I'm no longer doing anything different on ba
|
| +} |
| + |
| } // namespace safe_browsing |