Index: chrome/renderer/render_view.cc |
=================================================================== |
--- chrome/renderer/render_view.cc (revision 7533) |
+++ chrome/renderer/render_view.cc (working copy) |
@@ -89,9 +89,9 @@ |
// delay. |
static const int kDelayForForcedCaptureMs = 6000; |
-// How often we will sync the navigation state when the user is changing form |
-// elements or scroll position. |
-const TimeDelta kDelayForNavigationSync = TimeDelta::FromSeconds(5); |
+// The default value for RenderView.delay_seconds_for_form_state_sync_, see |
+// that variable for more. |
+const int kDefaultDelaySecondsForFormStateSync = 5; |
// The next available page ID to use. This ensures that the page IDs are |
// globally unique in the renderer. |
@@ -142,29 +142,30 @@ |
/////////////////////////////////////////////////////////////////////////////// |
-RenderView::RenderView() |
- : RenderWidget(g_render_thread, true), |
- is_loading_(false), |
- page_id_(-1), |
- last_page_id_sent_to_browser_(-1), |
- last_indexed_page_id_(-1), |
- method_factory_(this), |
- opened_by_user_gesture_(true), |
- enable_dom_automation_(false), |
- enable_dom_ui_bindings_(false), |
- target_url_status_(TARGET_NONE), |
- printed_document_width_(0), |
- first_default_plugin_(NULL), |
- navigation_gesture_(NavigationGestureUnknown), |
- history_back_list_count_(0), |
- history_forward_list_count_(0), |
- disable_popup_blocking_(false), |
- has_unload_listener_(false), |
- decrement_shared_popup_at_destruction_(false), |
- greasemonkey_enabled_(false), |
- waiting_for_create_window_ack_(false), |
- form_field_autofill_request_id_(0), |
- popup_notification_visible_(false) { |
+RenderView::RenderView(RenderThreadBase* render_thread) |
+ : RenderWidget(render_thread, true), |
+ is_loading_(false), |
+ page_id_(-1), |
+ last_page_id_sent_to_browser_(-1), |
+ last_indexed_page_id_(-1), |
+ method_factory_(this), |
+ opened_by_user_gesture_(true), |
+ enable_dom_automation_(false), |
+ enable_dom_ui_bindings_(false), |
+ target_url_status_(TARGET_NONE), |
+ printed_document_width_(0), |
+ first_default_plugin_(NULL), |
+ navigation_gesture_(NavigationGestureUnknown), |
+ history_back_list_count_(0), |
+ history_forward_list_count_(0), |
+ disable_popup_blocking_(false), |
+ has_unload_listener_(false), |
+ decrement_shared_popup_at_destruction_(false), |
+ greasemonkey_enabled_(false), |
+ waiting_for_create_window_ack_(false), |
+ form_field_autofill_request_id_(0), |
+ popup_notification_visible_(false), |
+ delay_seconds_for_form_state_sync_(kDefaultDelaySecondsForFormStateSync) { |
resource_dispatcher_ = new ResourceDispatcher(this); |
#ifdef CHROME_PERSONALIZATION |
personalization_ = Personalization::CreateRendererPersonalization(); |
@@ -183,7 +184,7 @@ |
it = plugin_delegates_.erase(it); |
} |
- g_render_thread->RemoveFilter(debug_message_handler_); |
+ render_thread_->RemoveFilter(debug_message_handler_); |
#ifdef CHROME_PERSONALIZATION |
Personalization::CleanupRendererPersonalization(personalization_); |
@@ -193,6 +194,7 @@ |
/*static*/ |
RenderView* RenderView::Create( |
+ RenderThreadBase* render_thread, |
HWND parent_hwnd, |
HANDLE modal_dialog_event, |
int32 opener_id, |
@@ -200,7 +202,7 @@ |
SharedRenderViewCounter* counter, |
int32 routing_id) { |
DCHECK(routing_id != MSG_ROUTING_NONE); |
- scoped_refptr<RenderView> view = new RenderView(); |
+ scoped_refptr<RenderView> view = new RenderView(render_thread); |
view->Init(parent_hwnd, |
modal_dialog_event, |
opener_id, |
@@ -271,7 +273,7 @@ |
webview()->SetBackForwardListSize(1); |
routing_id_ = routing_id; |
- g_render_thread->AddRoute(routing_id_, this); |
+ render_thread_->AddRoute(routing_id_, this); |
// Take a reference on behalf of the RenderThread. This will be balanced |
// when we receive ViewMsg_Close. |
AddRef(); |
@@ -295,7 +297,7 @@ |
command_line.HasSwitch(switches::kEnableGreasemonkey); |
debug_message_handler_ = new DebugMessageHandler(this); |
- g_render_thread->AddFilter(debug_message_handler_); |
+ render_thread_->AddFilter(debug_message_handler_); |
} |
void RenderView::OnMessageReceived(const IPC::Message& message) { |
@@ -1458,9 +1460,10 @@ |
// do inject into any other document. |
if (greasemonkey_enabled_) { |
const GURL &gurl = frame->GetURL(); |
- if (gurl.SchemeIs("file") || |
- gurl.SchemeIs("http") || |
- gurl.SchemeIs("https")) { |
+ if (g_render_thread && // Will be NULL when testing. |
+ (gurl.SchemeIs("file") || |
+ gurl.SchemeIs("http") || |
+ gurl.SchemeIs("https"))) { |
g_render_thread->greasemonkey_slave()->InjectScripts(frame); |
} |
} |
@@ -1785,7 +1788,7 @@ |
int32 routing_id = MSG_ROUTING_NONE; |
HANDLE modal_dialog_event = NULL; |
- bool result = g_render_thread->Send( |
+ bool result = render_thread_->Send( |
new ViewHostMsg_CreateWindow(routing_id_, user_gesture, &routing_id, |
&modal_dialog_event)); |
if (routing_id == MSG_ROUTING_NONE) { |
@@ -1795,7 +1798,8 @@ |
// The WebView holds a reference to this new RenderView |
const WebPreferences& prefs = webview->GetPreferences(); |
- RenderView* view = RenderView::Create(NULL, modal_dialog_event, routing_id_, |
+ RenderView* view = RenderView::Create(render_thread_, |
+ NULL, modal_dialog_event, routing_id_, |
prefs, shared_popup_counter_, |
routing_id); |
view->set_opened_by_user_gesture(user_gesture); |
@@ -1811,7 +1815,7 @@ |
WebWidget* RenderView::CreatePopupWidget(WebView* webview, |
bool focus_on_show) { |
RenderWidget* widget = RenderWidget::Create(routing_id_, |
- g_render_thread, |
+ render_thread_, |
focus_on_show); |
return widget->webwidget(); |
} |
@@ -1839,7 +1843,7 @@ |
bool is_gears = false; |
if (ShouldLoadPluginInProcess(mime_type, &is_gears)) { |
std::wstring path; |
- g_render_thread->Send( |
+ render_thread_->Send( |
new ViewHostMsg_GetPluginPath(url, mime_type, clsid, &path, |
actual_mime_type)); |
if (path.empty()) |
@@ -2369,9 +2373,11 @@ |
} |
void RenderView::OnNavStateChanged(WebView* webview) { |
- if (!nav_state_sync_timer_.IsRunning()) |
- nav_state_sync_timer_.Start(kDelayForNavigationSync, this, |
- &RenderView::SyncNavigationState); |
+ if (!nav_state_sync_timer_.IsRunning()) { |
+ nav_state_sync_timer_.Start( |
+ TimeDelta::FromSeconds(delay_seconds_for_form_state_sync_), this, |
+ &RenderView::SyncNavigationState); |
+ } |
} |
void RenderView::SetTooltipText(WebView* webview, |