summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-13 04:20:48 +0000
committerhclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-13 04:20:48 +0000
commit0e79b9e15734c1adf7d5b0d74c9ef2ba621a0f74 (patch)
treef50f3479d754b9b5baea537914b70d9f8ca96173 /chrome
parent6074d298427d7b4b0220a55bc52c7c7293fd362d (diff)
downloadchromium_src-0e79b9e15734c1adf7d5b0d74c9ef2ba621a0f74.zip
chromium_src-0e79b9e15734c1adf7d5b0d74c9ef2ba621a0f74.tar.gz
chromium_src-0e79b9e15734c1adf7d5b0d74c9ef2ba621a0f74.tar.bz2
Some consumers in the renderer process need access to an IO message loop, RenderThread which holds WebKit runs on a message loop with type TYPE_DEFAULT, so we need to expose
the owner loop of RenderThread which has type TYPE_IO. That particular message loop is used for handling all IPC messages, so we need to be cautious about using this message loop and don't block on it. Review URL: http://codereview.chromium.org/21318 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9741 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r--chrome/renderer/render_view.cc8
-rw-r--r--chrome/renderer/render_view.h6
2 files changed, 14 insertions, 0 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
index 7003f43..e38facb 100644
--- a/chrome/renderer/render_view.cc
+++ b/chrome/renderer/render_view.cc
@@ -2857,3 +2857,11 @@ std::string RenderView::GetAltHTMLForTemplate(
return std::string();
#endif // OS_WIN
}
+
+MessageLoop* RenderView::GetMessageLoopForIO() {
+ // Assume that we have only one RenderThread in the process and the owner loop
+ // of RenderThread is an IO message loop.
+ if (g_render_thread);
+ return g_render_thread->owner_loop();
+ return NULL;
+}
diff --git a/chrome/renderer/render_view.h b/chrome/renderer/render_view.h
index 94d842d..ee0446e 100644
--- a/chrome/renderer/render_view.h
+++ b/chrome/renderer/render_view.h
@@ -334,6 +334,12 @@ class RenderView : public RenderWidget,
delay_seconds_for_form_state_sync_ = delay_in_seconds;
}
+ // Returns a message loop of type IO that can be used to run I/O jobs. The
+ // renderer thread is of type TYPE_DEFAULT, so doesn't support everything
+ // needed by some consumers. The returned thread will be the main thread of
+ // the renderer, which processes all IPC, to any I/O should be non-blocking.
+ MessageLoop* GetMessageLoopForIO();
+
private:
FRIEND_TEST(RenderViewTest, OnLoadAlternateHTMLText);
FRIEND_TEST(RenderViewTest, OnNavStateChanged);