OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 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/browser/plugin_status_pref_setter.h" | |
6 | |
7 #include "base/bind.h" | |
8 #include "chrome/browser/pepper_flash_settings_manager.h" | |
9 #include "chrome/browser/plugin_data_remover_helper.h" | |
10 #include "chrome/browser/plugin_prefs.h" | |
11 #include "chrome/browser/prefs/pref_service.h" | |
12 #include "chrome/browser/profiles/profile.h" | |
13 #include "chrome/common/chrome_notification_types.h" | |
14 #include "chrome/common/pref_names.h" | |
15 #include "content/public/browser/browser_thread.h" | |
16 #include "content/public/browser/notification_source.h" | |
17 #include "content/public/browser/plugin_service.h" | |
18 #include "webkit/plugins/webplugininfo.h" | |
19 | |
20 using content::BrowserThread; | |
21 using content::PluginService; | |
22 | |
23 PluginStatusPrefSetter::PluginStatusPrefSetter() | |
24 : profile_(NULL), | |
25 ALLOW_THIS_IN_INITIALIZER_LIST(factory_(this)) {} | |
26 | |
27 PluginStatusPrefSetter::~PluginStatusPrefSetter() { | |
28 } | |
29 | |
30 void PluginStatusPrefSetter::Init(Profile* profile, | |
31 content::NotificationObserver* observer) { | |
32 clear_plugin_lso_data_enabled_.Init(prefs::kClearPluginLSODataEnabled, | |
33 profile->GetPrefs(), observer); | |
34 pepper_flash_settings_enabled_.Init(prefs::kPepperFlashSettingsEnabled, | |
35 profile->GetPrefs(), observer); | |
36 profile_ = profile; | |
37 registrar_.Add(this, chrome::NOTIFICATION_PLUGIN_ENABLE_STATUS_CHANGED, | |
38 content::Source<Profile>(profile)); | |
39 StartUpdate(); | |
40 } | |
41 | |
42 void PluginStatusPrefSetter::Observe( | |
43 int type, | |
44 const content::NotificationSource& source, | |
45 const content::NotificationDetails& details) { | |
46 if (type == chrome::NOTIFICATION_PLUGIN_ENABLE_STATUS_CHANGED) { | |
47 StartUpdate(); | |
48 } else { | |
49 NOTREACHED(); | |
50 } | |
51 } | |
52 | |
53 void PluginStatusPrefSetter::StartUpdate() { | |
54 PluginService::GetInstance()->GetPlugins( | |
55 base::Bind(&PluginStatusPrefSetter::GotPlugins, factory_.GetWeakPtr(), | |
56 PluginPrefs::GetForProfile(profile_))); | |
57 } | |
58 | |
59 void PluginStatusPrefSetter::GotPlugins( | |
60 scoped_refptr<PluginPrefs> plugin_prefs, | |
61 const std::vector<webkit::WebPluginInfo>& /* plugins */) { | |
62 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | |
63 // Set the values on the PrefService instead of through the PrefMembers to | |
64 // notify observers if they changed. | |
65 profile_->GetPrefs()->SetBoolean( | |
66 clear_plugin_lso_data_enabled_.GetPrefName().c_str(), | |
67 PluginDataRemoverHelper::IsSupported(plugin_prefs)); | |
68 profile_->GetPrefs()->SetBoolean( | |
69 pepper_flash_settings_enabled_.GetPrefName().c_str(), | |
70 PepperFlashSettingsManager::IsPepperFlashInUse(plugin_prefs, NULL)); | |
71 } | |
OLD | NEW |