diff options
author | jamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-14 21:19:28 +0000 |
---|---|---|
committer | jamescook@chromium.org <jamescook@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-14 21:19:28 +0000 |
commit | f3d3b3843becc02b010ebbcf4087850c215f3ebc (patch) | |
tree | 5ea8398d29e2e80bcb5990abe9048104f025e6fe /chrome/browser/extensions/pending_extension_info.h | |
parent | 05f1464c3ce00020d596f7da07254c4f83bef3a2 (diff) | |
download | chromium_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.h | 95 |
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_ |