Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(350)

Side by Side Diff: chrome/common/renderer_configuration_struct_traits.cc

Issue 2582203003: Convert SetContentSettingRules to use mojo, part 1/2. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/common/renderer_configuration_struct_traits.h"
6
7 namespace mojo {
8
9 // static
10
11 chrome::mojom::ContentSetting
12 EnumTraits<chrome::mojom::ContentSetting, ContentSetting>::ToMojom(
13 ContentSetting setting) {
14 switch (setting) {
15 case CONTENT_SETTING_DEFAULT:
16 return chrome::mojom::ContentSetting::CONTENT_SETTING_DEFAULT;
17 case CONTENT_SETTING_ALLOW:
18 return chrome::mojom::ContentSetting::CONTENT_SETTING_ALLOW;
19 case CONTENT_SETTING_BLOCK:
20 return chrome::mojom::ContentSetting::CONTENT_SETTING_BLOCK;
21 case CONTENT_SETTING_ASK:
22 return chrome::mojom::ContentSetting::CONTENT_SETTING_ASK;
23 case CONTENT_SETTING_SESSION_ONLY:
24 return chrome::mojom::ContentSetting::CONTENT_SETTING_SESSION_ONLY;
25 case CONTENT_SETTING_DETECT_IMPORTANT_CONTENT:
26 return chrome::mojom::ContentSetting::
27 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT;
28 // XXX: Should we really catch the "NUM_SETTINGS" dummy value that defines
Sam McNally 2016/12/19 00:17:51 I think I would leave it out of the mojom enum ent
nigeltao1 2016/12/22 04:09:46 Done.
29 // a convenient constant for the number of enum values, not a semantically
30 // valid enum value in its own right? Ditto below.
31 case CONTENT_SETTING_NUM_SETTINGS:
32 return chrome::mojom::ContentSetting::CONTENT_SETTING_NUM_SETTINGS;
33 default:
Sam McNally 2016/12/19 00:17:51 Put the catchall outside the switch instead of usi
nigeltao1 2016/12/22 04:09:46 Done.
34 // XXX: The NOTREACHED here mimics the one in
35 // ui/base/mojo/window_open_disposition_enum_traits.h
36 //
37 // Can we really assert NOTREACHED if Mojo messages can come from
38 // malicious renderers? Ditto below.
Sam McNally 2016/12/19 00:17:51 Yes. This NOTREACHED would be hit in the sender of
nigeltao1 2016/12/22 04:09:46 Acknowledged.
39 NOTREACHED();
40 return chrome::mojom::ContentSetting::CONTENT_SETTING_DEFAULT;
41 }
42 }
43
44 // static
45 bool EnumTraits<chrome::mojom::ContentSetting, ContentSetting>::FromMojom(
46 chrome::mojom::ContentSetting setting,
47 ContentSetting* out) {
48 switch (setting) {
49 case chrome::mojom::ContentSetting::CONTENT_SETTING_DEFAULT:
50 *out = CONTENT_SETTING_DEFAULT;
51 return true;
52 case chrome::mojom::ContentSetting::CONTENT_SETTING_ALLOW:
53 *out = CONTENT_SETTING_ALLOW;
54 return true;
55 case chrome::mojom::ContentSetting::CONTENT_SETTING_BLOCK:
56 *out = CONTENT_SETTING_BLOCK;
57 return true;
58 case chrome::mojom::ContentSetting::CONTENT_SETTING_ASK:
59 *out = CONTENT_SETTING_ASK;
60 return true;
61 case chrome::mojom::ContentSetting::CONTENT_SETTING_SESSION_ONLY:
62 *out = CONTENT_SETTING_SESSION_ONLY;
63 return true;
64 case chrome::mojom::ContentSetting::
65 CONTENT_SETTING_DETECT_IMPORTANT_CONTENT:
66 *out = CONTENT_SETTING_DETECT_IMPORTANT_CONTENT;
67 return true;
68 case chrome::mojom::ContentSetting::CONTENT_SETTING_NUM_SETTINGS:
69 *out = CONTENT_SETTING_NUM_SETTINGS;
70 return true;
71 default:
72 NOTREACHED();
Sam McNally 2016/12/19 00:17:51 Again, move this out of the switch. I think it mak
nigeltao1 2016/12/22 04:09:45 Done.
73 return false;
74 }
75 }
76
77 // Note that the {primary,secondary}_pattern methods aren't simple getters.
78 // They serialize the ContentSettingsPattern to a string.
79
80 // static
81 const std::string
Sam McNally 2016/12/19 00:17:51 This is inefficient. This accessor is called twice
nigeltao1 2016/12/22 04:09:45 No longer applicable, as I serialize the underlyin
82 StructTraits<chrome::mojom::ContentSettingPatternSourceDataView,
83 ContentSettingPatternSource>::
84 primary_pattern(const ContentSettingPatternSource& r) {
85 return r.primary_pattern.ToString();
86 }
87
88 // static
89 const std::string
90 StructTraits<chrome::mojom::ContentSettingPatternSourceDataView,
91 ContentSettingPatternSource>::
92 secondary_pattern(const ContentSettingPatternSource& r) {
93 return r.secondary_pattern.ToString();
94 }
95
96 // static
97 ContentSetting StructTraits<chrome::mojom::ContentSettingPatternSourceDataView,
98 ContentSettingPatternSource>::
99 setting(const ContentSettingPatternSource& r) {
100 return r.setting;
101 }
102
103 // static
104 const std::string& StructTraits<
105 chrome::mojom::ContentSettingPatternSourceDataView,
106 ContentSettingPatternSource>::source(const ContentSettingPatternSource& r) {
107 return r.source;
108 }
109
110 // static
111 bool StructTraits<chrome::mojom::ContentSettingPatternSourceDataView,
112 ContentSettingPatternSource>::
113 incognito(const ContentSettingPatternSource& r) {
114 return r.incognito;
115 }
116
117 // static
118 bool StructTraits<chrome::mojom::ContentSettingPatternSourceDataView,
119 ContentSettingPatternSource>::
120 Read(chrome::mojom::ContentSettingPatternSourceDataView data,
121 ContentSettingPatternSource* out) {
122 std::string primary_pattern;
123 std::string secondary_pattern;
124 if (!data.ReadPrimaryPattern(&primary_pattern) ||
125 !data.ReadSecondaryPattern(&secondary_pattern) ||
126 !data.ReadSetting(&out->setting) || !data.ReadSource(&out->source))
127 return false;
128 out->primary_pattern = ContentSettingsPattern::FromString(primary_pattern);
129 out->secondary_pattern =
130 ContentSettingsPattern::FromString(secondary_pattern);
131 out->incognito = data.incognito();
132 return true;
133 }
134
135 // static
136 const std::vector<ContentSettingPatternSource>& StructTraits<
137 chrome::mojom::RendererContentSettingRulesDataView,
138 RendererContentSettingRules>::image_rules(const RendererContentSettingRules&
139 r) {
140 return r.image_rules;
141 }
142
143 // static
144 const std::vector<ContentSettingPatternSource>&
145 StructTraits<chrome::mojom::RendererContentSettingRulesDataView,
146 RendererContentSettingRules>::
147 script_rules(const RendererContentSettingRules& r) {
148 return r.script_rules;
149 }
150
151 // static
152 const std::vector<ContentSettingPatternSource>&
153 StructTraits<chrome::mojom::RendererContentSettingRulesDataView,
154 RendererContentSettingRules>::
155 autoplay_rules(const RendererContentSettingRules& r) {
156 return r.autoplay_rules;
157 }
158
159 // static
160 bool StructTraits<chrome::mojom::RendererContentSettingRulesDataView,
161 RendererContentSettingRules>::
162 Read(chrome::mojom::RendererContentSettingRulesDataView data,
163 RendererContentSettingRules* out) {
164 return data.ReadImageRules(&out->image_rules) &&
165 data.ReadScriptRules(&out->script_rules) &&
166 data.ReadAutoplayRules(&out->autoplay_rules);
167 }
168
169 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698