| Index: chrome/renderer/render_process.cc
|
| diff --git a/chrome/renderer/render_process.cc b/chrome/renderer/render_process.cc
|
| index 2fe1af747c878a8876effab92165b779338f42fb..69b56b2320eceefc46fe4b5346293764a85baaa8 100644
|
| --- a/chrome/renderer/render_process.cc
|
| +++ b/chrome/renderer/render_process.cc
|
| @@ -2,17 +2,23 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include "build/build_config.h"
|
| +
|
| +#if defined(OS_WIN)
|
| #include <windows.h>
|
| #include <objidl.h>
|
| #include <mlang.h>
|
| +#endif
|
|
|
| #include "chrome/renderer/render_process.h"
|
|
|
| #include "base/basictypes.h"
|
| #include "base/command_line.h"
|
| +#include "base/compiler_specific.h"
|
| #include "base/message_loop.h"
|
| #include "base/histogram.h"
|
| #include "base/path_service.h"
|
| +#include "base/sys_info.h"
|
| #include "chrome/browser/net/dns_global.h" // TODO(jar): DNS calls should be renderer specific, not including browser.
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/chrome_paths.h"
|
| @@ -30,9 +36,8 @@ bool RenderProcess::load_plugins_in_process_ = false;
|
|
|
| RenderProcess::RenderProcess(const std::wstring& channel_name)
|
| : render_thread_(channel_name),
|
| -#pragma warning(suppress: 4355) // Okay to pass "this" here.
|
| - clearer_factory_(this) {
|
| - for (int i = 0; i < arraysize(shared_mem_cache_); ++i)
|
| + ALLOW_THIS_IN_INITIALIZER_LIST(clearer_factory_(this)) {
|
| + for (size_t i = 0; i < arraysize(shared_mem_cache_); ++i)
|
| shared_mem_cache_[i] = NULL;
|
| }
|
|
|
| @@ -48,6 +53,7 @@ RenderProcess::~RenderProcess() {
|
|
|
| // static
|
| bool RenderProcess::GlobalInit(const std::wstring &channel_name) {
|
| +#if defined(OS_WIN)
|
| // HACK: See http://b/issue?id=1024307 for rationale.
|
| if (GetModuleHandle(L"LPK.DLL") == NULL) {
|
| // Makes sure lpk.dll is loaded by gdi32 to make sure ExtTextOut() works
|
| @@ -62,6 +68,7 @@ bool RenderProcess::GlobalInit(const std::wstring &channel_name) {
|
| gdi_init_lpk(0);
|
| }
|
| }
|
| +#endif
|
|
|
| const CommandLine& command_line = *CommandLine::ForCurrentProcess();
|
| if (command_line.HasSwitch(switches::kJavaScriptFlags)) {
|
| @@ -86,11 +93,16 @@ bool RenderProcess::GlobalInit(const std::wstring &channel_name) {
|
| }
|
|
|
| if (command_line.HasSwitch(switches::kGearsInRenderer)) {
|
| +#if defined(OS_WIN)
|
| // Load gears.dll on startup so we can access it before the sandbox
|
| // blocks us.
|
| std::wstring path;
|
| if (PathService::Get(chrome::FILE_GEARS_PLUGIN, &path))
|
| LoadLibrary(path.c_str());
|
| +#else
|
| + // TODO(port) Need to handle loading gears on non-Windows platforms
|
| + NOTIMPLEMENTED();
|
| +#endif
|
| }
|
|
|
| ChildProcessFactory<RenderProcess> factory;
|
| @@ -116,11 +128,9 @@ base::SharedMemory* RenderProcess::AllocSharedMemory(size_t size) {
|
| return mem;
|
|
|
| // Round-up size to allocation granularity
|
| - SYSTEM_INFO info;
|
| - GetSystemInfo(&info);
|
| -
|
| - size = size / info.dwAllocationGranularity + 1;
|
| - size = size * info.dwAllocationGranularity;
|
| + size_t allocation_granularity = base::SysInfo::VMAllocationGranularity();
|
| + size = size / allocation_granularity + 1;
|
| + size = size * allocation_granularity;
|
|
|
| mem = new base::SharedMemory();
|
| if (!mem)
|
| @@ -149,7 +159,7 @@ void RenderProcess::DeleteSharedMem(base::SharedMemory* mem) {
|
|
|
| base::SharedMemory* RenderProcess::GetSharedMemFromCache(size_t size) {
|
| // look for a cached object that is suitable for the requested size.
|
| - for (int i = 0; i < arraysize(shared_mem_cache_); ++i) {
|
| + for (size_t i = 0; i < arraysize(shared_mem_cache_); ++i) {
|
| base::SharedMemory* mem = shared_mem_cache_[i];
|
| if (mem && mem->max_size() >= size) {
|
| shared_mem_cache_[i] = NULL;
|
| @@ -164,13 +174,13 @@ bool RenderProcess::PutSharedMemInCache(base::SharedMemory* mem) {
|
| // - look for an empty slot to store mem, or
|
| // - if full, then replace any existing cache entry that is smaller than the
|
| // given shared memory object.
|
| - for (int i = 0; i < arraysize(shared_mem_cache_); ++i) {
|
| + for (size_t i = 0; i < arraysize(shared_mem_cache_); ++i) {
|
| if (!shared_mem_cache_[i]) {
|
| shared_mem_cache_[i] = mem;
|
| return true;
|
| }
|
| }
|
| - for (int i = 0; i < arraysize(shared_mem_cache_); ++i) {
|
| + for (size_t i = 0; i < arraysize(shared_mem_cache_); ++i) {
|
| base::SharedMemory* cached_mem = shared_mem_cache_[i];
|
| if (cached_mem->max_size() < mem->max_size()) {
|
| shared_mem_cache_[i] = mem;
|
| @@ -182,7 +192,7 @@ bool RenderProcess::PutSharedMemInCache(base::SharedMemory* mem) {
|
| }
|
|
|
| void RenderProcess::ClearSharedMemCache() {
|
| - for (int i = 0; i < arraysize(shared_mem_cache_); ++i) {
|
| + for (size_t i = 0; i < arraysize(shared_mem_cache_); ++i) {
|
| if (shared_mem_cache_[i]) {
|
| DeleteSharedMem(shared_mem_cache_[i]);
|
| shared_mem_cache_[i] = NULL;
|
| @@ -206,4 +216,3 @@ void RenderProcess::Cleanup() {
|
| webkit_glue::CheckForLeaks();
|
| #endif
|
| }
|
| -
|
|
|