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/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