diff options
author | jrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-27 19:04:50 +0000 |
---|---|---|
committer | jrg@chromium.org <jrg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-27 19:04:50 +0000 |
commit | 2c62b561f63579ac835af49ba233c56ca03417ca (patch) | |
tree | 83db5b274cfc8d90b126f473268eb78fcfb97e8d /chrome/renderer | |
parent | 3bfd411d26d35f46fd0b2b11e0849f0acc174e39 (diff) | |
download | chromium_src-2c62b561f63579ac835af49ba233c56ca03417ca.zip chromium_src-2c62b561f63579ac835af49ba233c56ca03417ca.tar.gz chromium_src-2c62b561f63579ac835af49ba233c56ca03417ca.tar.bz2 |
render_* work.
Review URL: http://codereview.chromium.org/18650
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8732 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/render_process.cc | 12 | ||||
-rw-r--r-- | chrome/renderer/render_thread.cc | 55 | ||||
-rw-r--r-- | chrome/renderer/render_thread_unittest.cc | 47 | ||||
-rw-r--r-- | chrome/renderer/render_view_unittest.cc | 5 | ||||
-rw-r--r-- | chrome/renderer/renderer.scons | 4 |
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', |