172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved.
206741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch// Use of this source code is governed by a BSD-style license that can be
306741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch// found in the LICENSE file.
406741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
506741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch#include "chrome/common/common_param_traits.h"
606741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
7ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "ipc/ipc_message.h"
8ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "ipc/ipc_message_utils.h"
906741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
1006741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdochnamespace IPC {
1106741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
1206741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdochvoid ParamTraits<ContentSetting>::Write(Message* m, const param_type& p) {
13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  m->WriteInt(static_cast<int>(p));
1406741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch}
1506741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
1606741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdochbool ParamTraits<ContentSetting>::Read(const Message* m, void** iter,
17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                                       param_type* p) {
18ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  int type;
19ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  if (!m->ReadInt(iter, &type))
2006741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch    return false;
21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  *p = static_cast<param_type>(type);
2206741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch  return true;
2306741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch}
2406741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
253345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrickvoid ParamTraits<ContentSetting>::Log(const param_type& p, std::string* l) {
26ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  std::string content_setting;
27ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  switch (p) {
28ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    case CONTENT_SETTING_DEFAULT:
29ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      content_setting = "CONTENT_SETTING_DEFAULT";
30ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      break;
31ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    case CONTENT_SETTING_ALLOW:
32ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      content_setting = "CONTENT_SETTING_ALLOW";
33ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      break;
34ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    case CONTENT_SETTING_BLOCK:
35ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      content_setting = "CONTENT_SETTING_BLOCK";
36ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      break;
37ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    case CONTENT_SETTING_ASK:
38ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      content_setting = "CONTENT_SETTING_ASK";
39ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      break;
40ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    case CONTENT_SETTING_SESSION_ONLY:
41ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      content_setting = "CONTENT_SETTING_SESSION_ONLY";
42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      break;
43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    default:
44ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      content_setting = "UNKNOWN";
45ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      break;
4606741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch  }
47ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  LogParam(content_setting, l);
4806741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch}
4906741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
50ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ParamTraits<ContentSettingsType>::Write(Message* m, const param_type& p) {
51ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  m->WriteInt(static_cast<int>(p));
5206741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch}
5306741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
54ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenbool ParamTraits<ContentSettingsType>::Read(const Message* m, void** iter,
55ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                                       param_type* p) {
56ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  int type;
57ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  if (!m->ReadInt(iter, &type))
5806741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch    return false;
59ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  *p = static_cast<param_type>(type);
6006741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch  return true;
6106741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch}
6206741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch
63ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenvoid ParamTraits<ContentSettingsType>::Log(const param_type& p,
64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen                                           std::string* l) {
65ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  std::string setting_type;
66ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  switch (p) {
67ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    case CONTENT_SETTINGS_TYPE_DEFAULT:
68ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      setting_type = "CONTENT_SETTINGS_TYPE_DEFAULT";
69ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      break;
70ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    case CONTENT_SETTINGS_TYPE_COOKIES:
71ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      setting_type = "CONTENT_SETTINGS_TYPE_COOKIES";
72ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      break;
73ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    case CONTENT_SETTINGS_TYPE_IMAGES:
74ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      setting_type = "CONTENT_SETTINGS_TYPE_IMAGES";
75ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      break;
76ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    case CONTENT_SETTINGS_TYPE_JAVASCRIPT:
77ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      setting_type = "CONTENT_SETTINGS_TYPE_JAVASCRIPT";
78ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      break;
79ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    case CONTENT_SETTINGS_TYPE_PLUGINS:
80ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      setting_type = "CONTENT_SETTINGS_TYPE_PLUGINS";
81ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      break;
82ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    case CONTENT_SETTINGS_TYPE_POPUPS:
83ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      setting_type = "CONTENT_SETTINGS_TYPE_POPUPS";
84ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      break;
85ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    case CONTENT_SETTINGS_TYPE_GEOLOCATION:
86ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      setting_type = "CONTENT_SETTINGS_TYPE_GEOLOCATION";
87ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      break;
88ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
89ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      setting_type = "CONTENT_SETTINGS_TYPE_NOTIFICATIONS";
90ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      break;
91ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    case CONTENT_SETTINGS_TYPE_PRERENDER:
92ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      setting_type = "CONTENT_SETTINGS_TYPE_PRERENDER";
93ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      break;
94ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen    default:
95ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      setting_type = "UNKNOWN";
96ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen      break;
9706741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch  }
98ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  LogParam(setting_type, l);
9921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen}
10021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen
10106741cbc25cd4227a9fba40dfd0273bfcc1a587aBen Murdoch}  // namespace IPC
102