summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/browser_accessibility_manager.cc4
-rw-r--r--chrome/browser/profile.cc4
-rw-r--r--chrome/browser/renderer_host/browser_render_process_host.cc9
-rw-r--r--chrome/browser/renderer_host/browser_render_process_host.h1
-rw-r--r--chrome/browser/renderer_host/mock_render_process_host.cc7
-rw-r--r--chrome/browser/renderer_host/mock_render_process_host.h1
-rw-r--r--chrome/browser/renderer_host/render_process_host.h10
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc4
-rw-r--r--chrome/browser/renderer_host/render_widget_host.cc10
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view_mac.mm2
-rw-r--r--chrome/browser/renderer_host/render_widget_host_view_win.cc2
-rw-r--r--chrome/browser/tab_contents/render_view_host_delegate_helper.cc4
12 files changed, 41 insertions, 17 deletions
diff --git a/chrome/browser/browser_accessibility_manager.cc b/chrome/browser/browser_accessibility_manager.cc
index b2945e9..7a7c3b3 100644
--- a/chrome/browser/browser_accessibility_manager.cc
+++ b/chrome/browser/browser_accessibility_manager.cc
@@ -85,12 +85,12 @@ bool BrowserAccessibilityManager::RequestAccessibilityInfo(
// Send accessibility information retrieval message to the renderer.
bool success = false;
- if (rvh && rvh->process() && rvh->process()->channel()) {
+ if (rvh && rvh->process() && rvh->process()->HasConnection()) {
IPC::SyncMessage* msg =
new ViewMsg_GetAccessibilityInfo(routing_id, in_params, &out_params_);
// Necessary for the send to keep the UI responsive.
msg->EnableMessagePumping();
- success = rvh->process()->channel()->SendWithTimeout(msg,
+ success = rvh->process()->SendWithTimeout(msg,
kAccessibilityMessageTimeOut);
}
return success;
diff --git a/chrome/browser/profile.cc b/chrome/browser/profile.cc
index 54ecdf2..f5182c0 100644
--- a/chrome/browser/profile.cc
+++ b/chrome/browser/profile.cc
@@ -667,7 +667,7 @@ static void BroadcastNewHistoryTable(base::SharedMemory* table_memory) {
// send to all RenderProcessHosts
for (RenderProcessHost::iterator i = RenderProcessHost::begin();
i != RenderProcessHost::end(); i++) {
- if (!i->second->channel())
+ if (!i->second->HasConnection())
continue;
base::SharedMemoryHandle new_table;
@@ -679,7 +679,7 @@ static void BroadcastNewHistoryTable(base::SharedMemory* table_memory) {
table_memory->ShareToProcess(process, &new_table);
IPC::Message* msg = new ViewMsg_VisitedLink_NewTable(new_table);
- i->second->channel()->Send(msg);
+ i->second->Send(msg);
}
}
diff --git a/chrome/browser/renderer_host/browser_render_process_host.cc b/chrome/browser/renderer_host/browser_render_process_host.cc
index ecea28c..b4d763e 100644
--- a/chrome/browser/renderer_host/browser_render_process_host.cc
+++ b/chrome/browser/renderer_host/browser_render_process_host.cc
@@ -581,6 +581,15 @@ bool BrowserRenderProcessHost::FastShutdownIfPossible() {
return true;
}
+bool BrowserRenderProcessHost::SendWithTimeout(IPC::Message* msg,
+ int timeout_ms) {
+ if (!channel_.get()) {
+ delete msg;
+ return false;
+ }
+ return channel_->SendWithTimeout(msg, timeout_ms);
+}
+
// This is a platform specific function for mapping a transport DIB given its id
TransportDIB* BrowserRenderProcessHost::MapTransportDIB(
TransportDIB::Id dib_id) {
diff --git a/chrome/browser/renderer_host/browser_render_process_host.h b/chrome/browser/renderer_host/browser_render_process_host.h
index 6c259f0..aee8d2b 100644
--- a/chrome/browser/renderer_host/browser_render_process_host.h
+++ b/chrome/browser/renderer_host/browser_render_process_host.h
@@ -65,6 +65,7 @@ class BrowserRenderProcessHost : public RenderProcessHost,
virtual void WidgetHidden();
virtual void AddWord(const std::wstring& word);
virtual bool FastShutdownIfPossible();
+ virtual bool SendWithTimeout(IPC::Message* msg, int timeout_ms);
virtual TransportDIB* GetTransportDIB(TransportDIB::Id dib_id);
// IPC::Channel::Sender via RenderProcessHost.
diff --git a/chrome/browser/renderer_host/mock_render_process_host.cc b/chrome/browser/renderer_host/mock_render_process_host.cc
index 8cf0e10..4d4eda2 100644
--- a/chrome/browser/renderer_host/mock_render_process_host.cc
+++ b/chrome/browser/renderer_host/mock_render_process_host.cc
@@ -55,6 +55,13 @@ bool MockRenderProcessHost::FastShutdownIfPossible() {
return false;
}
+bool MockRenderProcessHost::SendWithTimeout(IPC::Message* msg, int timeout_ms) {
+ // Save the message in the sink. Just ignore timeout_ms.
+ sink_.OnMessageReceived(*msg);
+ delete msg;
+ return true;
+}
+
bool MockRenderProcessHost::Send(IPC::Message* msg) {
// Save the message in the sink.
sink_.OnMessageReceived(*msg);
diff --git a/chrome/browser/renderer_host/mock_render_process_host.h b/chrome/browser/renderer_host/mock_render_process_host.h
index 7aea378..7975636 100644
--- a/chrome/browser/renderer_host/mock_render_process_host.h
+++ b/chrome/browser/renderer_host/mock_render_process_host.h
@@ -40,6 +40,7 @@ class MockRenderProcessHost : public RenderProcessHost {
virtual void WidgetHidden();
virtual void AddWord(const std::wstring& word);
virtual bool FastShutdownIfPossible();
+ virtual bool SendWithTimeout(IPC::Message* msg, int timeout_ms);
virtual TransportDIB* GetTransportDIB(TransportDIB::Id dib_id);
// IPC::Channel::Sender via RenderProcessHost.
diff --git a/chrome/browser/renderer_host/render_process_host.h b/chrome/browser/renderer_host/render_process_host.h
index ef79711..e661a0f 100644
--- a/chrome/browser/renderer_host/render_process_host.h
+++ b/chrome/browser/renderer_host/render_process_host.h
@@ -54,8 +54,9 @@ class RenderProcessHost : public IPC::Channel::Sender,
// process.
const base::Process& process() const { return process_; }
- // May return NULL if there is no connection.
- IPC::SyncChannel* channel() { return channel_.get(); }
+ // Returns true iff channel_ has been set to non-NULL. Use this for checking
+ // if there is connection or not.
+ bool HasConnection() { return channel_.get() != NULL; }
bool sudden_termination_allowed() const {
return sudden_termination_allowed_;
@@ -143,6 +144,11 @@ class RenderProcessHost : public IPC::Channel::Sender,
// Returns True if it was able to do fast shutdown.
virtual bool FastShutdownIfPossible() = 0;
+ // Synchronously sends the message, waiting for the specified timeout. The
+ // implementor takes ownership of the given Message regardless of whether or
+ // not this method succeeds. Returns true on success.
+ virtual bool SendWithTimeout(IPC::Message* msg, int timeout_ms) = 0;
+
// Transport DIB functions ---------------------------------------------------
// Return the TransportDIB for the given id. On Linux, this can involve
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index d41cac3..87f4bf0 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -139,7 +139,7 @@ bool RenderViewHost::CreateRenderView() {
// ignored, so this is safe.
if (!process()->Init())
return false;
- DCHECK(process()->channel());
+ DCHECK(process()->HasConnection());
DCHECK(process()->profile());
if (BindingsPolicy::is_dom_ui_enabled(enabled_bindings_)) {
@@ -197,7 +197,7 @@ bool RenderViewHost::CreateRenderView() {
}
bool RenderViewHost::IsRenderViewLive() const {
- return process()->channel() && renderer_initialized_;
+ return process()->HasConnection() && renderer_initialized_;
}
void RenderViewHost::SetRendererPrefs(
diff --git a/chrome/browser/renderer_host/render_widget_host.cc b/chrome/browser/renderer_host/render_widget_host.cc
index da18bd8..5dec932 100644
--- a/chrome/browser/renderer_host/render_widget_host.cc
+++ b/chrome/browser/renderer_host/render_widget_host.cc
@@ -87,7 +87,7 @@ gfx::NativeViewId RenderWidgetHost::GetNativeViewId() {
}
void RenderWidgetHost::Init() {
- DCHECK(process_->channel());
+ DCHECK(process_->HasConnection());
renderer_initialized_ = true;
@@ -97,7 +97,7 @@ void RenderWidgetHost::Init() {
}
void RenderWidgetHost::Shutdown() {
- if (process_->channel()) {
+ if (process_->HasConnection()) {
// Tell the renderer object to close.
process_->ReportExpectingClose(routing_id_);
bool rv = Send(new ViewMsg_Close(routing_id_));
@@ -180,7 +180,7 @@ void RenderWidgetHost::WasRestored() {
}
void RenderWidgetHost::WasResized() {
- if (resize_ack_pending_ || !process_->channel() || !view_ ||
+ if (resize_ack_pending_ || !process_->HasConnection() || !view_ ||
!renderer_initialized_) {
return;
}
@@ -351,7 +351,7 @@ void RenderWidgetHost::ForwardKeyboardEvent(
// will mess up our key queue.
if (WebInputEvent::isKeyboardEventType(key_event.type)) {
// Don't add this key to the queue if we have no way to send the message...
- if (!process_->channel())
+ if (!process_->HasConnection())
return;
// Put all WebKeyboardEvent objects in a queue since we can't trust the
@@ -367,7 +367,7 @@ void RenderWidgetHost::ForwardKeyboardEvent(
void RenderWidgetHost::ForwardInputEvent(const WebInputEvent& input_event,
int event_size) {
- if (!process_->channel())
+ if (!process_->HasConnection())
return;
IPC::Message* message = new ViewMsg_HandleInputEvent(routing_id_);
diff --git a/chrome/browser/renderer_host/render_widget_host_view_mac.mm b/chrome/browser/renderer_host/render_widget_host_view_mac.mm
index a9d45c8..c13144f 100644
--- a/chrome/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/chrome/browser/renderer_host/render_widget_host_view_mac.mm
@@ -418,7 +418,7 @@ void RenderWidgetHostViewMac::ShutdownHost() {
}
- (void)drawRect:(NSRect)dirtyRect {
- DCHECK(renderWidgetHostView_->render_widget_host_->process()->channel());
+ DCHECK(renderWidgetHostView_->render_widget_host_->process()->HasConnection());
DCHECK(!renderWidgetHostView_->about_to_validate_and_paint_);
renderWidgetHostView_->invalid_rect_ = dirtyRect;
diff --git a/chrome/browser/renderer_host/render_widget_host_view_win.cc b/chrome/browser/renderer_host/render_widget_host_view_win.cc
index e5091d6..f819164 100644
--- a/chrome/browser/renderer_host/render_widget_host_view_win.cc
+++ b/chrome/browser/renderer_host/render_widget_host_view_win.cc
@@ -689,7 +689,7 @@ void RenderWidgetHostViewWin::OnDestroy() {
}
void RenderWidgetHostViewWin::OnPaint(HDC dc) {
- DCHECK(render_widget_host_->process()->channel());
+ DCHECK(render_widget_host_->process()->HasConnection());
about_to_validate_and_paint_ = true;
BackingStore* backing_store = render_widget_host_->GetBackingStore(true);
diff --git a/chrome/browser/tab_contents/render_view_host_delegate_helper.cc b/chrome/browser/tab_contents/render_view_host_delegate_helper.cc
index b8c4c0e..9a7a7c00 100644
--- a/chrome/browser/tab_contents/render_view_host_delegate_helper.cc
+++ b/chrome/browser/tab_contents/render_view_host_delegate_helper.cc
@@ -62,7 +62,7 @@ TabContents* RenderViewHostDelegateViewHelper::GetCreatedWindow(int route_id) {
pending_contents_.erase(route_id);
if (!new_tab_contents->render_view_host()->view() ||
- !new_tab_contents->process()->channel()) {
+ !new_tab_contents->process()->HasConnection()) {
// The view has gone away or the renderer crashed. Nothing to do.
return NULL;
}
@@ -85,7 +85,7 @@ RenderWidgetHostView* RenderViewHostDelegateViewHelper::GetCreatedWidget(
pending_widget_views_.erase(route_id);
RenderWidgetHost* widget_host = widget_host_view->GetRenderWidgetHost();
- if (!widget_host->process()->channel()) {
+ if (!widget_host->process()->HasConnection()) {
// The view has gone away or the renderer crashed. Nothing to do.
return NULL;
}