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