| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/phishing_dom_feature_extractor.h" | 5 #include "chrome/renderer/safe_browsing/phishing_dom_feature_extractor.h" |
| 6 | 6 |
| 7 #include <string.h> // for memcpy() | 7 #include <string.h> // for memcpy() |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 62 // but we use a real RenderThread so that we can use the ResourceDispatcher | 62 // but we use a real RenderThread so that we can use the ResourceDispatcher |
| 63 // to fetch network resources. These are then served canned content | 63 // to fetch network resources. These are then served canned content |
| 64 // in OnRequestResource(). | 64 // in OnRequestResource(). |
| 65 sandbox_init_wrapper_.reset(new SandboxInitWrapper); | 65 sandbox_init_wrapper_.reset(new SandboxInitWrapper); |
| 66 command_line_.reset(new CommandLine(CommandLine::ARGUMENTS_ONLY)); | 66 command_line_.reset(new CommandLine(CommandLine::ARGUMENTS_ONLY)); |
| 67 params_.reset(new MainFunctionParams(*command_line_, | 67 params_.reset(new MainFunctionParams(*command_line_, |
| 68 *sandbox_init_wrapper_, NULL)); | 68 *sandbox_init_wrapper_, NULL)); |
| 69 platform_.reset(new RendererMainPlatformDelegate(*params_)); | 69 platform_.reset(new RendererMainPlatformDelegate(*params_)); |
| 70 platform_->PlatformInitialize(); | 70 platform_->PlatformInitialize(); |
| 71 | 71 |
| 72 // We use a new IPC channel name for each test that runs. | 72 std::string thread_name = GetNextThreadName(); |
| 73 // This is necessary because the renderer-side IPC channel is not | |
| 74 // shut down when the RenderThread goes away, so attempting to reuse | |
| 75 // the channel name gives an error (see ChildThread::~ChildThread()). | |
| 76 std::string thread_name = StringPrintf( | |
| 77 "phishing_dom_feature_Extractor_unittest.%d", | |
| 78 next_thread_id_++); | |
| 79 channel_.reset(new IPC::Channel(thread_name, | 73 channel_.reset(new IPC::Channel(thread_name, |
| 80 IPC::Channel::MODE_SERVER, this)); | 74 IPC::Channel::MODE_SERVER, this)); |
| 81 ASSERT_TRUE(channel_->Connect()); | 75 ASSERT_TRUE(channel_->Connect()); |
| 82 | 76 |
| 83 webkit_glue::SetJavaScriptFlags("--expose-gc"); | 77 webkit_glue::SetJavaScriptFlags("--expose-gc"); |
| 84 mock_process_.reset(new MockRenderProcess); | 78 mock_process_.reset(new MockRenderProcess); |
| 85 render_thread_ = new RenderThread(thread_name); | 79 render_thread_ = new RenderThread(thread_name); |
| 86 mock_process_->set_main_thread(render_thread_); | 80 mock_process_->set_main_thread(render_thread_); |
| 87 | 81 |
| 88 // Tell the renderer to create a view, then wait until it's ready. | 82 // Tell the renderer to create a view, then wait until it's ready. |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 | 193 |
| 200 // Notification that the render view we've created is ready to use. | 194 // Notification that the render view we've created is ready to use. |
| 201 void OnRenderViewReady() { | 195 void OnRenderViewReady() { |
| 202 // Grab a pointer to the new view using RenderViewVisitor. | 196 // Grab a pointer to the new view using RenderViewVisitor. |
| 203 ASSERT_TRUE(!view_); | 197 ASSERT_TRUE(!view_); |
| 204 RenderView::ForEach(this); | 198 RenderView::ForEach(this); |
| 205 ASSERT_TRUE(view_); | 199 ASSERT_TRUE(view_); |
| 206 msg_loop_.Quit(); | 200 msg_loop_.Quit(); |
| 207 } | 201 } |
| 208 | 202 |
| 203 // We use a new IPC channel name for each test that runs. |
| 204 // This is necessary because the renderer-side IPC channel is not |
| 205 // shut down when the RenderThread goes away, so attempting to reuse |
| 206 // the channel name gives an error (see ChildThread::~ChildThread()). |
| 207 static std::string GetNextThreadName() { |
| 208 return StringPrintf( |
| 209 "phishing_dom_feature_Extractor_unittest.%d", |
| 210 next_thread_id_++); |
| 211 } |
| 212 |
| 209 static int next_thread_id_; // incrementing counter for thread ids | 213 static int next_thread_id_; // incrementing counter for thread ids |
| 210 static const int32 kViewId = 5; // arbitrary id for our testing view | 214 static const int32 kViewId = 5; // arbitrary id for our testing view |
| 211 | 215 |
| 212 MessageLoopForIO msg_loop_; | 216 MessageLoopForIO msg_loop_; |
| 213 // channel that the renderer uses to talk to the browser. | 217 // channel that the renderer uses to talk to the browser. |
| 214 // For this test, we will handle the browser end of the channel. | 218 // For this test, we will handle the browser end of the channel. |
| 215 scoped_ptr<IPC::Channel> channel_; | 219 scoped_ptr<IPC::Channel> channel_; |
| 216 RenderThread* render_thread_; // owned by mock_process_ | 220 RenderThread* render_thread_; // owned by mock_process_ |
| 217 scoped_ptr<MockRenderProcess> mock_process_; | 221 scoped_ptr<MockRenderProcess> mock_process_; |
| 218 RenderView* view_; // not owned, deletes itself on close | 222 RenderView* view_; // not owned, deletes itself on close |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 FeatureMap features; | 405 FeatureMap features; |
| 402 LoadURL("http://host.com/"); | 406 LoadURL("http://host.com/"); |
| 403 ASSERT_TRUE(ExtractFeatures(&features)); | 407 ASSERT_TRUE(ExtractFeatures(&features)); |
| 404 EXPECT_THAT(features.features(), ContainerEq(expected_features.features())); | 408 EXPECT_THAT(features.features(), ContainerEq(expected_features.features())); |
| 405 } | 409 } |
| 406 | 410 |
| 407 // TODO(bryner): Test extraction with multiple passes, including the case where | 411 // TODO(bryner): Test extraction with multiple passes, including the case where |
| 408 // the node we stopped on is removed from the document. | 412 // the node we stopped on is removed from the document. |
| 409 | 413 |
| 410 } // namespace safe_browsing | 414 } // namespace safe_browsing |
| OLD | NEW |