Home | History | Annotate | Download | only in browser
      1 // Copyright 2013 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 "extensions/browser/pending_extension_info.h"
      6 
      7 #include "base/logging.h"
      8 
      9 namespace extensions {
     10 
     11 PendingExtensionInfo::PendingExtensionInfo(
     12     const std::string& id,
     13     const GURL& update_url,
     14     const Version& version,
     15     ShouldAllowInstallPredicate should_allow_install,
     16     bool is_from_sync,
     17     bool install_silently,
     18     Manifest::Location install_source,
     19     int creation_flags,
     20     bool mark_acknowledged)
     21     : id_(id),
     22       update_url_(update_url),
     23       version_(version),
     24       should_allow_install_(should_allow_install),
     25       is_from_sync_(is_from_sync),
     26       install_silently_(install_silently),
     27       install_source_(install_source),
     28       creation_flags_(creation_flags),
     29       mark_acknowledged_(mark_acknowledged) {}
     30 
     31 PendingExtensionInfo::PendingExtensionInfo()
     32     : update_url_(),
     33       should_allow_install_(NULL),
     34       is_from_sync_(true),
     35       install_silently_(false),
     36       install_source_(Manifest::INVALID_LOCATION) {}
     37 
     38 bool PendingExtensionInfo::operator==(const PendingExtensionInfo& rhs) const {
     39   return id_ == rhs.id_;
     40 }
     41 
     42 int PendingExtensionInfo::CompareTo(const PendingExtensionInfo& other) const {
     43   DCHECK_EQ(id_, other.id_);
     44   if (version_.IsValid() && other.version_.IsValid()) {
     45     int comparison = version_.CompareTo(other.version_);
     46 
     47     // If the versions differ then return the version comparison result.
     48     if (comparison != 0)
     49       return comparison;
     50   }
     51 
     52   // The versions aren't specified, or they are the same version. Check
     53   // the install source.
     54   if (install_source_ == other.install_source_) {
     55     // Same install source, so |this| has the same precedence as |other|.
     56     return 0;
     57   }
     58 
     59   // Different install sources; |this| has higher precedence if
     60   // |install_source_| is the higher priority source.
     61   Manifest::Location higher_priority_source =
     62       Manifest::GetHigherPriorityLocation(
     63           install_source_, other.install_source_);
     64 
     65   return higher_priority_source == install_source_ ? 1 : -1;
     66 }
     67 
     68 }  // namespace extensions
     69