15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/chrome_render_view_test.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "base/debug/leak_annotations.h" 823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/chrome_content_browser_client.h" 923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/common/chrome_content_client.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/render_messages.h" 1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/renderer/chrome_content_renderer_client.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/renderer/spellchecker/spellcheck.h" 1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/test/base/chrome_unit_test_suite.h" 143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "components/autofill/content/renderer/autofill_agent.h" 15868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "components/autofill/content/renderer/password_autofill_agent.h" 163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "components/autofill/content/renderer/test_password_autofill_agent.h" 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/autofill/content/renderer/test_password_generation_agent.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/native_web_keyboard_event.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/renderer_preferences.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/renderer/render_view.h" 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "third_party/WebKit/public/platform/WebURLRequest.h" 227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebFrame.h" 237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebInputEvent.h" 247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebKit.h" 257d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebScriptController.h" 267d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebScriptSource.h" 277d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebView.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(ENABLE_EXTENSIONS) 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/renderer/extensions/chrome_extensions_dispatcher_delegate.h" 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/browser/extension_function_dispatcher.h" 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/common/extension.h" 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/renderer/dispatcher.h" 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/renderer/event_bindings.h" 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciusing autofill::AutofillAgent; 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciusing autofill::PasswordAutofillAgent; 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciusing autofill::PasswordGenerationAgent; 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebFrame; 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebInputEvent; 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebMouseEvent; 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebScriptController; 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebScriptSource; 45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebString; 46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebURLRequest; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuChromeRenderViewTest::ChromeRenderViewTest() 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci : password_autofill_agent_(NULL), 505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu password_generation_(NULL), 515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu autofill_agent_(NULL), 525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu chrome_render_thread_(NULL) { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ChromeRenderViewTest::~ChromeRenderViewTest() { 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ChromeRenderViewTest::SetUp() { 5923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ChromeUnitTestSuite::InitializeProviders(); 6023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ChromeUnitTestSuite::InitializeResourceBundle(); 6123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 627d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) chrome_render_thread_ = new ChromeMockRenderThread(); 637d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) render_thread_.reset(chrome_render_thread_); 647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::RenderViewTest::SetUp(); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // RenderView doesn't expose its Agent objects, because it has no need to 685d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // store them directly (they're stored as RenderViewObserver*). So just 695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // create another set. 701320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci password_autofill_agent_ = new autofill::TestPasswordAutofillAgent(view_); 715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) password_generation_ = new autofill::TestPasswordGenerationAgent(view_); 725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) autofill_agent_ = 731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci new AutofillAgent(view_, password_autofill_agent_, password_generation_); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void ChromeRenderViewTest::TearDown() { 771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(ENABLE_EXTENSIONS) 785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ChromeContentRendererClient* client = 795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu static_cast<ChromeContentRendererClient*>(content_renderer_client_.get()); 805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu client->GetExtensionDispatcherForTest()->OnRenderProcessShutdown(); 811320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 827dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 83a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#if defined(LEAK_SANITIZER) 84a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // Do this before shutting down V8 in RenderViewTest::TearDown(). 85a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // http://crbug.com/328552 86a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) __lsan_do_leak_check(); 87a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#endif 887dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch content::RenderViewTest::TearDown(); 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 9023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 9123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)content::ContentClient* ChromeRenderViewTest::CreateContentClient() { 9223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) return new ChromeContentClient(); 9323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 9423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 9523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)content::ContentBrowserClient* 9623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ChromeRenderViewTest::CreateContentBrowserClient() { 9723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) return new chrome::ChromeContentBrowserClient(); 9823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 9923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 10023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)content::ContentRendererClient* 10123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ChromeRenderViewTest::CreateContentRendererClient() { 1021320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci ChromeContentRendererClient* client = new ChromeContentRendererClient(); 1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(ENABLE_EXTENSIONS) 104010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) extension_dispatcher_delegate_.reset( 105010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) new ChromeExtensionsDispatcherDelegate()); 106010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) client->SetExtensionDispatcherForTest( 107010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) new extensions::Dispatcher(extension_dispatcher_delegate_.get())); 1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif 10923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#if defined(ENABLE_SPELLCHECK) 11023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) client->SetSpellcheck(new SpellCheck()); 11123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#endif 11223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) return client; 11323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 114