summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/pending_extension_info.h
diff options
context:
space:
mode:
authorjamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-14 21:19:28 +0000
committerjamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-03-14 21:19:28 +0000
commitf3d3b3843becc02b010ebbcf4087850c215f3ebc (patch)
tree5ea8398d29e2e80bcb5990abe9048104f025e6fe /chrome/browser/extensions/pending_extension_info.h
parent05f1464c3ce00020d596f7da07254c4f83bef3a2 (diff)
downloadchromium_src-f3d3b3843becc02b010ebbcf4087850c215f3ebc.zip
chromium_src-f3d3b3843becc02b010ebbcf4087850c215f3ebc.tar.gz
chromium_src-f3d3b3843becc02b010ebbcf4087850c215f3ebc.tar.bz2
Remove the last c/b/e/extension_service.h includes from src/extensions
This breaks another unwanted dependency from src/extensions back to src/chrome. * Move PendingExtensionManager and PendingExtensionInfo back into chrome, as they are tied to the concepts of extension install/update and we have decided to keep that functionality in chrome for now. * Eliminate unused include in extension_function.cc No functional changes. BUG=none TEST=compiles TBR=zea@chromium.org for header file move touching chrome/browser/sync/test/integration/sync_extension_helper.cc Review URL: https://codereview.chromium.org/195763017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@257203 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/pending_extension_info.h')
-rw-r--r--chrome/browser/extensions/pending_extension_info.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/chrome/browser/extensions/pending_extension_info.h b/chrome/browser/extensions/pending_extension_info.h
new file mode 100644
index 0000000..fd803bd
--- /dev/null
+++ b/chrome/browser/extensions/pending_extension_info.h
@@ -0,0 +1,95 @@
+// Copyright 2014 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_EXTENSIONS_PENDING_EXTENSION_INFO_H_
+#define CHROME_BROWSER_EXTENSIONS_PENDING_EXTENSION_INFO_H_
+
+#include <string>
+
+#include "base/gtest_prod_util.h"
+#include "base/version.h"
+#include "extensions/common/manifest.h"
+#include "url/gurl.h"
+
+FORWARD_DECLARE_TEST(ExtensionServiceTest, AddPendingExtensionFromSync);
+
+namespace extensions {
+class Extension;
+
+// A pending extension is an extension that hasn't been installed yet
+// and is intended to be installed in the next auto-update cycle. The
+// update URL of a pending extension may be blank, in which case a
+// default one is assumed.
+// TODO(skerner): Make this class an implementation detail of
+// PendingExtensionManager, and remove all other users.
+class PendingExtensionInfo {
+ public:
+ typedef bool (*ShouldAllowInstallPredicate)(const Extension*);
+
+ PendingExtensionInfo(
+ const std::string& id,
+ 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);
+
+ // Required for STL container membership. Should not be used directly.
+ PendingExtensionInfo();
+
+ // Consider two PendingExtensionInfos equal if their ids are equal.
+ bool operator==(const PendingExtensionInfo& rhs) const;
+
+ const std::string& id() const { return id_; }
+ const GURL& update_url() const { return update_url_; }
+ const Version& version() const { return version_; }
+
+ // ShouldAllowInstall() returns the result of running constructor argument
+ // |should_allow_install| on an extension. After an extension is unpacked,
+ // this function is run. If it returns true, the extension is installed.
+ // If not, the extension is discarded. This allows creators of
+ // PendingExtensionInfo objects to ensure that extensions meet some criteria
+ // that can only be tested once the extension is unpacked.
+ bool ShouldAllowInstall(const Extension* extension) const {
+ return should_allow_install_(extension);
+ }
+ bool is_from_sync() const { return is_from_sync_; }
+ bool install_silently() const { return install_silently_; }
+ Manifest::Location install_source() const { return install_source_; }
+ int creation_flags() const { return creation_flags_; }
+ bool mark_acknowledged() const { return mark_acknowledged_; }
+
+ // Returns -1, 0 or 1 if |this| has lower, equal or higher precedence than
+ // |other|, respectively. "Equal" precedence means that the version and the
+ // install source match. "Higher" precedence means that the version is newer,
+ // or the version matches but the install source has higher priority.
+ // It is only valid to invoke this when the ids match.
+ int CompareTo(const PendingExtensionInfo& other) const;
+
+ private:
+ std::string id_;
+
+ GURL update_url_;
+ Version version_;
+
+ // When the extension is about to be installed, this function is
+ // called. If this function returns true, the install proceeds. If
+ // this function returns false, the install is aborted.
+ ShouldAllowInstallPredicate should_allow_install_;
+
+ bool is_from_sync_; // This update check was initiated from sync.
+ bool install_silently_;
+ Manifest::Location install_source_;
+ int creation_flags_;
+ bool mark_acknowledged_;
+
+ FRIEND_TEST_ALL_PREFIXES(::ExtensionServiceTest, AddPendingExtensionFromSync);
+};
+
+} // namespace extensions
+
+#endif // CHROME_BROWSER_EXTENSIONS_PENDING_EXTENSION_INFO_H_