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