diff options
author | grt@chromium.org <grt@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-15 21:07:03 +0000 |
---|---|---|
committer | grt@chromium.org <grt@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-15 21:07:03 +0000 |
commit | 79d68c6ea3f0ee22789e04bcdcdf64841618f2c1 (patch) | |
tree | 99e371bf8e2be6bdbf3ea7a0b24bd50e5eb1cc20 /chrome/common/common_param_traits.cc | |
parent | ea2a7b919337fb796c8602f1701b60d8fa2d7f42 (diff) | |
download | chromium_src-79d68c6ea3f0ee22789e04bcdcdf64841618f2c1.zip chromium_src-79d68c6ea3f0ee22789e04bcdcdf64841618f2c1.tar.gz chromium_src-79d68c6ea3f0ee22789e04bcdcdf64841618f2c1.tar.bz2 |
Moved ParamTraits specializations that depend on WebKit out of content/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
Diffstat (limited to 'chrome/common/common_param_traits.cc')
-rw-r--r-- | chrome/common/common_param_traits.cc | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/chrome/common/common_param_traits.cc b/chrome/common/common_param_traits.cc new file mode 100644 index 0000000..4f2a1e4 --- /dev/null +++ b/chrome/common/common_param_traits.cc @@ -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 |