summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/render_process.cc12
-rw-r--r--chrome/renderer/render_thread.cc55
-rw-r--r--chrome/renderer/render_thread_unittest.cc47
-rw-r--r--chrome/renderer/render_view_unittest.cc5
-rw-r--r--chrome/renderer/renderer.scons4
5 files changed, 116 insertions, 7 deletions
diff --git a/chrome/renderer/render_process.cc b/chrome/renderer/render_process.cc
index 69b56b2..648c8a8 100644
--- a/chrome/renderer/render_process.cc
+++ b/chrome/renderer/render_process.cc
@@ -72,12 +72,20 @@ bool RenderProcess::GlobalInit(const std::wstring &channel_name) {
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
if (command_line.HasSwitch(switches::kJavaScriptFlags)) {
+ // TODO(port)
+ // Try and limit what we pull in for our non-Win unit test bundle
+#if defined(OS_WIN) || (!defined(UNIT_TEST))
webkit_glue::SetJavaScriptFlags(
command_line.GetSwitchValue(switches::kJavaScriptFlags));
+#endif
}
if (command_line.HasSwitch(switches::kPlaybackMode) ||
command_line.HasSwitch(switches::kRecordMode)) {
+ // TODO(port)
+ // Try and limit what we pull in for our non-Win unit test bundle
+#if defined(OS_WIN) || (!defined(UNIT_TEST))
webkit_glue::SetRecordPlaybackMode(true);
+#endif
}
if (command_line.HasSwitch(switches::kInProcessPlugins) ||
@@ -211,8 +219,12 @@ void RenderProcess::ScheduleCacheClearer() {
}
void RenderProcess::Cleanup() {
+ // TODO(port)
+ // Try and limit what we pull in for our non-Win unit test bundle
+#if defined(OS_WIN) || (!defined(UNIT_TEST))
#ifndef NDEBUG
// log important leaked objects
webkit_glue::CheckForLeaks();
#endif
+#endif
}
diff --git a/chrome/renderer/render_thread.cc b/chrome/renderer/render_thread.cc
index 08ccd27..d39800f 100644
--- a/chrome/renderer/render_thread.cc
+++ b/chrome/renderer/render_thread.cc
@@ -2,7 +2,9 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#if defined(OS_WIN)
#include <windows.h>
+#endif
#include <algorithm>
#include "chrome/renderer/render_thread.h"
@@ -11,7 +13,15 @@
#include "chrome/common/chrome_plugin_lib.h"
#include "chrome/common/ipc_logging.h"
#include "chrome/common/notification_service.h"
+// TODO(port)
+#if defined(OS_WIN)
#include "chrome/plugin/plugin_channel.h"
+#else
+#include <vector>
+#include "base/scoped_handle.h"
+#include "chrome/plugin/plugin_channel_base.h"
+#include "webkit/glue/weburlrequest.h"
+#endif
#include "chrome/renderer/net/render_dns_master.h"
#include "chrome/renderer/render_process.h"
#include "chrome/renderer/render_view.h"
@@ -19,6 +29,7 @@
#include "chrome/renderer/visitedlink_slave.h"
#include "webkit/glue/cache_manager.h"
+
RenderThread* g_render_thread;
static const unsigned int kCacheStatsDelayMS = 2000 /* milliseconds */;
@@ -31,8 +42,8 @@ static const size_t kStackSize = 1024 * 1024;
RenderThread::RenderThread(const std::wstring& channel_name)
: Thread("Chrome_RenderThread"),
- channel_name_(channel_name),
owner_loop_(MessageLoop::current()),
+ channel_name_(channel_name),
visited_link_slave_(NULL),
user_script_slave_(NULL),
render_dns_master_(NULL),
@@ -71,7 +82,12 @@ void RenderThread::RemoveFilter(IPC::ChannelProxy::MessageFilter* filter) {
}
void RenderThread::Resolve(const char* name, size_t length) {
+// TODO(port)
+#if defined(OS_WIN)
return render_dns_master_->Resolve(name, length);
+#else
+ NOTIMPLEMENTED();
+#endif
}
void RenderThread::AddRoute(int32 routing_id,
@@ -101,13 +117,20 @@ void RenderThread::Init() {
IPC::Channel::MODE_CLIENT, this, NULL, owner_loop_, true,
RenderProcess::GetShutDownEvent()));
+#if defined(OS_WIN)
// The renderer thread should wind-up COM.
CoInitialize(0);
+#endif
visited_link_slave_ = new VisitedLinkSlave();
user_script_slave_ = new UserScriptSlave();
+// TODO(port)
+#if defined(OS_WIN)
render_dns_master_.reset(new RenderDnsMaster());
+#else
+ NOTIMPLEMENTED();
+#endif
#ifdef IPC_MESSAGE_LOG_ENABLED
IPC::Logging::current()->SetIPCSender(this);
@@ -122,8 +145,11 @@ void RenderThread::CleanUp() {
// it caches a pointer to this thread.
channel_.reset();
+// TODO(port)
+#if defined(OS_WIN)
// Clean up plugin channels before this thread goes away.
PluginChannelBase::CleanupChannels();
+#endif
#ifdef IPC_MESSAGE_LOG_ENABLED
IPC::Logging::current()->SetIPCSender(NULL);
@@ -137,7 +163,9 @@ void RenderThread::CleanUp() {
delete user_script_slave_;
user_script_slave_ = NULL;
+#if defined(OS_WIN)
CoUninitialize();
+#endif
}
void RenderThread::OnUpdateVisitedLinks(base::SharedMemoryHandle table) {
@@ -160,7 +188,11 @@ void RenderThread::OnMessageReceived(const IPC::Message& msg) {
IPC_BEGIN_MESSAGE_MAP(RenderThread, msg)
IPC_MESSAGE_HANDLER(ViewMsg_VisitedLink_NewTable, OnUpdateVisitedLinks)
IPC_MESSAGE_HANDLER(ViewMsg_SetNextPageID, OnSetNextPageID)
+ // TODO(port): removed from render_messages_internal.h;
+ // is there a new non-windows message I should add here?
+#if defined(OS_WIN)
IPC_MESSAGE_HANDLER(ViewMsg_New, OnCreateNewView)
+#endif
IPC_MESSAGE_HANDLER(ViewMsg_SetCacheCapacities, OnSetCacheCapacities)
IPC_MESSAGE_HANDLER(ViewMsg_GetCacheResourceStats,
OnGetCacheResourceStats)
@@ -192,9 +224,14 @@ void RenderThread::OnPluginMessage(const FilePath& plugin_path,
void RenderThread::OnSetNextPageID(int32 next_page_id) {
// This should only be called at process initialization time, so we shouldn't
// have to worry about thread-safety.
+ // TODO(port)
+#if defined(OS_WIN)
RenderView::SetNextPageID(next_page_id);
+#endif
}
+// TODO(port)
+#if defined(OS_WIN)
void RenderThread::OnCreateNewView(HWND parent_hwnd,
HANDLE modal_dialog_event,
const WebPreferences& webkit_prefs,
@@ -207,23 +244,39 @@ void RenderThread::OnCreateNewView(HWND parent_hwnd,
this, parent_hwnd, waitable_event, MSG_ROUTING_NONE, webkit_prefs,
new SharedRenderViewCounter(0), view_id);
}
+#endif
void RenderThread::OnSetCacheCapacities(size_t min_dead_capacity,
size_t max_dead_capacity,
size_t capacity) {
+#if defined(OS_WIN)
CacheManager::SetCapacities(min_dead_capacity, max_dead_capacity, capacity);
+#else
+ // TODO(port)
+ NOTIMPLEMENTED();
+#endif
}
void RenderThread::OnGetCacheResourceStats() {
+#if defined(OS_WIN)
CacheManager::ResourceTypeStats stats;
CacheManager::GetResourceTypeStats(&stats);
Send(new ViewHostMsg_ResourceTypeStats(stats));
+#else
+ // TODO(port)
+ NOTIMPLEMENTED();
+#endif
}
void RenderThread::InformHostOfCacheStats() {
+#if defined(OS_WIN)
CacheManager::UsageStats stats;
CacheManager::GetUsageStats(&stats);
Send(new ViewHostMsg_UpdatedCacheStats(stats));
+#else
+ // TODO(port)
+ NOTIMPLEMENTED();
+#endif
}
void RenderThread::InformHostOfCacheStatsLater() {
diff --git a/chrome/renderer/render_thread_unittest.cc b/chrome/renderer/render_thread_unittest.cc
new file mode 100644
index 0000000..0aadda6
--- /dev/null
+++ b/chrome/renderer/render_thread_unittest.cc
@@ -0,0 +1,47 @@
+// Copyright (c) 2008 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/string_util.h"
+#include "base/waitable_event.h"
+#include "chrome/common/render_messages.h"
+#include "chrome/renderer/render_thread.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+
+class RenderThreadTest : public testing::Test {
+ public:
+ virtual void SetUp() {
+ // Must have a message loop to create a RenderThread()
+ message_loop_ = new MessageLoop(MessageLoop::TYPE_DEFAULT);
+ }
+
+ virtual void TearDown() {
+ delete message_loop_;
+ }
+
+ private:
+ MessageLoop *message_loop_;
+
+};
+
+
+TEST_F(RenderThreadTest, TestGlobal) {
+ ASSERT_FALSE(g_render_thread);
+ {
+ RenderThread thread(EmptyWString());
+ ASSERT_TRUE(g_render_thread);
+ }
+ ASSERT_FALSE(g_render_thread);
+}
+
+TEST_F(RenderThreadTest, TestVisitedMsg) {
+ RenderThread thread(EmptyWString());
+ IPC::Message* msg = new ViewMsg_VisitedLink_NewTable(NULL);
+ ASSERT_TRUE(msg);
+ // Message goes nowhere, but this confirms Init() has happened.
+ // Unusually (?), RenderThread() Start()s itself in it's constructor.
+ thread.Send(msg);
+ delete msg;
+}
+
diff --git a/chrome/renderer/render_view_unittest.cc b/chrome/renderer/render_view_unittest.cc
index ffb61ad..c3b2fd3 100644
--- a/chrome/renderer/render_view_unittest.cc
+++ b/chrome/renderer/render_view_unittest.cc
@@ -16,6 +16,8 @@ namespace {
const int32 kRouteId = 5;
const int32 kOpenerId = 7;
+};
+
class RenderViewTest : public testing::Test {
public:
RenderViewTest() {}
@@ -86,7 +88,6 @@ class RenderViewTest : public testing::Test {
scoped_refptr<RenderView> view_;
};
-} // namespace
TEST_F(RenderViewTest, OnLoadAlternateHTMLText) {
// Test a new navigation.
@@ -96,7 +97,7 @@ TEST_F(RenderViewTest, OnLoadAlternateHTMLText) {
// We should have gotten two different types of start messages in the
// following order.
- ASSERT_EQ(2, render_thread_.sink().message_count());
+ ASSERT_EQ((size_t)2, render_thread_.sink().message_count());
const IPC::Message* msg = render_thread_.sink().GetMessageAt(0);
EXPECT_EQ(ViewHostMsg_DidStartLoading::ID, msg->type());
diff --git a/chrome/renderer/renderer.scons b/chrome/renderer/renderer.scons
index 9911a02..30b5b0e 100644
--- a/chrome/renderer/renderer.scons
+++ b/chrome/renderer/renderer.scons
@@ -104,8 +104,6 @@ if env.Bit('linux'):
'external_js_object.cc',
'net/render_dns_master.cc',
'plugin_channel_host.cc',
- 'render_process.cc',
- 'render_thread.cc',
'render_view.cc',
'render_widget.cc',
'renderer_main.cc',
@@ -120,8 +118,6 @@ if env.Bit('mac'):
'external_js_object.cc',
'net/render_dns_master.cc',
'plugin_channel_host.cc',
- 'render_process.cc',
- 'render_thread.cc',
'render_view.cc',
'render_widget.cc',
'renderer_glue.cc',