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

Unified Diff: chrome/browser/plugin_installer.cc

Issue 10263022: Move version metadata from PluginGroup into PluginInstaller. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review Created 8 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/plugin_installer.h ('k') | chrome/browser/plugin_installer_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/plugin_installer.cc
diff --git a/chrome/browser/plugin_installer.cc b/chrome/browser/plugin_installer.cc
index 75e9cf244e79af0b93a05f67791599c2fa59d47d..8ba5853ff2b59f321d56648a5205e453f2fdad53 100644
--- a/chrome/browser/plugin_installer.cc
+++ b/chrome/browser/plugin_installer.cc
@@ -25,6 +25,7 @@
#include "content/public/browser/resource_dispatcher_host.h"
#include "content/public/browser/web_contents.h"
#include "net/url_request/url_request.h"
+#include "webkit/plugins/npapi/plugin_group.h"
using content::BrowserThread;
using content::DownloadItem;
@@ -59,34 +60,83 @@ void BeginDownload(
}
}
-}
+} // namespace
PluginInstaller::PluginInstaller(const std::string& identifier,
- const GURL& plugin_url,
- const GURL& help_url,
const string16& name,
bool url_for_display,
- bool requires_authorization)
- : state_(kStateIdle),
- identifier_(identifier),
- plugin_url_(plugin_url),
- help_url_(help_url),
+ const GURL& plugin_url,
+ const GURL& help_url)
+ : identifier_(identifier),
name_(name),
url_for_display_(url_for_display),
- requires_authorization_(requires_authorization) {
+ plugin_url_(plugin_url),
+ help_url_(help_url),
+ state_(INSTALLER_STATE_IDLE) {
}
PluginInstaller::~PluginInstaller() {
}
+void PluginInstaller::AddVersion(const Version& version,
+ SecurityStatus status) {
+ DCHECK(versions_.find(version) == versions_.end());
+ versions_[version] = status;
+}
+
+PluginInstaller::SecurityStatus PluginInstaller::GetSecurityStatus(
+ const webkit::WebPluginInfo& plugin) const {
+ // If there are no versions defined, the plug-in is alway considered
+ // up-to-date.
+ if (versions_.empty())
+ return SECURITY_STATUS_UP_TO_DATE;
+
+ scoped_ptr<Version> version(
+ webkit::npapi::PluginGroup::CreateVersionFromString(plugin.version));
+ if (!version.get())
+ version.reset(new Version("0"));
+
+ // |lower_bound| returns the latest version that is not newer than |version|.
+ std::map<Version, SecurityStatus, VersionComparator>::const_iterator it =
+ versions_.lower_bound(*version);
+ // If there is at least one version defined, everything older than the oldest
+ // defined version is considered out-of-date.
+ if (it == versions_.end())
+ return SECURITY_STATUS_OUT_OF_DATE;
+
+ return it->second;
+}
+
+bool PluginInstaller::VersionComparator::operator() (const Version& lhs,
+ const Version& rhs) const {
+ // Keep versions ordered by newest (biggest) first.
+ return lhs.CompareTo(rhs) > 0;
+}
+
+// static
+bool PluginInstaller::ParseSecurityStatus(
+ const std::string& status_str,
+ PluginInstaller::SecurityStatus* status) {
+ if (status_str == "up_to_date")
+ *status = SECURITY_STATUS_UP_TO_DATE;
+ else if (status_str == "out_of_date")
+ *status = SECURITY_STATUS_OUT_OF_DATE;
+ else if (status_str == "requires_authorization")
+ *status = SECURITY_STATUS_REQUIRES_AUTHORIZATION;
+ else
+ return false;
+
+ return true;
+}
+
void PluginInstaller::OnDownloadUpdated(DownloadItem* download) {
DownloadItem::DownloadState state = download->GetState();
switch (state) {
case DownloadItem::IN_PROGRESS:
return;
case DownloadItem::COMPLETE: {
- DCHECK_EQ(kStateDownloading, state_);
- state_ = kStateIdle;
+ DCHECK_EQ(INSTALLER_STATE_DOWNLOADING, state_);
+ state_ = INSTALLER_STATE_IDLE;
FOR_EACH_OBSERVER(PluginInstallerObserver, observers_,
DownloadFinished());
break;
@@ -96,8 +146,8 @@ void PluginInstaller::OnDownloadUpdated(DownloadItem* download) {
break;
}
case DownloadItem::REMOVING: {
- DCHECK_EQ(kStateDownloading, state_);
- state_ = kStateIdle;
+ DCHECK_EQ(INSTALLER_STATE_DOWNLOADING, state_);
+ state_ = INSTALLER_STATE_IDLE;
break;
}
case DownloadItem::INTERRUPTED: {
@@ -138,9 +188,9 @@ void PluginInstaller::RemoveWeakObserver(
}
void PluginInstaller::StartInstalling(TabContentsWrapper* wrapper) {
- DCHECK(state_ == kStateIdle);
+ DCHECK_EQ(INSTALLER_STATE_IDLE, state_);
DCHECK(!url_for_display_);
- state_ = kStateDownloading;
+ state_ = INSTALLER_STATE_DOWNLOADING;
FOR_EACH_OBSERVER(PluginInstallerObserver, observers_, DownloadStarted());
content::WebContents* web_contents = wrapper->web_contents();
DownloadService* download_service =
@@ -177,7 +227,7 @@ void PluginInstaller::DownloadStarted(
}
void PluginInstaller::OpenDownloadURL(content::WebContents* web_contents) {
- DCHECK(state_ == kStateIdle);
+ DCHECK_EQ(INSTALLER_STATE_IDLE, state_);
DCHECK(url_for_display_);
web_contents->OpenURL(content::OpenURLParams(
plugin_url_,
@@ -188,13 +238,13 @@ void PluginInstaller::OpenDownloadURL(content::WebContents* web_contents) {
}
void PluginInstaller::DownloadError(const std::string& msg) {
- DCHECK(state_ == kStateDownloading);
- state_ = kStateIdle;
+ DCHECK_EQ(INSTALLER_STATE_DOWNLOADING, state_);
+ state_ = INSTALLER_STATE_IDLE;
FOR_EACH_OBSERVER(PluginInstallerObserver, observers_, DownloadError(msg));
}
void PluginInstaller::DownloadCancelled() {
- DCHECK(state_ == kStateDownloading);
- state_ = kStateIdle;
+ DCHECK_EQ(INSTALLER_STATE_DOWNLOADING, state_);
+ state_ = INSTALLER_STATE_IDLE;
FOR_EACH_OBSERVER(PluginInstallerObserver, observers_, DownloadCancelled());
}
« no previous file with comments | « chrome/browser/plugin_installer.h ('k') | chrome/browser/plugin_installer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698