| Index: chrome/browser/plugin_updater.h
|
| ===================================================================
|
| --- chrome/browser/plugin_updater.h (revision 0)
|
| +++ chrome/browser/plugin_updater.h (revision 0)
|
| @@ -0,0 +1,138 @@
|
| +// Copyright (c) 2006-2008 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_
|
| +
|
| +#include <vector>
|
| +#include "base/basictypes.h"
|
| +#include "base/linked_ptr.h"
|
| +#include "base/scoped_ptr.h"
|
| +#include "base/singleton.h"
|
| +#include "base/string16.h"
|
| +#include "base/values.h"
|
| +#include "googleurl/src/gurl.h"
|
| +#include "webkit/glue/plugins/webplugininfo.h"
|
| +
|
| +class Version;
|
| +class Profile;
|
| +
|
| +// Hard-coded definitions of plugin groups.
|
| +typedef struct {
|
| + const char* const name; // Name of this group.
|
| + const char* const name_matcher; // Substring matcher for the plugin name.
|
| + const char* const version_matcher_low; // Matchers for the plugin version.
|
| + const char* const version_matcher_high;
|
| + const char* const min_version; // Minimum secure version.
|
| + const char* const update_url; // Location of latest secure version.
|
| +} PluginGroupDefinition;
|
| +
|
| +
|
| +// A PluginGroup contains at least one WebPluginInfo.
|
| +// In addition, it knows if the plugin is critically vulnerable.
|
| +class PluginGroup {
|
| + public:
|
| + // Creates a PluginGroup from a PluginGroupDefinition.
|
| + static PluginGroup* FromPluginGroupDefinition(
|
| + const PluginGroupDefinition& definition);
|
| +
|
| + // Creates a PluginGroup from a WebPluginInfo -- when no hard-coded
|
| + // definition is found.
|
| + static PluginGroup* FromWebPluginInfo(const WebPluginInfo& wpi);
|
| +
|
| + // Creates a copy of this plugin group.
|
| + PluginGroup* Copy();
|
| +
|
| + // Returns true if the given plugin matches this group.
|
| + bool Match(const WebPluginInfo& plugin) const;
|
| +
|
| + // Adds the given plugin to this group. Provide the position of the
|
| + // plugin as given by PluginList so we can display its priority.
|
| + void AddPlugin(const WebPluginInfo& plugin, int position);
|
| +
|
| + // Enables/disables this group. This enables/disables all plugins in the
|
| + // group.
|
| + void Enable(bool enable);
|
| +
|
| + // Returns this group's name
|
| + const string16 GetGroupName() const;
|
| +
|
| + // Returns a DictionaryValue with data to display in the UI.
|
| + DictionaryValue* GetData() const;
|
| +
|
| + // Returns a DictionaryValue with data to save in the preferences.
|
| + DictionaryValue* GetSummary() const;
|
| +
|
| + // Returns true if the latest plugin in this group has known
|
| + // security problems.
|
| + bool IsVulnerable() const;
|
| +
|
| + private:
|
| + PluginGroup(const string16& group_name,
|
| + const string16& name_matcher,
|
| + const std::string& version_range_low,
|
| + const std::string& version_range_high,
|
| + const std::string& min_version,
|
| + const std::string& update_url);
|
| +
|
| + string16 group_name_;
|
| + string16 name_matcher_;
|
| + std::string version_range_low_str_;
|
| + std::string version_range_high_str_;
|
| + scoped_ptr<Version> version_range_low_;
|
| + scoped_ptr<Version> version_range_high_;
|
| + string16 description_;
|
| + std::string update_url_;
|
| + bool enabled_;
|
| + std::string min_version_str_;
|
| + scoped_ptr<Version> min_version_;
|
| + scoped_ptr<Version> max_version_;
|
| + std::vector<WebPluginInfo> web_plugin_infos_;
|
| + std::vector<int> web_plugin_positions_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(PluginGroup);
|
| +};
|
| +
|
| +class PluginUpdater {
|
| + public:
|
| + // Returns the PluginUpdater singleton.
|
| + static PluginUpdater* GetInstance();
|
| +
|
| + static const PluginGroupDefinition* GetPluginGroupDefinitions();
|
| + static const size_t GetPluginGroupDefinitionsSize();
|
| +
|
| + // Get a list of all the Plugin groups.
|
| + ListValue* GetPluginGroupsData();
|
| +
|
| + // Get a list of all the Plugin groups.
|
| + ListValue* GetPluginGroupsSummary();
|
| +
|
| + // 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);
|
| +
|
| + // Write the enable/disable status to the user's preference file.
|
| + void UpdatePreferences(Profile* profile);
|
| +
|
| + private:
|
| + friend struct DefaultSingletonTraits<PluginUpdater>;
|
| +
|
| + PluginUpdater();
|
| + ~PluginUpdater();
|
| +
|
| + void GetPluginGroups(std::vector<linked_ptr<PluginGroup> >* plugin_groups);
|
| +
|
| + DictionaryValue* CreatePluginFileSummary(const WebPluginInfo& plugin);
|
| +
|
| + std::vector<linked_ptr<PluginGroup> > plugin_group_definitions_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(PluginUpdater);
|
| +};
|
| +
|
| +#endif // CHROME_BROWSER_PLUGIN_UPDATER_H_
|
|
|
| Property changes on: chrome/browser/plugin_updater.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|