// Copyright (c) 2010 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. #ifndef CHROME_BROWSER_PLUGIN_UPDATER_H_ #define CHROME_BROWSER_PLUGIN_UPDATER_H_ #pragma once #include #include "base/basictypes.h" #include "base/file_path.h" #include "base/linked_ptr.h" #include "base/singleton.h" #include "chrome/common/notification_observer.h" class DictionaryValue; class ListValue; class NotificationDetails; class NotificationSource; class PluginGroup; class Profile; struct WebPluginInfo; class PluginUpdater : public NotificationObserver { public: // Get a list of all the Plugin groups. ListValue* GetPluginGroupsData(); // Enable or disable a plugin group. void EnablePluginGroup(bool enable, const string16& group_name); // Enable or disable a specific plugin file. void EnablePluginFile(bool enable, const FilePath::StringType& file_path); // Disable all plugin groups as defined by the user's preference file. void DisablePluginGroupsFromPrefs(Profile* profile); // Disable all plugins groups that are known to be outdated, according to // the information hardcoded in PluginGroup, to make sure that they can't // be loaded on a web page and instead show a UI to update to the latest // version. void DisableOutdatedPluginGroups(); // Write the enable/disable status to the user's preference file. void UpdatePreferences(Profile* profile); // NotificationObserver method overrides void Observe(NotificationType type, const NotificationSource& source, const NotificationDetails& details); static PluginUpdater* GetPluginUpdater(); private: PluginUpdater(); virtual ~PluginUpdater() {} // Note: if you change this to false from true, you must update // kPluginsEnabledInternalPDF to be a new name (i.e. add 2, 3, 4...) at end. bool enable_internal_pdf_; DictionaryValue* CreatePluginFileSummary(const WebPluginInfo& plugin); // Convert to a List of Groups void GetPluginGroups(std::vector >* plugin_groups); // Force plugins to be disabled due to policy. |plugins| contains // the list of StringValues of the names of the policy-disabled plugins. void DisablePluginsFromPolicy(const ListValue* plugin_names); // Needed to allow singleton instantiation using private constructor. friend struct DefaultSingletonTraits; DISALLOW_COPY_AND_ASSIGN(PluginUpdater); }; #endif // CHROME_BROWSER_PLUGIN_UPDATER_H_