summaryrefslogtreecommitdiffstats
path: root/components/content_settings/core/common/content_settings.cc
blob: ef9d364b8cfbb547c4480349eee807ac244d6c8f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// 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 "components/content_settings/core/common/content_settings.h"

#include "base/logging.h"

ContentSetting IntToContentSetting(int content_setting) {
  return ((content_setting < 0) ||
          (content_setting >= CONTENT_SETTING_NUM_SETTINGS)) ?
      CONTENT_SETTING_DEFAULT : static_cast<ContentSetting>(content_setting);
}

ContentSettingsTypeHistogram ContentSettingTypeToHistogramValue(
    ContentSettingsType content_setting) {
  switch (content_setting) {
    case CONTENT_SETTINGS_TYPE_DEFAULT:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_INVALID;
    case CONTENT_SETTINGS_TYPE_COOKIES:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_COOKIES;
    case CONTENT_SETTINGS_TYPE_IMAGES:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_IMAGES;
    case CONTENT_SETTINGS_TYPE_JAVASCRIPT:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_JAVASCRIPT;
    case CONTENT_SETTINGS_TYPE_PLUGINS:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_PLUGINS;
    case CONTENT_SETTINGS_TYPE_POPUPS:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_POPUPS;
    case CONTENT_SETTINGS_TYPE_GEOLOCATION:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_GEOLOCATION;
    case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_NOTIFICATIONS;
    case CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_AUTO_SELECT_CERTIFICATE;
    case CONTENT_SETTINGS_TYPE_FULLSCREEN:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_FULLSCREEN;
    case CONTENT_SETTINGS_TYPE_MOUSELOCK:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_MOUSELOCK;
    case CONTENT_SETTINGS_TYPE_MIXEDSCRIPT:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_MIXEDSCRIPT;
    case CONTENT_SETTINGS_TYPE_MEDIASTREAM:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_MEDIASTREAM;
    case CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_MEDIASTREAM_MIC;
    case CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_MEDIASTREAM_CAMERA;
    case CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_PROTOCOL_HANDLERS;
    case CONTENT_SETTINGS_TYPE_PPAPI_BROKER:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_PPAPI_BROKER;
    case CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_AUTOMATIC_DOWNLOADS;
    case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_MIDI_SYSEX;
    case CONTENT_SETTINGS_TYPE_PUSH_MESSAGING:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_PUSH_MESSAGING;
    case CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_SSL_CERT_DECISIONS;
#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
    case CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_PROTECTED_MEDIA_IDENTIFIER;
#endif
    case CONTENT_SETTINGS_TYPE_APP_BANNER:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_APP_BANNER;
    case CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_SITE_ENGAGEMENT;
    case CONTENT_SETTINGS_TYPE_DURABLE_STORAGE:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_DURABLE_STORAGE;
    case CONTENT_SETTINGS_NUM_TYPES:
      return CONTENT_SETTINGS_TYPE_HISTOGRAM_INVALID;
  }
  NOTREACHED();
  return CONTENT_SETTINGS_TYPE_HISTOGRAM_INVALID;
}

bool IsContentSettingsTypeSyncable(ContentSettingsType content_setting) {
  switch (content_setting) {
    case CONTENT_SETTINGS_TYPE_COOKIES:
    case CONTENT_SETTINGS_TYPE_IMAGES:
    case CONTENT_SETTINGS_TYPE_JAVASCRIPT:
    case CONTENT_SETTINGS_TYPE_PLUGINS:
    case CONTENT_SETTINGS_TYPE_POPUPS:
    case CONTENT_SETTINGS_TYPE_FULLSCREEN:
    case CONTENT_SETTINGS_TYPE_MOUSELOCK:
    case CONTENT_SETTINGS_TYPE_MIXEDSCRIPT:
    case CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS:
    case CONTENT_SETTINGS_TYPE_AUTOMATIC_DOWNLOADS:
    case CONTENT_SETTINGS_TYPE_MIDI_SYSEX:
    case CONTENT_SETTINGS_TYPE_PUSH_MESSAGING:
      return true;

    case CONTENT_SETTINGS_TYPE_GEOLOCATION:
    case CONTENT_SETTINGS_TYPE_NOTIFICATIONS:
    case CONTENT_SETTINGS_TYPE_AUTO_SELECT_CERTIFICATE:
    case CONTENT_SETTINGS_TYPE_MEDIASTREAM:
    case CONTENT_SETTINGS_TYPE_MEDIASTREAM_MIC:
    case CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA:
    case CONTENT_SETTINGS_TYPE_PPAPI_BROKER:
    case CONTENT_SETTINGS_TYPE_SSL_CERT_DECISIONS:
#if defined(OS_ANDROID) || defined(OS_CHROMEOS)
    case CONTENT_SETTINGS_TYPE_PROTECTED_MEDIA_IDENTIFIER:
#endif
    case CONTENT_SETTINGS_TYPE_APP_BANNER:
    case CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT:
    case CONTENT_SETTINGS_TYPE_DURABLE_STORAGE:
      return false;

    case CONTENT_SETTINGS_TYPE_DEFAULT:
    case CONTENT_SETTINGS_NUM_TYPES:
      NOTREACHED();
      return false;
  }
  NOTREACHED();
  return false;
}

bool IsContentSettingsTypeLossy(ContentSettingsType content_setting) {
  return content_setting == CONTENT_SETTINGS_TYPE_APP_BANNER ||
         content_setting == CONTENT_SETTINGS_TYPE_SITE_ENGAGEMENT;
}

ContentSettingPatternSource::ContentSettingPatternSource(
    const ContentSettingsPattern& primary_pattern,
    const ContentSettingsPattern& secondary_pattern,
    ContentSetting setting,
    const std::string& source,
    bool incognito)
    : primary_pattern(primary_pattern),
      secondary_pattern(secondary_pattern),
      setting(setting),
      source(source),
      incognito(incognito) {}

ContentSettingPatternSource::ContentSettingPatternSource()
    : setting(CONTENT_SETTING_DEFAULT), incognito(false) {
}

RendererContentSettingRules::RendererContentSettingRules() {}

RendererContentSettingRules::~RendererContentSettingRules() {}