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

Side by Side Diff: chrome/browser/plugin_prefs.cc

Issue 7693030: Add a preference to force enable the NaCl plugin as we transition to (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 4 months 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | chrome/browser/ui/webui/plugins_ui.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/plugin_prefs.h" 5 #include "chrome/browser/plugin_prefs.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 PathService::Get(chrome::FILE_PDF_PLUGIN, &pdf_path); 203 PathService::Get(chrome::FILE_PDF_PLUGIN, &pdf_path);
204 FilePath::StringType pdf_path_str = pdf_path.value(); 204 FilePath::StringType pdf_path_str = pdf_path.value();
205 if (!prefs_->GetBoolean(prefs::kPluginsEnabledInternalPDF)) { 205 if (!prefs_->GetBoolean(prefs::kPluginsEnabledInternalPDF)) {
206 // We switched to the internal pdf plugin being on by default, and so we 206 // We switched to the internal pdf plugin being on by default, and so we
207 // need to force it to be enabled. We only want to do it this once though, 207 // need to force it to be enabled. We only want to do it this once though,
208 // i.e. we don't want to enable it again if the user disables it afterwards. 208 // i.e. we don't want to enable it again if the user disables it afterwards.
209 prefs_->SetBoolean(prefs::kPluginsEnabledInternalPDF, true); 209 prefs_->SetBoolean(prefs::kPluginsEnabledInternalPDF, true);
210 force_enable_internal_pdf = true; 210 force_enable_internal_pdf = true;
211 } 211 }
212 212
213 bool force_enable_nacl = false;
214 string16 nacl_group_name =
215 ASCIIToUTF16(chrome::ChromeContentClient::kNaClPluginName);
216 // Since the NaCl Plugin changed names between Chrome 13 and 14, we need to
217 // check for both because either could be stored as the plugin group name.
218 string16 old_nacl_group_name =
219 ASCIIToUTF16(chrome::ChromeContentClient::kNaClOldPluginName);
220 FilePath nacl_path;
221 PathService::Get(chrome::FILE_NACL_PLUGIN, &nacl_path);
222 FilePath::StringType nacl_path_str = nacl_path.value();
223 if (!prefs_->GetBoolean(prefs::kPluginsEnabledNaCl)) {
224 // We switched to the nacl plugin being on by default, and so we need to
225 // force it to be enabled. We only want to do it this once though, i.e.
226 // we don't want to enable it again if the user disables it afterwards.
227 prefs_->SetBoolean(prefs::kPluginsEnabledNaCl, true);
228 force_enable_nacl = true;
229 }
230
213 { // Scoped update of prefs::kPluginsPluginsList. 231 { // Scoped update of prefs::kPluginsPluginsList.
214 ListPrefUpdate update(prefs_, prefs::kPluginsPluginsList); 232 ListPrefUpdate update(prefs_, prefs::kPluginsPluginsList);
215 ListValue* saved_plugins_list = update.Get(); 233 ListValue* saved_plugins_list = update.Get();
216 if (saved_plugins_list && !saved_plugins_list->empty()) { 234 if (saved_plugins_list && !saved_plugins_list->empty()) {
217 for (ListValue::const_iterator it = saved_plugins_list->begin(); 235 for (ListValue::const_iterator it = saved_plugins_list->begin();
218 it != saved_plugins_list->end(); 236 it != saved_plugins_list->end();
219 ++it) { 237 ++it) {
220 if (!(*it)->IsType(Value::TYPE_DICTIONARY)) { 238 if (!(*it)->IsType(Value::TYPE_DICTIONARY)) {
221 LOG(WARNING) << "Invalid entry in " << prefs::kPluginsPluginsList; 239 LOG(WARNING) << "Invalid entry in " << prefs::kPluginsPluginsList;
222 continue; // Oops, don't know what to do with this item. 240 continue; // Oops, don't know what to do with this item.
(...skipping 21 matching lines...) Expand all
244 plugin->SetString("path", path); 262 plugin->SetString("path", path);
245 } 263 }
246 264
247 if (FilePath::CompareIgnoreCase(path, pdf_path_str) == 0) { 265 if (FilePath::CompareIgnoreCase(path, pdf_path_str) == 0) {
248 if (!enabled && force_enable_internal_pdf) { 266 if (!enabled && force_enable_internal_pdf) {
249 enabled = true; 267 enabled = true;
250 plugin->SetBoolean("enabled", true); 268 plugin->SetBoolean("enabled", true);
251 } 269 }
252 270
253 internal_pdf_enabled = enabled; 271 internal_pdf_enabled = enabled;
272 } else if (FilePath::CompareIgnoreCase(path, nacl_path_str) == 0) {
273 if (!enabled && force_enable_nacl) {
274 enabled = true;
275 plugin->SetBoolean("enabled", true);
276 }
254 } 277 }
255 278
256 if (!enabled) 279 if (!enabled)
257 webkit::npapi::PluginList::Singleton()->DisablePlugin(plugin_path); 280 webkit::npapi::PluginList::Singleton()->DisablePlugin(plugin_path);
258 } else if (!enabled && plugin->GetString("name", &group_name)) { 281 } else if (!enabled && plugin->GetString("name", &group_name)) {
259 // Don't disable this group if it's for the pdf plugin and we just 282 // Don't disable this group if it's for the pdf or nacl plugins and
260 // forced it on. 283 // we just forced it on.
261 if (force_enable_internal_pdf && pdf_group_name == group_name) 284 if (force_enable_internal_pdf && pdf_group_name == group_name)
262 continue; 285 continue;
286 if (force_enable_nacl && (nacl_group_name == group_name ||
287 old_nacl_group_name == group_name))
288 continue;
263 289
264 // Otherwise this is a list of groups. 290 // Otherwise this is a list of groups.
265 EnablePluginGroup(false, group_name); 291 EnablePluginGroup(false, group_name);
266 } 292 }
267 } 293 }
268 } else { 294 } else {
269 // If the saved plugin list is empty, then the call to UpdatePreferences() 295 // If the saved plugin list is empty, then the call to UpdatePreferences()
270 // below failed in an earlier run, possibly because the user closed the 296 // below failed in an earlier run, possibly because the user closed the
271 // browser too quickly. Try to force enable the internal PDF plugin again. 297 // browser too quickly. Try to force enable the internal PDF and nacl
298 // plugins again.
272 force_enable_internal_pdf = true; 299 force_enable_internal_pdf = true;
300 force_enable_nacl = true;
273 } 301 }
274 } // Scoped update of prefs::kPluginsPluginsList. 302 } // Scoped update of prefs::kPluginsPluginsList.
275 303
276 // Build the set of policy enabled/disabled plugin patterns once and cache it. 304 // Build the set of policy enabled/disabled plugin patterns once and cache it.
277 // Don't do this in the constructor, there's no profile available there. 305 // Don't do this in the constructor, there's no profile available there.
278 const ListValue* disabled_plugins = 306 const ListValue* disabled_plugins =
279 prefs_->GetList(prefs::kPluginsDisabledPlugins); 307 prefs_->GetList(prefs::kPluginsDisabledPlugins);
280 const ListValue* disabled_exception_plugins = 308 const ListValue* disabled_exception_plugins =
281 prefs_->GetList(prefs::kPluginsDisabledPluginsExceptions); 309 prefs_->GetList(prefs::kPluginsDisabledPluginsExceptions);
282 const ListValue* enabled_plugins = 310 const ListValue* enabled_plugins =
283 prefs_->GetList(prefs::kPluginsEnabledPlugins); 311 prefs_->GetList(prefs::kPluginsEnabledPlugins);
284 UpdatePluginsStateFromPolicy(disabled_plugins, 312 UpdatePluginsStateFromPolicy(disabled_plugins,
285 disabled_exception_plugins, 313 disabled_exception_plugins,
286 enabled_plugins); 314 enabled_plugins);
287 315
288 registrar_.RemoveAll(); 316 registrar_.RemoveAll();
289 registrar_.Init(prefs_); 317 registrar_.Init(prefs_);
290 registrar_.Add(prefs::kPluginsDisabledPlugins, this); 318 registrar_.Add(prefs::kPluginsDisabledPlugins, this);
291 registrar_.Add(prefs::kPluginsDisabledPluginsExceptions, this); 319 registrar_.Add(prefs::kPluginsDisabledPluginsExceptions, this);
292 registrar_.Add(prefs::kPluginsEnabledPlugins, this); 320 registrar_.Add(prefs::kPluginsEnabledPlugins, this);
293 321
294 if (force_enable_internal_pdf || internal_pdf_enabled) { 322 if (force_enable_internal_pdf || internal_pdf_enabled) {
295 // See http://crbug.com/50105 for background. 323 // See http://crbug.com/50105 for background.
296 EnablePluginGroup(false, ASCIIToUTF16( 324 EnablePluginGroup(false, ASCIIToUTF16(
297 webkit::npapi::PluginGroup::kAdobeReaderGroupName)); 325 webkit::npapi::PluginGroup::kAdobeReaderGroupName));
298 } 326 }
299 327
300 if (force_enable_internal_pdf) { 328 if (force_enable_internal_pdf || force_enable_nacl) {
301 // We want to save this, but doing so requires loading the list of plugins, 329 // We want to save this, but doing so requires loading the list of plugins,
302 // so do it after a minute as to not impact startup performance. Note that 330 // so do it after a minute as to not impact startup performance. Note that
303 // plugins are loaded after 30s by the metrics service. 331 // plugins are loaded after 30s by the metrics service.
304 UpdatePreferences(kPluginUpdateDelayMs); 332 UpdatePreferences(kPluginUpdateDelayMs);
305 } 333 }
306 } 334 }
307 335
308 void PluginPrefs::ShutdownOnUIThread() { 336 void PluginPrefs::ShutdownOnUIThread() {
309 prefs_ = NULL; 337 prefs_ = NULL;
310 registrar_.RemoveAll(); 338 registrar_.RemoveAll();
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 prefs->RegisterFilePathPref(prefs::kPluginsLastInternalDirectory, 452 prefs->RegisterFilePathPref(prefs::kPluginsLastInternalDirectory,
425 internal_dir, 453 internal_dir,
426 PrefService::UNSYNCABLE_PREF); 454 PrefService::UNSYNCABLE_PREF);
427 prefs->RegisterListPref(prefs::kPluginsDisabledPlugins, 455 prefs->RegisterListPref(prefs::kPluginsDisabledPlugins,
428 PrefService::UNSYNCABLE_PREF); 456 PrefService::UNSYNCABLE_PREF);
429 prefs->RegisterListPref(prefs::kPluginsDisabledPluginsExceptions, 457 prefs->RegisterListPref(prefs::kPluginsDisabledPluginsExceptions,
430 PrefService::UNSYNCABLE_PREF); 458 PrefService::UNSYNCABLE_PREF);
431 prefs->RegisterListPref(prefs::kPluginsEnabledPlugins, 459 prefs->RegisterListPref(prefs::kPluginsEnabledPlugins,
432 PrefService::UNSYNCABLE_PREF); 460 PrefService::UNSYNCABLE_PREF);
433 } 461 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/ui/webui/plugins_ui.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698