OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/content_settings/content_settings_internal_extension_pr
ovider.h" | 5 #include "chrome/browser/content_settings/content_settings_internal_extension_pr
ovider.h" |
6 | 6 |
7 #include "chrome/browser/chrome_notification_types.h" | |
8 #include "chrome/browser/content_settings/content_settings_rule.h" | 7 #include "chrome/browser/content_settings/content_settings_rule.h" |
9 #include "chrome/browser/extensions/extension_service.h" | 8 #include "chrome/browser/extensions/extension_service.h" |
10 #include "chrome/common/chrome_content_client.h" | 9 #include "chrome/common/chrome_content_client.h" |
11 #include "chrome/common/content_settings.h" | 10 #include "chrome/common/content_settings.h" |
12 #include "chrome/common/content_settings_pattern.h" | 11 #include "chrome/common/content_settings_pattern.h" |
13 #include "chrome/common/extensions/api/plugins/plugins_handler.h" | 12 #include "chrome/common/extensions/api/plugins/plugins_handler.h" |
14 #include "content/public/browser/browser_thread.h" | 13 #include "content/public/browser/browser_thread.h" |
15 #include "content/public/browser/notification_details.h" | 14 #include "content/public/browser/notification_details.h" |
16 #include "content/public/browser/notification_service.h" | 15 #include "content/public/browser/notification_service.h" |
17 #include "extensions/browser/extension_host.h" | 16 #include "extensions/browser/extension_host.h" |
| 17 #include "extensions/browser/notification_types.h" |
18 #include "extensions/common/constants.h" | 18 #include "extensions/common/constants.h" |
19 #include "extensions/common/extension.h" | 19 #include "extensions/common/extension.h" |
20 #include "extensions/common/extension_set.h" | 20 #include "extensions/common/extension_set.h" |
21 #include "extensions/common/features/simple_feature.h" | 21 #include "extensions/common/features/simple_feature.h" |
22 | 22 |
23 using extensions::UnloadedExtensionInfo; | 23 using extensions::UnloadedExtensionInfo; |
24 | 24 |
25 namespace content_settings { | 25 namespace content_settings { |
26 | 26 |
27 InternalExtensionProvider::InternalExtensionProvider( | 27 InternalExtensionProvider::InternalExtensionProvider( |
28 ExtensionService* extension_service) | 28 ExtensionService* extension_service) |
29 : registrar_(new content::NotificationRegistrar) { | 29 : registrar_(new content::NotificationRegistrar) { |
30 // Whitelist all extensions loaded so far. | 30 // Whitelist all extensions loaded so far. |
31 const extensions::ExtensionSet* extensions = extension_service->extensions(); | 31 const extensions::ExtensionSet* extensions = extension_service->extensions(); |
32 for (extensions::ExtensionSet::const_iterator it = extensions->begin(); | 32 for (extensions::ExtensionSet::const_iterator it = extensions->begin(); |
33 it != extensions->end(); ++it) { | 33 it != extensions->end(); ++it) { |
34 if (extensions::PluginInfo::HasPlugins(it->get())) | 34 if (extensions::PluginInfo::HasPlugins(it->get())) |
35 SetContentSettingForExtension(it->get(), CONTENT_SETTING_ALLOW); | 35 SetContentSettingForExtension(it->get(), CONTENT_SETTING_ALLOW); |
36 } | 36 } |
37 Profile* profile = extension_service->profile(); | 37 Profile* profile = extension_service->profile(); |
38 registrar_->Add(this, chrome::NOTIFICATION_EXTENSION_HOST_CREATED, | 38 registrar_->Add(this, |
| 39 extensions::NOTIFICATION_EXTENSION_HOST_CREATED, |
39 content::Source<Profile>(profile)); | 40 content::Source<Profile>(profile)); |
40 registrar_->Add(this, | 41 registrar_->Add(this, |
41 chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, | 42 extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED, |
42 content::Source<Profile>(profile)); | 43 content::Source<Profile>(profile)); |
43 registrar_->Add(this, chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, | 44 registrar_->Add(this, |
| 45 extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, |
44 content::Source<Profile>(profile)); | 46 content::Source<Profile>(profile)); |
45 } | 47 } |
46 | 48 |
47 InternalExtensionProvider::~InternalExtensionProvider() { | 49 InternalExtensionProvider::~InternalExtensionProvider() { |
48 DCHECK(!registrar_.get()); | 50 DCHECK(!registrar_.get()); |
49 } | 51 } |
50 | 52 |
51 RuleIterator* InternalExtensionProvider::GetRuleIterator( | 53 RuleIterator* InternalExtensionProvider::GetRuleIterator( |
52 ContentSettingsType content_type, | 54 ContentSettingsType content_type, |
53 const ResourceIdentifier& resource_identifier, | 55 const ResourceIdentifier& resource_identifier, |
(...skipping 10 matching lines...) Expand all Loading... |
64 return false; | 66 return false; |
65 } | 67 } |
66 | 68 |
67 void InternalExtensionProvider::ClearAllContentSettingsRules( | 69 void InternalExtensionProvider::ClearAllContentSettingsRules( |
68 ContentSettingsType content_type) {} | 70 ContentSettingsType content_type) {} |
69 | 71 |
70 void InternalExtensionProvider::Observe(int type, | 72 void InternalExtensionProvider::Observe(int type, |
71 const content::NotificationSource& source, | 73 const content::NotificationSource& source, |
72 const content::NotificationDetails& details) { | 74 const content::NotificationDetails& details) { |
73 switch (type) { | 75 switch (type) { |
74 case chrome::NOTIFICATION_EXTENSION_HOST_CREATED: { | 76 case extensions::NOTIFICATION_EXTENSION_HOST_CREATED: { |
75 const extensions::ExtensionHost* host = | 77 const extensions::ExtensionHost* host = |
76 content::Details<extensions::ExtensionHost>(details).ptr(); | 78 content::Details<extensions::ExtensionHost>(details).ptr(); |
77 if (host->extension()->is_platform_app()) { | 79 if (host->extension()->is_platform_app()) { |
78 SetContentSettingForExtension(host->extension(), CONTENT_SETTING_BLOCK); | 80 SetContentSettingForExtension(host->extension(), CONTENT_SETTING_BLOCK); |
79 | 81 |
80 // White-list CRD's v2 app, until crbug.com/134216 is complete. | 82 // White-list CRD's v2 app, until crbug.com/134216 is complete. |
81 const char* kAppWhitelist[] = { | 83 const char* kAppWhitelist[] = { |
82 "2775E568AC98F9578791F1EAB65A1BF5F8CEF414", | 84 "2775E568AC98F9578791F1EAB65A1BF5F8CEF414", |
83 "4AA3C5D69A4AECBD236CAD7884502209F0F5C169", | 85 "4AA3C5D69A4AECBD236CAD7884502209F0F5C169", |
84 "97B23E01B2AA064E8332EE43A7A85C628AADC3F2", | 86 "97B23E01B2AA064E8332EE43A7A85C628AADC3F2", |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 kAppWhitelist, kAppWhitelist + arraysize(kAppWhitelist)))) { | 128 kAppWhitelist, kAppWhitelist + arraysize(kAppWhitelist)))) { |
127 SetContentSettingForExtensionAndResource( | 129 SetContentSettingForExtensionAndResource( |
128 host->extension(), | 130 host->extension(), |
129 ChromeContentClient::kRemotingViewerPluginPath, | 131 ChromeContentClient::kRemotingViewerPluginPath, |
130 CONTENT_SETTING_ALLOW); | 132 CONTENT_SETTING_ALLOW); |
131 } | 133 } |
132 } | 134 } |
133 | 135 |
134 break; | 136 break; |
135 } | 137 } |
136 case chrome::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: { | 138 case extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: { |
137 const extensions::Extension* extension = | 139 const extensions::Extension* extension = |
138 content::Details<extensions::Extension>(details).ptr(); | 140 content::Details<extensions::Extension>(details).ptr(); |
139 if (extensions::PluginInfo::HasPlugins(extension)) | 141 if (extensions::PluginInfo::HasPlugins(extension)) |
140 SetContentSettingForExtension(extension, CONTENT_SETTING_ALLOW); | 142 SetContentSettingForExtension(extension, CONTENT_SETTING_ALLOW); |
141 break; | 143 break; |
142 } | 144 } |
143 case chrome::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: { | 145 case extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED: { |
144 const UnloadedExtensionInfo& info = | 146 const UnloadedExtensionInfo& info = |
145 *(content::Details<UnloadedExtensionInfo>(details).ptr()); | 147 *(content::Details<UnloadedExtensionInfo>(details).ptr()); |
146 if (extensions::PluginInfo::HasPlugins(info.extension)) | 148 if (extensions::PluginInfo::HasPlugins(info.extension)) |
147 SetContentSettingForExtension(info.extension, CONTENT_SETTING_DEFAULT); | 149 SetContentSettingForExtension(info.extension, CONTENT_SETTING_DEFAULT); |
148 break; | 150 break; |
149 } | 151 } |
150 default: | 152 default: |
151 NOTREACHED(); | 153 NOTREACHED(); |
152 } | 154 } |
153 } | 155 } |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 new base::FundamentalValue(setting)); | 194 new base::FundamentalValue(setting)); |
193 } | 195 } |
194 } | 196 } |
195 NotifyObservers(primary_pattern, | 197 NotifyObservers(primary_pattern, |
196 secondary_pattern, | 198 secondary_pattern, |
197 CONTENT_SETTINGS_TYPE_PLUGINS, | 199 CONTENT_SETTINGS_TYPE_PLUGINS, |
198 resource); | 200 resource); |
199 } | 201 } |
200 | 202 |
201 } // namespace content_settings | 203 } // namespace content_settings |
OLD | NEW |