Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(117)

Side by Side Diff: chrome/test/render_view_test.cc

Issue 240001: Force garbage collection after running any unit tests that initialize WebViews. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/renderer/extensions/json_schema_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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/test/render_view_test.h" 5 #include "chrome/test/render_view_test.h"
6 6
7 #include "chrome/browser/extensions/extension_function_dispatcher.h" 7 #include "chrome/browser/extensions/extension_function_dispatcher.h"
8 #include "chrome/common/extensions/extension.h" 8 #include "chrome/common/extensions/extension.h"
9 #include "chrome/common/native_web_keyboard_event.h" 9 #include "chrome/common/native_web_keyboard_event.h"
10 #include "chrome/common/render_messages.h" 10 #include "chrome/common/render_messages.h"
11 #include "chrome/common/renderer_preferences.h" 11 #include "chrome/common/renderer_preferences.h"
12 #include "chrome/renderer/extensions/event_bindings.h" 12 #include "chrome/renderer/extensions/event_bindings.h"
13 #include "chrome/renderer/extensions/extension_process_bindings.h" 13 #include "chrome/renderer/extensions/extension_process_bindings.h"
14 #include "chrome/renderer/extensions/js_only_v8_extensions.h" 14 #include "chrome/renderer/extensions/js_only_v8_extensions.h"
15 #include "chrome/renderer/extensions/renderer_extension_bindings.h" 15 #include "chrome/renderer/extensions/renderer_extension_bindings.h"
16 #include "chrome/renderer/renderer_main_platform_delegate.h" 16 #include "chrome/renderer/renderer_main_platform_delegate.h"
17 #include "webkit/api/public/WebFrame.h" 17 #include "webkit/api/public/WebFrame.h"
18 #include "webkit/api/public/WebInputEvent.h" 18 #include "webkit/api/public/WebInputEvent.h"
19 #include "webkit/api/public/WebKit.h" 19 #include "webkit/api/public/WebKit.h"
20 #include "webkit/api/public/WebScriptSource.h" 20 #include "webkit/api/public/WebScriptSource.h"
21 #include "webkit/api/public/WebURLRequest.h" 21 #include "webkit/api/public/WebURLRequest.h"
22 #include "webkit/glue/webview.h" 22 #include "webkit/glue/webview.h"
23 #include "webkit/glue/webkit_glue.h"
23 24
24 using WebKit::WebFrame; 25 using WebKit::WebFrame;
25 using WebKit::WebScriptSource; 26 using WebKit::WebScriptSource;
26 using WebKit::WebString; 27 using WebKit::WebString;
27 using WebKit::WebURLRequest; 28 using WebKit::WebURLRequest;
28 29
29 namespace { 30 namespace {
30 const int32 kRouteId = 5; 31 const int32 kRouteId = 5;
31 const int32 kOpenerId = 7; 32 const int32 kOpenerId = 7;
32 } // namespace 33 } // namespace
(...skipping 28 matching lines...) Expand all
61 #if defined(OS_WIN) 62 #if defined(OS_WIN)
62 command_line_.reset(new CommandLine(std::wstring())); 63 command_line_.reset(new CommandLine(std::wstring()));
63 #elif defined(OS_POSIX) 64 #elif defined(OS_POSIX)
64 command_line_.reset(new CommandLine(std::vector<std::string>())); 65 command_line_.reset(new CommandLine(std::vector<std::string>()));
65 #endif 66 #endif
66 params_.reset(new MainFunctionParams(*command_line_, *sandbox_init_wrapper_, 67 params_.reset(new MainFunctionParams(*command_line_, *sandbox_init_wrapper_,
67 NULL)); 68 NULL));
68 platform_.reset(new RendererMainPlatformDelegate(*params_)); 69 platform_.reset(new RendererMainPlatformDelegate(*params_));
69 platform_->PlatformInitialize(); 70 platform_->PlatformInitialize();
70 71
72 // Setting flags and really doing anything with WebKit is fairly fragile and
73 // hacky, but this is the world we live in...
74 webkit_glue::SetJavaScriptFlags(L" --expose-gc");
71 WebKit::initialize(&webkitclient_); 75 WebKit::initialize(&webkitclient_);
72 WebKit::registerExtension(BaseJsV8Extension::Get()); 76 WebKit::registerExtension(BaseJsV8Extension::Get());
73 WebKit::registerExtension(JsonSchemaJsV8Extension::Get()); 77 WebKit::registerExtension(JsonSchemaJsV8Extension::Get());
74 WebKit::registerExtension(EventBindings::Get()); 78 WebKit::registerExtension(EventBindings::Get());
75 WebKit::registerExtension(ExtensionApiTestV8Extension::Get()); 79 WebKit::registerExtension(ExtensionApiTestV8Extension::Get());
76 WebKit::registerExtension(ExtensionProcessBindings::Get()); 80 WebKit::registerExtension(ExtensionProcessBindings::Get());
77 WebKit::registerExtension(RendererExtensionBindings::Get()); 81 WebKit::registerExtension(RendererExtensionBindings::Get());
78 EventBindings::SetRenderThread(&render_thread_); 82 EventBindings::SetRenderThread(&render_thread_);
79 83
80 // TODO(aa): Should some of this go to some other inheriting class? 84 // TODO(aa): Should some of this go to some other inheriting class?
(...skipping 12 matching lines...) Expand all
93 97
94 // This needs to pass the mock render thread to the view. 98 // This needs to pass the mock render thread to the view.
95 view_ = RenderView::Create(&render_thread_, NULL, NULL, kOpenerId, 99 view_ = RenderView::Create(&render_thread_, NULL, NULL, kOpenerId,
96 RendererPreferences(), WebPreferences(), 100 RendererPreferences(), WebPreferences(),
97 new SharedRenderViewCounter(0), kRouteId); 101 new SharedRenderViewCounter(0), kRouteId);
98 102
99 // Attach a pseudo keyboard device to this object. 103 // Attach a pseudo keyboard device to this object.
100 mock_keyboard_.reset(new MockKeyboard()); 104 mock_keyboard_.reset(new MockKeyboard());
101 } 105 }
102 void RenderViewTest::TearDown() { 106 void RenderViewTest::TearDown() {
107 // Try very hard to collect garbage before shutting down.
108 GetMainFrame()->collectGarbage();
109 GetMainFrame()->collectGarbage();
110
103 render_thread_.SendCloseMessage(); 111 render_thread_.SendCloseMessage();
104 112
105 // Run the loop so the release task from the renderwidget executes. 113 // Run the loop so the release task from the renderwidget executes.
106 ProcessPendingMessages(); 114 ProcessPendingMessages();
darin (slow to review) 2009/09/25 19:43:33 i might be slightly better to call GC after this l
jorlow 2009/09/25 19:56:11 Not possible. GetMainThread() won't work at this
107 115
108 EventBindings::SetRenderThread(NULL); 116 EventBindings::SetRenderThread(NULL);
109 117
110 view_ = NULL; 118 view_ = NULL;
111 119
112 mock_process_.reset(); 120 mock_process_.reset();
113 121
114 // After resetting the view_ and mock_process_ we may get some new tasks 122 // After resetting the view_ and mock_process_ we may get some new tasks
115 // which need to be processed before shutting down WebKit 123 // which need to be processed before shutting down WebKit
116 // (http://crbug.com/21508). 124 // (http://crbug.com/21508).
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 keyup_message->WriteData(reinterpret_cast<const char*>(&keyup_event), 174 keyup_message->WriteData(reinterpret_cast<const char*>(&keyup_event),
167 sizeof(WebKit::WebKeyboardEvent)); 175 sizeof(WebKit::WebKeyboardEvent));
168 view_->OnHandleInputEvent(*keyup_message); 176 view_->OnHandleInputEvent(*keyup_message);
169 177
170 return length; 178 return length;
171 #else 179 #else
172 NOTIMPLEMENTED(); 180 NOTIMPLEMENTED();
173 return L'\0'; 181 return L'\0';
174 #endif 182 #endif
175 } 183 }
OLDNEW
« no previous file with comments | « chrome/renderer/extensions/json_schema_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698