1 // Copyright (c) 2012 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. 4 5 #include "chrome/test/base/chrome_render_view_test.h" 6 7 #include "base/debug/leak_annotations.h" 8 #include "chrome/browser/chrome_content_browser_client.h" 9 #include "chrome/common/chrome_content_client.h" 10 #include "chrome/common/render_messages.h" 11 #include "chrome/renderer/chrome_content_renderer_client.h" 12 #include "chrome/renderer/spellchecker/spellcheck.h" 13 #include "chrome/test/base/chrome_unit_test_suite.h" 14 #include "components/autofill/content/renderer/autofill_agent.h" 15 #include "components/autofill/content/renderer/password_autofill_agent.h" 16 #include "components/autofill/content/renderer/test_password_autofill_agent.h" 17 #include "components/autofill/content/renderer/test_password_generation_agent.h" 18 #include "content/public/browser/native_web_keyboard_event.h" 19 #include "content/public/common/renderer_preferences.h" 20 #include "content/public/renderer/render_view.h" 21 #include "third_party/WebKit/public/platform/WebURLRequest.h" 22 #include "third_party/WebKit/public/web/WebFrame.h" 23 #include "third_party/WebKit/public/web/WebInputEvent.h" 24 #include "third_party/WebKit/public/web/WebKit.h" 25 #include "third_party/WebKit/public/web/WebScriptController.h" 26 #include "third_party/WebKit/public/web/WebScriptSource.h" 27 #include "third_party/WebKit/public/web/WebView.h" 28 29 #if defined(ENABLE_EXTENSIONS) 30 #include "chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.h" 31 #include "extensions/browser/extension_function_dispatcher.h" 32 #include "extensions/common/extension.h" 33 #include "extensions/renderer/dispatcher.h" 34 #include "extensions/renderer/event_bindings.h" 35 #endif 36 37 using autofill::AutofillAgent; 38 using autofill::PasswordAutofillAgent; 39 using autofill::PasswordGenerationAgent; 40 using blink::WebFrame; 41 using blink::WebInputEvent; 42 using blink::WebMouseEvent; 43 using blink::WebScriptController; 44 using blink::WebScriptSource; 45 using blink::WebString; 46 using blink::WebURLRequest; 47 48 ChromeRenderViewTest::ChromeRenderViewTest() 49 : password_autofill_agent_(NULL), 50 password_generation_(NULL), 51 autofill_agent_(NULL), 52 chrome_render_thread_(NULL) { 53 } 54 55 ChromeRenderViewTest::~ChromeRenderViewTest() { 56 } 57 58 void ChromeRenderViewTest::SetUp() { 59 ChromeUnitTestSuite::InitializeProviders(); 60 ChromeUnitTestSuite::InitializeResourceBundle(); 61 62 chrome_render_thread_ = new ChromeMockRenderThread(); 63 render_thread_.reset(chrome_render_thread_); 64 65 content::RenderViewTest::SetUp(); 66 67 // RenderView doesn't expose its Agent objects, because it has no need to 68 // store them directly (they're stored as RenderViewObserver*). So just 69 // create another set. 70 password_autofill_agent_ = new autofill::TestPasswordAutofillAgent(view_); 71 password_generation_ = new autofill::TestPasswordGenerationAgent(view_); 72 autofill_agent_ = 73 new AutofillAgent(view_, password_autofill_agent_, password_generation_); 74 } 75 76 void ChromeRenderViewTest::TearDown() { 77 #if defined(ENABLE_EXTENSIONS) 78 ChromeContentRendererClient* client = 79 static_cast<ChromeContentRendererClient*>(content_renderer_client_.get()); 80 client->GetExtensionDispatcherForTest()->OnRenderProcessShutdown(); 81 #endif 82 83 #if defined(LEAK_SANITIZER) 84 // Do this before shutting down V8 in RenderViewTest::TearDown(). 85 // http://crbug.com/328552 86 __lsan_do_leak_check(); 87 #endif 88 content::RenderViewTest::TearDown(); 89 } 90 91 content::ContentClient* ChromeRenderViewTest::CreateContentClient() { 92 return new ChromeContentClient(); 93 } 94 95 content::ContentBrowserClient* 96 ChromeRenderViewTest::CreateContentBrowserClient() { 97 return new chrome::ChromeContentBrowserClient(); 98 } 99 100 content::ContentRendererClient* 101 ChromeRenderViewTest::CreateContentRendererClient() { 102 ChromeContentRendererClient* client = new ChromeContentRendererClient(); 103 #if defined(ENABLE_EXTENSIONS) 104 extension_dispatcher_delegate_.reset( 105 new ChromeExtensionsDispatcherDelegate()); 106 client->SetExtensionDispatcherForTest( 107 new extensions::Dispatcher(extension_dispatcher_delegate_.get())); 108 #endif 109 #if defined(ENABLE_SPELLCHECK) 110 client->SetSpellcheck(new SpellCheck()); 111 #endif 112 return client; 113 } 114