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