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

Unified Diff: content/renderer/render_view_impl.cc

Issue 11362161: Use the WebTestProxy for layout tests in content_shell (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: version that doesn't expose RenderViewImpl in public API Created 8 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: content/renderer/render_view_impl.cc
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index a3c5cf06cdfb593c863ad1e65c982822e8a2a58d..2dd5d83d2a8a8fa6c38f512444c9507e17a46f3c 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -359,6 +359,9 @@ static const float kScalingIncrementForGesture = 0.01f;
static const size_t kContentIntentDelayMilliseconds = 700;
#endif
+static RenderViewImpl* (*g_create_render_view_impl)(RenderViewImplParams*) =
+ NULL;
+
static RenderViewImpl* FromRoutingID(int32 routing_id) {
return static_cast<RenderViewImpl*>(
ChildThread::current()->ResolveRoute(routing_id));
@@ -536,7 +539,7 @@ int64 ExtractPostId(const WebHistoryItem& item) {
} // namespace
-RenderViewImpl::RenderViewImpl(
+RenderViewImplParams::RenderViewImplParams(
int32 opener_id,
const RendererPreferences& renderer_prefs,
const WebPreferences& webkit_prefs,
@@ -550,8 +553,28 @@ RenderViewImpl::RenderViewImpl(
int32 next_page_id,
const WebKit::WebScreenInfo& screen_info,
AccessibilityMode accessibility_mode)
- : RenderWidget(WebKit::WebPopupTypeNone, screen_info, swapped_out),
- webkit_preferences_(webkit_prefs),
+ : opener_id(opener_id),
+ renderer_prefs(renderer_prefs),
+ webkit_prefs(webkit_prefs),
+ counter(counter),
+ routing_id(routing_id),
+ surface_id(surface_id),
+ session_storage_namespace_id(session_storage_namespace_id),
+ frame_name(frame_name),
+ is_renderer_created(is_renderer_created),
+ swapped_out(swapped_out),
+ next_page_id(next_page_id),
+ screen_info(screen_info),
+ accessibility_mode(accessibility_mode) {
+}
+
+RenderViewImplParams::~RenderViewImplParams() {}
+
+RenderViewImpl::RenderViewImpl(RenderViewImplParams* params)
+ : RenderWidget(WebKit::WebPopupTypeNone,
+ params->screen_info,
+ params->swapped_out),
+ webkit_preferences_(params->webkit_prefs),
send_content_state_immediately_(false),
enabled_bindings_(0),
send_preferred_size_changes_(false),
@@ -561,7 +584,7 @@ RenderViewImpl::RenderViewImpl(
opener_suppressed_(false),
page_id_(-1),
last_page_id_sent_to_browser_(-1),
- next_page_id_(next_page_id),
+ next_page_id_(params->next_page_id),
history_list_offset_(-1),
history_list_length_(0),
target_url_status_(TARGET_NONE),
@@ -591,7 +614,7 @@ RenderViewImpl::RenderViewImpl(
ALLOW_THIS_IN_INITIALIZER_LIST(
load_progress_tracker_(new LoadProgressTracker(this))),
#endif
- session_storage_namespace_id_(session_storage_namespace_id),
+ session_storage_namespace_id_(params->session_storage_namespace_id),
handling_select_range_(false),
#if defined(OS_WIN)
focused_plugin_id_(-1),
@@ -601,11 +624,11 @@ RenderViewImpl::RenderViewImpl(
target_process_id_(0),
target_routing_id_(0),
ALLOW_THIS_IN_INITIALIZER_LIST(pepper_delegate_(this)) {
- set_throttle_input_events(renderer_prefs.throttle_input_events);
- routing_id_ = routing_id;
- surface_id_ = surface_id;
- if (opener_id != MSG_ROUTING_NONE && is_renderer_created)
- opener_id_ = opener_id;
+ set_throttle_input_events(params->renderer_prefs.throttle_input_events);
+ routing_id_ = params->routing_id;
+ surface_id_ = params->surface_id;
+ if (params->opener_id != MSG_ROUTING_NONE && params->is_renderer_created)
+ opener_id_ = params->opener_id;
// Ensure we start with a valid next_page_id_ from the browser.
DCHECK_GE(next_page_id_, 0);
@@ -638,10 +661,10 @@ RenderViewImpl::RenderViewImpl(
new EmailDetector()));
#endif
- if (counter) {
- shared_popup_counter_ = counter;
+ if (params->counter) {
+ shared_popup_counter_ = params->counter;
// Only count this if it isn't swapped out upon creation.
- if (!swapped_out)
+ if (!params->swapped_out)
shared_popup_counter_->data++;
decrement_shared_popup_at_destruction_ = true;
} else {
@@ -665,13 +688,13 @@ RenderViewImpl::RenderViewImpl(
webview()->setDeviceScaleFactor(device_scale_factor_);
webkit_preferences_.Apply(webview());
webview()->initializeMainFrame(this);
- if (!frame_name.empty())
- webview()->mainFrame()->setName(frame_name);
+ if (!params->frame_name.empty())
+ webview()->mainFrame()->setName(params->frame_name);
webview()->settings()->setMinimumTimerInterval(
is_hidden() ? webkit_glue::kBackgroundTabTimerInterval :
webkit_glue::kForegroundTabTimerInterval);
- OnSetRendererPrefs(renderer_prefs);
+ OnSetRendererPrefs(params->renderer_prefs);
#if defined(ENABLE_WEBRTC)
if (!media_stream_dispatcher_)
@@ -695,7 +718,7 @@ RenderViewImpl::RenderViewImpl(
intents_host_ = new WebIntentsHost(this);
// Create renderer_accessibility_ if needed.
- OnSetAccessibilityMode(accessibility_mode);
+ OnSetAccessibilityMode(params->accessibility_mode);
new IdleUserDetector(this);
@@ -708,8 +731,8 @@ RenderViewImpl::RenderViewImpl(
// If we have an opener_id but we weren't created by a renderer, then
// it's the browser asking us to set our opener to another RenderView.
- if (opener_id != MSG_ROUTING_NONE && !is_renderer_created) {
- RenderViewImpl* opener_view = FromRoutingID(opener_id);
+ if (params->opener_id != MSG_ROUTING_NONE && !params->is_renderer_created) {
+ RenderViewImpl* opener_view = FromRoutingID(params->opener_id);
if (opener_view)
webview()->mainFrame()->setOpener(opener_view->webview()->mainFrame());
}
@@ -793,7 +816,7 @@ RenderViewImpl* RenderViewImpl::Create(
const WebKit::WebScreenInfo& screen_info,
AccessibilityMode accessibility_mode) {
DCHECK(routing_id != MSG_ROUTING_NONE);
- return new RenderViewImpl(
+ RenderViewImplParams params(
opener_id,
renderer_prefs,
webkit_prefs,
@@ -807,6 +830,16 @@ RenderViewImpl* RenderViewImpl::Create(
next_page_id,
screen_info,
accessibility_mode);
+ if (g_create_render_view_impl)
+ return g_create_render_view_impl(&params);
+ return new RenderViewImpl(&params);
+}
+
+// static
+void RenderViewImpl::InstallCreateHook(
+ RenderViewImpl* (*create_render_view_impl)(RenderViewImplParams*)) {
+ CHECK(!g_create_render_view_impl);
+ g_create_render_view_impl = create_render_view_impl;
}
void RenderViewImpl::AddObserver(RenderViewObserver* observer) {

Powered by Google App Engine
This is Rietveld 408576698