Skip to content

Commit

Permalink
Moved ParamTraits specializations that depend on WebKit out of conten…
Browse files Browse the repository at this point in the history
…t/common/common_param_traits and into webkit_param_traits. Also pulled some specializations out of chrome/common/render_messages and into chrome/common/common_param_traits. This is done so that the MS toolchain can succeed in discarding more code at link time. This halves the size of npchrome_frame.dll in ordinary "Release" builds. I hope for a similar reduction in official builds.

BUG=77445
TEST=Everything should just work(TM).

Review URL: http://codereview.chromium.org/6840044

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@81803 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
grt@chromium.org committed Apr 15, 2011
1 parent ea2a7b9 commit 79d68c6
Show file tree
Hide file tree
Showing 20 changed files with 768 additions and 599 deletions.
1 change: 1 addition & 0 deletions chrome/browser/importer/profile_import_process_messages.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "chrome/browser/importer/profile_writer.h"
#include "chrome/browser/search_engines/template_url.h"
#include "content/common/common_param_traits.h"
#include "content/common/webkit_param_traits.h"
#include "ipc/ipc_message_macros.h"
#include "ipc/ipc_message_utils.h"
#include "webkit/glue/password_form.h"
Expand Down
2 changes: 2 additions & 0 deletions chrome/chrome_common.gypi
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,8 @@
'common/common_glue.cc',
'common/common_message_generator.cc',
'common/common_message_generator.h',
'common/common_param_traits.cc',
'common/common_param_traits.h',
'common/default_plugin.cc',
'common/default_plugin.h',
'common/deprecated/event_sys-inl.h',
Expand Down
1 change: 1 addition & 0 deletions chrome/common/autofill_messages.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

#include <string>

#include "content/common/webkit_param_traits.h"
#include "ipc/ipc_message_macros.h"
#include "webkit/glue/form_data.h"
#include "webkit/glue/form_field.h"
Expand Down
18 changes: 1 addition & 17 deletions chrome/common/automation_messages.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "chrome/common/common_param_traits.h"
#include "content/common/common_param_traits.h"

#define IPC_MESSAGE_IMPL
Expand Down Expand Up @@ -677,21 +678,4 @@ void ParamTraits<AttachExternalTabParams>::Log(const param_type& p,
l->append(")");
}

// The traits for these are defined in render_messages.h
template <>
struct ParamTraits<ContentSetting> {
typedef ContentSetting param_type;
static void Write(Message* m, const param_type& p);
static bool Read(const Message* m, void** iter, param_type* p);
static void Log(const param_type& p, std::string* l);
};

template <>
struct ParamTraits<ContentSettingsType> {
typedef ContentSettingsType param_type;
static void Write(Message* m, const param_type& p);
static bool Read(const Message* m, void** iter, param_type* p);
static void Log(const param_type& p, std::string* l);
};

} // namespace IPC
3 changes: 2 additions & 1 deletion chrome/common/automation_messages.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Copyright (c) 2011 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.

Expand All @@ -11,6 +11,7 @@
#include "chrome/common/security_style.h"
#include "content/common/common_param_traits.h"
#include "content/common/page_type.h"
#include "content/common/webkit_param_traits.h"
#include "ipc/ipc_message_macros.h"
#include "ipc/ipc_message_utils.h"
#include "net/base/host_port_pair.h"
Expand Down
101 changes: 101 additions & 0 deletions chrome/common/common_param_traits.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
// Copyright (c) 2011 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 "chrome/common/common_param_traits.h"

#include "ipc/ipc_message.h"
#include "ipc/ipc_message_utils.h"

namespace IPC {

void ParamTraits<ContentSetting>::Write(Message* m, const param_type& p) {
m->WriteInt(static_cast<int>(p));
}

bool ParamTraits<ContentSetting>::Read(const Message* m, void** iter,
param_type* p) {
int type;
if (!m->ReadInt(iter, &type))
return false;
*p = static_cast<param_type>(type);
return true;
}

void ParamTraits<ContentSetting>::Log(const param_type& p, std::string* l) {
std::string content_setting;
switch (p) {
case CONTENT_SETTING_DEFAULT:
content_setting = "CONTENT_SETTING_DEFAULT";
break;
case CONTENT_SETTING_ALLOW:
content_setting = "CONTENT_SETTING_ALLOW";
break;
case CONTENT_SETTING_BLOCK:
content_setting = "CONTENT_SETTING_BLOCK";
break;
case CONTENT_SETTING_ASK:
content_setting = "CONTENT_SETTING_ASK";
break;
case CONTENT_SETTING_SESSION_ONLY:
content_setting = "CONTENT_SETTING_SESSION_ONLY";
break;
default:
content_setting = "UNKNOWN";
break;
}
LogParam(content_setting, l);
}

void ParamTraits<ContentSettingsType>::Write(Message* m, const param_type& p) {
m->WriteInt(static_cast<int>(p));
}

bool ParamTraits<ContentSettingsType>::Read(const Message* m, void** iter,
param_type* p) {
int type;
if (!m->ReadInt(iter, &type))
return false;
*p = static_cast<param_type>(type);
return true;
}

void ParamTraits<ContentSettingsType>::Log(const param_type& p,
std::string* l) {
std::string setting_type;
switch (p) {
case CONTENT_SETTINGS_TYPE_DEFAULT:
setting_type = "CONTENT_SETTINGS_TYPE_DEFAULT";
break;
case CONTENT_SETTINGS_TYPE_COOKIES:
setting_type = "CONTENT_SETTINGS_TYPE_COOKIES";
break;
case CONTENT_SETTINGS_TYPE_IMAGES:
setting_type = "CONTENT_SETTINGS_TYPE_IMAGES";
break;
case CONTENT_SETTINGS_TYPE_JAVASCRIPT:
setting_type = "CONTENT_SETTINGS_TYPE_JAVASCRIPT";
break;
case CONTENT_SETTINGS_TYPE_PLUGINS:
setting_type = "CONTENT_SETTINGS_TYPE_PLUGINS";
break;
case CONTENT_SETTINGS_TYPE_POPUPS:
setting_type = "CONTENT_SETTINGS_TYPE_POPUPS";
break;
case CONTENT_SETTINGS_TYPE_GEOLOCATION:
setting_type = "CONTENT_SETTINGS_TYPE_GEOLOCATION";
break;
case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
setting_type = "CONTENT_SETTINGS_TYPE_NOTIFICATIONS";
break;
case CONTENT_SETTINGS_TYPE_PRERENDER:
setting_type = "CONTENT_SETTINGS_TYPE_PRERENDER";
break;
default:
setting_type = "UNKNOWN";
break;
}
LogParam(setting_type, l);
}

} // namespace IPC
36 changes: 36 additions & 0 deletions chrome/common/common_param_traits.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// Copyright (c) 2011 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.

#ifndef CHROME_COMMON_COMMON_PARAM_TRAITS_H_
#define CHROME_COMMON_COMMON_PARAM_TRAITS_H_
#pragma once

#include <string>

#include "chrome/common/content_settings.h"
#include "ipc/ipc_param_traits.h"

namespace IPC {

class Message;

template <>
struct ParamTraits<ContentSetting> {
typedef ContentSetting param_type;
static void Write(Message* m, const param_type& p);
static bool Read(const Message* m, void** iter, param_type* p);
static void Log(const param_type& p, std::string* l);
};

template <>
struct ParamTraits<ContentSettingsType> {
typedef ContentSettingsType param_type;
static void Write(Message* m, const param_type& p);
static bool Read(const Message* m, void** iter, param_type* p);
static void Log(const param_type& p, std::string* l);
};

} // namespace IPC

#endif // CHROME_COMMON_COMMON_PARAM_TRAITS_H_
4 changes: 1 addition & 3 deletions chrome/common/render_messages.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
#include "base/string16.h"
#include "base/values.h"
#include "build/build_config.h"
#include "chrome/common/content_settings.h"
#include "chrome/common/common_param_traits.h"
#include "chrome/common/icon_messages.h"
#include "chrome/common/instant_types.h"
#include "chrome/common/nacl_types.h"
Expand Down Expand Up @@ -99,8 +99,6 @@ struct ParamTraits<ContentSettings> {

#define IPC_MESSAGE_START ChromeMsgStart

IPC_ENUM_TRAITS(ContentSetting)
IPC_ENUM_TRAITS(ContentSettingsType)
IPC_ENUM_TRAITS(InstantCompleteBehavior)
IPC_ENUM_TRAITS(prerender::PrerenderCancellationReason)
IPC_ENUM_TRAITS(search_provider::OSDDType)
Expand Down
1 change: 1 addition & 0 deletions chrome/renderer/blocked_plugin.cc
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include "third_party/WebKit/Source/WebKit/chromium/public/WebData.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebMenuItemInfo.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebPluginContainer.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebPoint.h"
Expand Down
1 change: 0 additions & 1 deletion chrome_frame/chrome_frame.gyp
Original file line number Diff line number Diff line change
Expand Up @@ -890,7 +890,6 @@
'../chrome/chrome.gyp:chrome_dll',
'../chrome/chrome.gyp:chrome_dll_version',
'../chrome/chrome.gyp:common',
'../chrome/chrome.gyp:utility',
],
'sources': [
'chrome_frame_elevation.rgs',
Expand Down
Loading

0 comments on commit 79d68c6

Please sign in to comment.